관리 ID는 Azure의 서비스 간 보안 통신에 필수적입니다. 비밀, 키 또는 연결 문자열을 관리할 필요가 없으므로 애플리케이션 구성 요소를 원활하게 통합할 수 있습니다. 이 블로그에서는 관리 ID를 사용하여 Azure SQL Database를 Azure App Service에서 실행되는 Python 백엔드에 연결하는 방법을 보여드리겠습니다.
Entra ID를 사용하여 Azure 서비스에 연결하려면 MSAL(Microsoft 인증 라이브러리)이 필요합니다. 이 예에서는 Python 라이브러리를 사용하지만 걱정하지 마세요. MSAL은 모든 주요 프로그래밍 언어에 존재합니다.
import msal
다음은 Azure SQL 데이터베이스에 연결하는 간단한 함수입니다.
def get_db_connection(): connection_string = f'DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server}.database.windows.net;PORT=1433;DATABASE={database};Authentication=ActiveDirectoryMsi' return pyodbc.connect(connection_string)
이러한 전제 조건이 충족되면 비밀이나 연결 문자열을 처리하지 않고도 코드 내에서 데이터베이스 연결을 설정하고 쿼리를 실행할 수 있습니다.
시연을 위해 이름, 직위, 급여 등 직원 데이터를 반환하는 간단한 Python Flask API를 만들었습니다. get_db_connection() 함수가 데이터베이스 연결을 열고 데이터를 쿼리하는 데 어떻게 사용되는지 확인하세요.
def get_employees(): conn = get_db_connection() cursor = conn.cursor() cursor.execute('SELECT ID, Name, Position, Salary FROM Employees') rows = cursor.fetchall() conn.close() # Convert data to a list of dictionaries. employees = [] for row in rows: employees.append({ 'ID': row.ID, 'Name': row.Name, 'Position': row.Position, 'Salary': row.Salary }) return jsonify(employees)
이 간단한 접근 방식을 사용하면 백엔드가 관리 ID를 사용하여 데이터베이스와 안전하게 상호 작용할 수 있습니다.
Docker 컨테이너에 애플리케이션을 배포하는 경우 SQL Server용 ODBC 드라이버를 설치하기 위한 Dockerfile은 다음과 같습니다.
FROM python:3.13-slim COPY . /app WORKDIR /app # Install Microsoft ODBC Driver 17 for SQL Server and dependencies RUN apt-get update \ && apt-get install -y gnupg curl apt-transport-https \ && curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc \ && echo "deb [arch=amd64] https://packages.microsoft.com/debian/11/prod bullseye main" | tee /etc/apt/sources.list.d/mssql-release.list \ && apt-get update \ && ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev \ && apt-get install -y build-essential \ && apt-get clean -y # Install Python dependencies RUN pip install -r requirements.txt EXPOSE 80 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:80", "app:app"]
이 설정을 통해 컨테이너가 Azure SQL에 안전하게 연결할 수 있습니다.
Azure SQL Server를 배포할 때 Azure AD 전용 인증을 구성하세요. 이는 관리 ID에 대한 요구 사항입니다. 다음은 SQL 서버 및 데이터베이스를 배포하는 데 사용되는 Bicep 템플릿입니다.
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = { name: serverName location: location tags: { workload: 'Sample Backend with SQL Database' topic: 'SQL Server' environment: 'Production' } properties: { minimalTlsVersion: '1.2' administrators: { administratorType: 'ActiveDirectory' login: sqlAdminName sid: sqlAdminObjectId tenantId: tenantId principalType: principalType azureADOnlyAuthentication: azureADOnlyAuthentication } } } resource sqlDB 'Microsoft.Sql/servers/databases@2023-08-01-preview' = { parent: sqlServer name: sqlDBName location: location sku: { name: sqlDBSkuName tier: sqlDBSkuTier capacity: capacity } }
이 템플릿을 사용하면 데이터베이스가 안전하게 구성되고 사용할 준비가 되었는지 확인할 수 있습니다.
App Service가 비밀 없이 데이터베이스에 액세스할 수 있도록 하려면 관리 ID에 필요한 데이터베이스 역할을 할당하세요. Bicep 또는 Terraform으로는 이 단계를 수행할 수 없습니다. 사용자 정의 스크립트를 생성하거나 Azure Portal을 통해 데이터베이스에 액세스하세요.
CREATE USER [<displayname-of-appservice>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<displayname-of-appservice>]; ALTER ROLE db_datawriter ADD MEMBER [<displayname-of-appservice>]; ALTER ROLE db_ddladmin ADD MEMBER [<displayname-of-appservice>]; GO
이러한 역할을 통해 관리 ID는 필요에 따라 읽기, 쓰기 및 스키마 변경 작업을 수행할 수 있습니다.
CI/CD 통합을 포함한 전체 코드를 보려면 GitHub의 공개 템플릿을 확인하세요. 이 저장소에는 이 블로그에 설명된 설정을 복제하는 데 필요한 모든 것이 포함되어 있습니다.
이 사용 사례에는 새로운 애플리케이션 기능을 테스트하기 위한 경량 백엔드 환경을 제공하기 위해 Azure SQL 데이터베이스와 함께 Azure App Service를 배포하는 것이 포함됩니다. 여기에는 앱 호스팅부터 데이터 지속성 관리까지 모든 것이 포함되어 있으며 CI/CD를 통합하여 쉽게 테스트하고 반복할 수 있습니다.
관리형 ID를 사용하면 서비스 간 통신이 단순화되고 보안 비밀이 필요하지 않아 보안이 강화됩니다. 이 접근 방식은 Azure에서 안전하고 확장 가능한 애플리케이션을 구축하는 모든 사람에게 적극 권장됩니다.
위 내용은 Azure에서 안전한 서비스 간 통신을 위해 관리 ID 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!