Azure SQL을 사용하는 Microsoft Entra 서비스 주체

적용 대상:Azure SQL DatabaseAzure SQL Managed Instance

Azure SQL 리소스는 Microsoft Entra ID(이전의 Azure Active Directory)에서 서비스 주체 및 관리 ID를 사용하는 애플리케이션에 대한 프로그래밍 방식 액세스를 지원합니다.

서비스 주체(Microsoft Entra 애플리케이션) 지원

이 문서는 Microsoft Entra ID에 등록된 애플리케이션에 적용됩니다. 애플리케이션 자격 증명을 통한 Azure SQL 액세스는 업무 분리의 보안 원칙을 지원하여 조직이 데이터베이스에 연결하는 각 애플리케이션에 대해 정확한 액세스를 구성할 수 있도록 합니다. 특별한 형태의 서비스 주체인 관리 ID는 암호를 사용하지 않고, 개발자 관리 자격 증명을 필요로 하지 않으므로 특히 권장됩니다.

Microsoft Entra ID를 사용하면 OAuth 2.0 OBO(On-Behalf-Of Flow)와 같은 고급 인증 시나리오를 추가로 사용할 수 있습니다. OBO를 사용하면 애플리케이션 자체에 위임된 권한 없이 데이터베이스 액세스 권한이 부여되면 안 되는 시나리오에 대해 애플리케이션에서 로그인한 사용자 자격 증명을 요청할 수 있습니다.

Microsoft Entra 애플리케이션에 대한 자세한 내용은 Azure Microsoft Entra ID의 애플리케이션 및 서비스 주체 개체Azure PowerShell을 사용하여 Azure 서비스 주체 만들기를 참조하세요.

서비스 주체를 사용하여 Microsoft Entra 사용자 생성하기

이 기능은 인간 상호 작용 없이 Microsoft Entra 주체를 만들고 SQL Database에서 이러한 주체를 유지 관리하는 Microsoft Entra 애플리케이션 자동화 프로세스에 유용합니다. 서비스 주체는 그룹의 일부 또는 독립 실행형 ID로 SQL 논리 서버 또는 관리되는 인스턴스에 대한 Microsoft Entra 관리자일 수 있습니다. 이 애플리케이션을 사용하면 SQL Database 또는 SQL Managed Instance에서 Microsoft Entra 객체 만들기를 자동화하여 데이터베이스 사용자 만들기를 완전히 자동화할 수 있습니다.

서비스 주체가 Microsoft Entra 사용자를 만들 수 있게 하는 방법

애플리케이션을 사용하여 Azure SQL에 액세스하는 경우, Microsoft Entra 사용자 및 로그인을 만들려면 기본적으로 서비스 주체 또는 관리 ID에 할당되지 않은 권한(Microsoft Graph에서 테넌트의 사용자, 그룹 및 애플리케이션을 읽는 기능)이 필요합니다. SQL 엔진에서 CREATE LOGIN 또는 CREATE USER에 명시된 ID의 유효성을 검사하거나 로그인 또는 사용자를 만드는 데 사용되는 ID의 개체 또는 애플리케이션 ID를 비롯한 중요한 정보를 끌어오려면 이러한 권한이 필요합니다.

Microsoft Entra 사용자가 이러한 명령을 실행하면 Azure SQL의 Microsoft 애플리케이션은 위임된 권한을 사용하여 로그인한 사용자를 가장하고 해당 사용 권한을 사용하여 Microsoft Graph를 쿼리합니다. 애플리케이션은 다른 애플리케이션을 가장할 수 없으므로 서비스 주체에서는 이 플로우를 사용할 수 없습니다. 대신 SQL 엔진은 SQL 관리형 인스턴스, Azure SQL 논리 서버 또는 Azure Synapse 작업 영역에 할당된 기본 관리 ID인 서버 ID를 사용합니다. 이는 서버 ID 및 Microsoft Graph 쿼리 권한을 필요로 하며, 그렇지 않을 경우 작업이 실패합니다.

다음 단계에서는 관리 ID를 서버에 할당하고 Microsoft Graph 권한을 할당하여 서비스 주체가 데이터베이스에 Microsoft Entra 사용자 및 로그인을 만들 수 있도록 하는 방법을 설명합니다.

  1. 서버 ID를 할당합니다. 서버 ID는 시스템 할당 또는 사용자 할당 관리 ID일 수 있습니다. 자세한 내용은 Azure SQL용 Microsoft Entra ID의 사용자 할당 관리 ID를 참조하세요.

    • 다음 PowerShell 명령은 시스템 할당 관리 ID로 프로비전된 새 논리 서버를 만듭니다.
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    자세한 내용은 New-AzSqlServer 명령 또는 SQL Managed Instance용 New-AzSqlInstance 명령을 참조하세요.

    • 기존 논리 서버의 경우 다음 명령을 실행하여 시스템 할당 관리 ID를 추가하세요.
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    자세한 내용은 Set-AzSqlServer 명령 또는 SQL Managed Instance용 Set-AzSqlInstance 명령을 참조하세요.

    • 서버 ID가 서버에 할당되었는지 확인하려면 Get-AzSqlServer 명령을 실행하거나 SQL Managed Instance의 경우 Get-AzSqlInstance 명령을 실행하세요.

    참고 항목

    REST API 및 CLI 명령을 사용하여 서버 ID를 할당할 수도 있습니다. 자세한 내용은 az sql server create, az sql server update서버 - REST API를 참조하세요.

  2. Microsoft Graph를 쿼리할 수 있는 서버 ID 권한을 부여하세요. Microsoft Entra Directory Reader 역할에 ID를 추가하거나, ID에 개별 Microsoft Graph 권한을 할당하거나, 디렉터리 읽기 권한자 역할이 있는 역할 할당 가능 그룹에 ID를 추가하는 등 여러 가지 방법으로 ID 권한을 부여할 수 있습니다.

    • 역할 할당 가능 그룹에 서버 ID 추가하기

      프로덕션 환경에서는 역할 할당 가능 그룹을 만들고 디렉터리 읽기 권한자 역할을 할당하는 것을 테넌트 관리리자가 담당하는 것이 좋습니다. 그렇게 되면 그룹 소유자는 해당 권한을 상속하여 그룹에 서버 ID를 추가할 수 있게 됩니다. 이렇게 하면 전역 관리자 또는 권한 있는 역할 관리자가 각 개별 서버 ID에 권한을 부여하지 않아도 되기 때문에 관리자가 이 시나리오에 대해 그룹 소유자에게 권한 할당을 위임할 수 있게 됩니다. 자세한 내용은 AAzure SQL용 Microsoft Entra ID의 디렉터리 읽기 권한자 역할을 참조하세요.

    • 서버 ID에 Microsoft Graph 권한 할당하는 법

      개별 Microsoft Graph 권한을 서버 ID에 할당하려면 Microsoft Entra 전역 관리자 또는 권한 있는 역할 관리자여야 합니다. 역할에 서버 ID가 필요하지 않은 권한이 포함 되어있으므로, 디렉터리 읽기 권한자 역할을 할당하는 것보다 이 방식을 사용할 것을 권장합니다. 개별 Microsoft Graph 읽기 권한만 할당하면 테넌트 내에서 서버 ID의 사용 권한이 제한되며 기본 최소 권한의 원칙을 유지할 수 있게 됩니다.. 자세한 지침은 Azure SQL용 Microsoft Entra ID의 사용자 할당 관리 ID를 참조하세요.

    • 디렉터리 읽기 권한자 역할에 서버 ID 추가하는 법

      디렉터리 읽기 권한자 역할에 서버 ID를 추가하려면 Microsoft Entra 전역 관리자 또는 권한 있는 역할 관리자 역할의 구성원이어야 합니다. 이 옵션은 프로덕션 환경에서 두 가지 이유로 권장되지 않습니다. 디렉터리 읽기 권한자 역할은 서버 ID에 필요한 것보다 더 많은 권한을 부여하며, 역할 할당 프로세스는 그룹을 사용하는 경우와 달리 각 서버 ID에 대한 관리자 승인을 여전이 필요로 합니다. Microsoft Entra 관리자 프로비전(SQL Managed Instance) 문서의 SQL Managed Instance 지침을 따라하세요.

문제 해결

문제를 해결할 때 다음 오류가 발생할 수 있습니다.

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

이 오류는 서버 ID가 만들어지지 않았거나 Microsoft Graph 권한이 할당되지 않았음을 나타냅니다. 다음 단계를 따라 논리 서버에 ID를 할당하고 논리 서버 ID에 디렉터리 읽기 권한자 권한을 할당하세요.

제한 사항

  • 서비스 주체는 테넌트의 경계를 밖의 것을 인증할 수 없습니다. 다른 테넌트에서 만든 Microsoft Entra 애플리케이션을 사용하여 SQL Database 또는 SQL Managed Instance에 액세스할 수 없습니다.

  • Azure SQL용 Microsoft Entra 관리자로 Microsoft Entra 애플리케이션을 설정하려면 Az.Sql 2.9.0 모듈 이상이 필요합니다. 최신 모듈로 업그레이드했는 지 확인하세요.

다음 단계