다음을 통해 공유


자습서: Azure Arc 없이 Windows에서 SQL Server에 대한 Microsoft Entra 인증 사용

적용 대상:SQL Server 2022(16.x)

이 문서에서는 온-프레미스 SQL Server 2022 이상 버전에 대해 Azure Arc를 설정하지 않고 Microsoft Entra ID로 인증하는 방법을 설명합니다. Microsoft Entra 인증은 SQL Server 데이터베이스에 대한 보안 액세스를 제공하는 클라우드 기반 ID 관리 서비스입니다. 이 자습서에서는 Azure Arc 없이 Windows에서 SQL Server에 대한 Microsoft Entra 인증을 설정하는 프로세스를 안내합니다.

비고

Microsoft Entra ID는 이전에 Azure Active Directory(Azure AD)로 알려졌습니다.

이 튜토리얼에서는 다음을 배우게 됩니다:

  • SQL Server에 대한 인증서를 추가합니다.
  • SQL Server에 연결하는 데 사용되는 adal.dll 설치합니다.
  • Microsoft Entra ID 애플리케이션을 만들고 등록합니다.
  • 애플리케이션 권한을 부여합니다.
  • 애플리케이션에 인증서를 업로드합니다.
  • 레지스트리 값을 추가하여 SQL Server에 대해 Microsoft Entra 인증을 사용하도록 설정합니다.

필수 조건

  • 온-프레미스 SQL Server 2022 이상 버전입니다.
  • 활성 Microsoft Entra ID 테넌트입니다.
  • 이 설정은 애플리케이션 등록을 사용하여 SQL Server를 Microsoft Entra ID와 연결합니다. 가이드에 따라 Microsoft Entra ID 에 애플리케이션을 등록 합니다.
  • SQL Server가 Azure, 특히 다음 Microsoft Entra ID 서비스 및 주소에 대한 네트워크 연결이 있는지 확인합니다.
    • login.windows.net.
    • login.microsoftonline.com.
    • graph.microsoft.com.
    • graph.windows.net.
    • database.windows.net.
    • IP 주소 및 URL의 전체 목록은 필요하지 않지만 Microsoft 365 URL 및 IP 주소 범위 문서에서 찾을 수 있습니다.

인증서 받기

  1. SQL Server에 사용할 인증서를 가져와서 컴퓨터 인증서 저장소로 가져옵니다. CA 서명된 인증서를 사용하는 것이 좋습니다.
    1. 인증서 저장소에 설치된 인증서와 일치하지 않는 인증서에 고유한 CN 이름을 사용합니다.

    2. 컴퓨터 인증서 저장소에 인증서를 설치합니다. 자세한 내용은 로컬 컴퓨터 저장소로 인증서 가져오기를 참조하세요.

    3. 인증서에 SQL Server 서비스 계정에 대한 권한을 추가 Read 합니다.

      인증서의 사용 권한 속성 스크린샷

설치 adal.dll

  1. SQL Server용 adal.dll 설치합니다. 이 라이브러리는 Microsoft Entra 인증을 사용하여 SQL Server에 연결하는 데 필요합니다. 최신 Microsoft OLE DB Driver for SQL Server 설치에서 adal.dll 가져올 수 있습니다.

  2. Microsoft OLE DB Driver for SQL Server를 설치한 후 adal.dll 폴더 C:\windows\system32에 있는지 확인합니다.

  3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDir이 있는 레지스트리 키 C:\windows\system32\adal.dll 도 있어야 합니다. 존재하지 않으면, 만드십시오.

    adal.dll레지스트리 키의 스크린샷.

    Windows 레지스트리에 대한 자세한 내용은 고급 사용자에 대한 Windows 레지스트리 정보를 참조하세요.

Microsoft Entra ID 애플리케이션 만들기 및 등록

  • Azure Portal로 이동하고 Microsoft Entra ID>앱 등록>새 등록을 선택합니다.
    1. 이름 지정 - 이 문서의 예제에서는 SQLServerCTP1을 사용합니다.
    2. 지원되는 계정 유형을 선택하고, 이 조직 디렉터리에 있는 계정만을 사용합니다
    3. 리디렉션 URI를 설정하지 마세요
    4. 등록을 선택합니다.

아래 애플리케이션 등록을 참조하세요.

Azure Portal에서 애플리케이션을 등록하는 스크린샷

애플리케이션 권한 부여

새로 만든 애플리케이션을 선택하고, 왼쪽 메뉴에서 API 권한을 선택합니다.

  1. 권한 추가>Microsoft Graph>애플리케이션 권한을 선택합니다

    1. Directory.Read.All 확인란을 선택합니다
    2. 권한 추가를 선택합니다.

또는,

  1. 권한 추가>Microsoft Graph>애플리케이션 권한을 선택합니다

    1. Application.Read.All 확인란을 선택합니다

    2. Group.Read.All 확인란을 선택합니다

    3. User.Read.All 확인란을 선택합니다

    4. 권한 추가를 선택합니다.

  2. 관리자 동의 권한 부여 선택합니다.

Azure Portal에서 동의를 부여하는 방법을 보여 주는 스크린샷

비고

위의 권한에 관리자 동의 부여하려면 Microsoft Entra 계정에 권한 있는 역할 관리자 역할 이상의 권한이 필요합니다.

인증서 업로드

인증서 받기 섹션에서 만든 인증서를 .cer 또는 .pem 형식으로 Azure 포털의 애플리케이션 등록에 업로드하세요.

Azure Portal에서 애플리케이션에 대한 인증서를 업로드하는 스크린샷

SQL Server에 대해 Microsoft Entra 인증을 사용하도록 설정하는 레지스트리 값 추가

레지스트리 키를 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication 다음 값으로 업데이트하여 SQL Server에 Microsoft Entra 인증을 사용하도록 설정합니다. SQL Server 2022에 대한 레지스트리 키 경로의 예는 다음과 같습니다 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication.

경고

레지스트리 편집기 또는 다른 방법을 사용하여 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면 운영 체제를 다시 설치해야 할 수 있습니다. Microsoft는 이러한 문제의 해결을 보증하지 않습니다. 레지스트리를 수정하는 데 따르는 위험은 사용자가 부담해야 합니다.

  • FederatedAuthentication 키가 없는 경우 다음 값을 모두 사용하여 만듭니다.
  • 나열된 처음 5개 항목은 이전 섹션에서 만든 애플리케이션의 값으로 업데이트해야 합니다. 나머지 항목은 기본값입니다.
  • 인증서 <sql-server-certificate-name> 가져오기 섹션에서 만들고 Azure에 업로드한 인증서 의 이름입니다.
  • <application-client-id>Microsoft Entra ID 애플리케이션 만들기 및 등록 섹션에서 만든 애플리케이션의 애플리케이션 (클라이언트) ID입니다. 클라이언트 ID를 찾는 방법에 대한 자세한 내용은 클라이언트 ID를 참조하세요.
  • <tenant-id>는 Azure 테넌트의 테넌트 ID입니다. Azure Portal의 Microsoft Entra ID개요에서 테넌트 ID > 를 찾을 수있습니다.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication]

"AADCertSubjectName"="<sql-server-certificate-name>"
"AADTenantSpecificSQLServicePrincipalCertSubjectName"="<sql-server-certificate-name>"
"ClientId"="<application-client-id>"
"AADTenantSpecificSQLServicePrincipalClientId"="<application-client-id>"
"PrimaryAADTenant"="<tenant-id>"
"AADChannelMaxBufferedMessageSize"="200000"
"AADGraphEndPoint"="graph.windows.net"
"AADGroupLookupMaxRetryAttempts"="10"
"AADGroupLookupMaxRetryDuration"="30000"
"AADGroupLookupRetryInitialBackoff"="100"
"AuthenticationEndpoint"="login.microsoftonline.com"
"CacheMaxSize"="300"
"FederationMetadataEndpoint"="login.windows.net"
"GraphAPIEndpoint"="graph.windows.net"
"IssuerURL"="https://sts.windows.net/"
"MsGraphEndPoint"="graph.microsoft.com"
"OnBehalfOfAuthority"="https://login.windows.net/"
"SendX5c"="false"
"ServicePrincipalName"="https://database.windows.net/"
"ServicePrincipalNameForArcadia"="https://sql.azuresynapse.net"
"ServicePrincipalNameForArcadiaDogfood"="https://sql.azuresynapse-dogfood.net"
"ServicePrincipalNameNoSlash"="https://database.windows.net"
"STSURL"="https://login.windows.net/"
"ClientCertBlackList"=""

레지스트리 키 백업, 편집 및 복원을 비롯한 Windows 레지스트리에 대한 자세한 내용은 고급 사용자에 대한 Windows 레지스트리 정보를 참조하세요.

인증 테스트

서버를 설정하고 레지스트리 값을 편집한 후에는 Microsoft Entra 인증이 작동해야 합니다. 다음 T-SQL 명령을 사용하여 로그인을 만들어 설치를 테스트합니다.

CREATE LOGIN [<admin@domain.com>] FROM EXTERNAL PROVIDER

일반적인 문제

다음 오류가 표시될 수 있습니다.

Keyset does not exist (AdalDll) with error code: 21

이 오류는 인증서에 대한 권한 문제로 인해 발생할 수 있습니다. SQL Server 서비스 계정에 Read 인증서에 대한 권한이 있는지 확인합니다. 문제가 지속되면 인증서 저장소의 다른 인증서와 일치하지 않는 고유한 CN 이름이 인증서에 있는지 확인합니다.