자습서: SQL Server에 Microsoft Entra 인증 설정하기
적용 대상: SQL Server 2022(16.x)
이 문서에서는 Microsoft Entra ID로 인증을 설정하는 단계별 프로세스를 설명하고 다른 Microsoft Entra 인증 방법을 사용하는 방법을 보여 줍니다.
참고 항목
Microsoft Entra ID는 이전에 Azure Active Directory(Azure AD)로 알려졌습니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- Microsoft Entra 애플리케이션 만들기 및 등록
- Microsoft Entra 애플리케이션에 권한 부여
- 인증서 만들기 및 할당
- Azure Portal을 통해 SQL Server의 Microsoft Entra 인증 구성
- 로그인 및 사용자 만들기
- 지원되는 인증 방법으로 연결
필수 조건
SQL Server 2022(16.x) 인스턴스가 있는 물리적 또는 가상 Windows Server 온-프레미스입니다.
Azure VM의 SQL Server의 경우 Azure VM에서 SQL Server 2022에 대한 Microsoft Entra 인증을 검토 합니다.
Azure Arc에서 사용하도록 설정된 서버 및 인스턴스입니다. 자세한 내용은 AZURE Arc에 SQL Server 연결을 참조하세요.
Microsoft Entra ID에 대한 액세스는 인증 목적으로 사용할 수 있습니다. 자세한 내용은 SQL Server에 Microsoft Entra 인증를 참조하세요.
SSMS(SQL Server Management Studio) 버전 18.0 이 클라이언트 컴퓨터에 설치되어 있습니다. 또는 최신 Azure Data Studio를 다운로드하세요.
인증 필수 구성 요소
참고 항목
SQL Server에 대한 Microsoft Entra 관리자를 설정하는 동안 Azure Key Vault 인증서 및 Microsoft Entra 애플리케이션을 자동으로 만들 수 있도록 Azure에서 확장 기능이 구현되었습니다. 자세한 내용은 자습서: 자동화를 사용하여 SQL Server에서 Microsoft Entra 관리자 설정을 참조하세요.
SQL Server용 Microsoft Entra 애플리케이션 등록. SQL Server 인스턴스를 Microsoft Entra 애플리케이션으로 등록하면 인스턴스가 Microsoft Entra ID를 쿼리할 수 있으며 Microsoft Entra 애플리케이션이 SQL Server 인스턴스를 대신하여 인증할 수 있습니다. 또한 애플리케이션 등록에는 SQL Server에서 특정 쿼리에 사용하는 몇 가지 권한이 필요합니다.
SQL Server는 이 인증에 인증서를 사용하며, 이 인증서는 Azure Key Vault(AKV)에 저장됩니다. Azure Arc 에이전트는 인증서를 SQL Server 인스턴스 호스트에 다운로드합니다.
Warning
Microsoft Entra ID로 인증된 연결은 항상 암호화됩니다. SQL Server에서 자체 서명된 인증서를 사용하는 경우 연결 문자열에 trust server cert = true
를 추가해야 합니다. SQL Server 및 Windows 인증된 연결에는 암호화가 필요하지 않지만 강력하게 권장됩니다.
Microsoft Entra 애플리케이션 만들기 및 등록
- Azure Portal로 이동하고 Microsoft Entra ID>앱 등록>새 등록을 선택합니다.
- 이름 지정 - 이 문서의 예제에서는 SQLServerCTP1을 사용합니다.
- 지원되는 계정 유형을 선택하고, 이 조직 디렉터리에 있는 계정만을 사용합니다
- 리디렉션 URI를 설정하지 마세요
- 등록을 선택합니다.
아래 애플리케이션 등록을 참조하세요.
애플리케이션 권한 부여
새로 만든 애플리케이션을 선택하고, 왼쪽 메뉴에서 API 권한을 선택합니다.
권한 추가>Microsoft Graph>애플리케이션 권한을 선택합니다
- Directory.Read.All 확인란을 선택합니다
- 권한 추가를 선택합니다.
권한 추가>Microsoft Graph>위임된 권한을 선택합니다
- Application.Read.All 확인란을 선택합니다
- Directory.AccessAsUser.All 확인란을 선택합니다
- Group.Read.All 확인란을 선택합니다
- User.Read.All 확인란을 선택합니다
- 권한 추가를 선택합니다.
관리자 동의 권한 부여 선택합니다.
참고 항목
위의 권한에 대한 관리자 동의를 부여하려면 Microsoft Entra 계정에 글로벌 관리자 또는 권한 있는 역할 관리자 역할이 필요합니다.
인증서 만들기 및 할당
Azure Portal로 이동하여 키 자격 증명 모음을 선택한 다음 사용하려는 키 자격 증명 모음을 선택하거나 새 키 자격 증명 모음을 만듭니다. 인증서>생성/가져오기를 선택합니다
인증서를 만드는 방법에서 생성을 사용합니다.
인증서 이름 및 주체를 추가합니다.
권장되는 유효 기간은 최대 12개월입니다. 나머지 값은 기본값으로 둬도 됩니다.
만들기를 실행합니다.
참고 항목
만들어진 인증서가 사용 안 함으로 표시될 수 있습니다. 사이트를 새로 고치면 인증서를 사용할 수 있다고 표시됩니다.
새 인증서로 이동하고, 인증서의 최신 버전에 대한 행을 선택합니다. 인증서의 공개 키를 저장하려면 CER 형식으로 다운로드를 선택합니다.
참고 항목
이 작업은 SQL Server 호스트에서 수행할 필요가 없습니다. 대신 다음 단계를 위해 Azure Portal에 액세스하는 클라이언트에서 수행하면 됩니다.
Azure Portal에서 위에서 만든 앱 등록으로 이동하고 인증서 목록을 선택합니다
- 인증서 업로드를 선택합니다.
- 마지막 단계에서 다운로드한 공개 키(.cer 파일)를 선택합니다.
- 추가를 선택합니다.
Azure 포털에서 인증서가 저장된 Azure Key Vault 인스턴스로 이동하고 탐색 메뉴에서 액세스 정책을 선택합니다.
만들기를 실행합니다.
비밀 권한에서 가져오기와 나열하기을 선택합니다.
인증서 권한의 경우 가져오기 및 나열하기을 선택합니다.
다음을 선택합니다.
Principal 페이지에서 머신의 이름(SQL Server 호스트의 호스트 이름인 Azure Arc 인스턴스)을 검색합니다.
다음을 두 번 선택하거나 검토 + 만들기를 선택하여 애플리케이션(선택 사항) 페이지를 건너뜁니다.
Principal의 "객체 ID"가 인스턴스에 할당된 관리 ID의 Principal ID와 일치하는지 확인하십시오.
확인하려면 리소스 페이지로 이동하여 개요 페이지의 Essentials 상자 오른쪽 위에 있는 JSON 뷰를 선택합니다. ID 아래에서 principalId를 찾습니다.
만들기를 실행합니다.
권한이 적용되도록 하려면 만들기를 선택해야 합니다. 권한이 저장되었는지 확인하려면 브라우저 창을 새로 고치고 Azure Arc 인스턴스의 행이 여전히 있는지 확인합니다.
Azure Portal을 통해 SQL Server의 Microsoft Entra 인증 구성
참고 항목
Azure CLI, PowerShell 또는 ARM 템플릿을 사용하여 SQL Server에 대한 Microsoft Entra 관리자를 설정할 수 있습니다.
Azure Portal로 이동하여 SQL Server – Azure Arc를 선택하고 SQL Server 호스트의 인스턴스를 선택합니다.
SQL Server - Azure Arc 리소스의 상태를 확인하고, 속성 메뉴로 이동하여 연결되어 있는지 확인합니다. 자세한 내용은 SQL Server - Azure Arc 리소스 유효성 검사를 참조하세요.
리소스 메뉴에서 설정에서 Microsoft Entra ID 및 권한 보기를 선택합니다.
관리자 설정을 선택하여 Microsoft Entra ID 창을 열고 SQL Server의 관리자 로그인으로 설정할 계정을 선택합니다.
고객 관리 인증서를 선택하고, 인증서를 선택합니다.
인증서 변경을 선택하고, 이전에 새 창에서 만든 AKV 인스턴스 및 인증서를 선택합니다.
고객 관리 앱 등록을 선택합니다.
앱 등록 변경을 선택하고, 이전에 만든 앱 등록을 선택합니다.
저장을 선택합니다. 그러면 Arc 서버 에이전트에 요청이 전송되고, 이 에이전트는 해당 SQL Server 인스턴스에 대한 Microsoft Entra 인증을 구성합니다.
인증서를 다운로드하고 설정을 구성하는 데 몇 분이 소요됩니다. Azure Portal에서 모든 매개 변수를 설정하고 저장을 선택한 후
SQL Server's Azure Arc agent is currently processing a request. Values below may be incorrect. Please wait until the agent is done before continuing
메시지가 나타날 수 있습니다.Saved successfully
로 저장 프로세스가 확인될 때까지 기다렸다가 Microsoft Entra 로그인을 시도합니다.Azure Arc 서버 에이전트는 이전 작업이 완료되어야만 업데이트할 수 있습니다. 즉, 마지막 작업이 완료되기 전에 새 Microsoft Entra 구성을 저장하면 실패할 수 있습니다. 저장을 선택할 때 확장 호출이 실패했습니다 메시지가 표시되면 5분 동안 기다렸다가 다시 시도합니다.
참고 항목
Microsoft Entra 관리자 로그인에
sysadmin
역할이 부여된 후 Azure Portal에서 Microsoft Entra 관리자를 변경해도sysadmin
로 남아있는 이전 로그인은 제거되지 않습니다. 로그인을 제거하려면 수동으로 삭제해야 합니다.SQL Server 인스턴스에 대한 Microsoft Entra 관리자 변경은 SQL Server의 Azure Arc 에이전트로 프로세스가 완료되면 서버를 다시 시작하지 않고 수행됩니다. 새 관리자가
sys.server_principals
에서 표시하려면 SQL Server 인스턴스를 다시 시작해야 하며, 그때까지 이전 관리자가 표시됩니다. 현재 Microsoft Entra 관리자는 Azure Portal에서 확인할 수 있습니다.
로그인 및 사용자 만들기
SQL Server 호스트에서 Azure Arc 에이전트가 작업을 완료한 후 포털의 Microsoft Entra ID 메뉴에서 선택한 관리자 계정은 SQL Server 인스턴스에서 sysadmin
이 됩니다. SSMS 또는 Azure Data Studio와 같은 클라이언트를 사용하여 서버에 대한 sysadmin
권한이 있는 Microsoft Entra 관리자 계정으로 SQL Server에 로그인합니다.
참고 항목
Microsoft Entra 인증을 사용하여 수행되는 SQL Server에 대한 모든 연결에는 암호화된 연결이 필요합니다. DBA(데이터베이스 관리자)가 서버의 신뢰할 수 있는 SSL/TLS 인증서를 설정하지 않은 경우 신뢰할 수 없는 기관에서 인증서 체인을 발급했습니다.라는 메시지와 함께 로그인이 실패할 수 있습니다. 이 문제를 해결하려면 클라이언트가 신뢰할 수 있는 SSL/TLS 인증서를 사용하도록 SQL Server 인스턴스를 구성하거나 고급 연결 속성에서 서버 인증서 신뢰를 선택합니다. 자세한 내용은 데이터베이스 엔진에 대해 암호화 연결 사용을 참조하세요.
로그인 구문 만들기
Azure SQL Database와 Azure SQL Managed Instance에서 Microsoft Entra 로그인 및 사용자를 만드는 데 사용되는 동일한 구문을 이제 SQL Server에서 사용할 수 있습니다.
참고 항목
SQL Server에서 ALTER ANY LOGIN
또는 ALTER ANY USER
사용 권한이 있는 모든 계정은 각각 Microsoft Entra 로그인 또는 사용자를 만들 수 있습니다. 계정이 Microsoft Entra 로그인일 필요는 없습니다.
Microsoft Entra 계정에 대한 로그인을 만들려면 master
데이터베이스에서 다음 T-SQL 명령을 실행합니다.
CREATE LOGIN [principal_name] FROM EXTERNAL PROVIDER;
사용자의 경우 보안 주체 이름은 반드시 user@tenant.com
형식이어야 합니다. Microsoft Entra ID에서 사용자 계정 이름입니다. Microsoft Entra 그룹 또는 애플리케이션과 같은 다른 모든 계정 유형의 경우 보안 주체 이름은 Microsoft Entra 개체의 이름입니다.
몇 가지 예는 다음과 같습니다.
-- login creation for Microsoft Entra user
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra group
CREATE LOGIN [my_group_name] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra application
CREATE LOGIN [my_app_name] FROM EXTERNAL PROVIDER;
GO
master
데이터베이스에서 Microsoft Entra 로그인을 나열하려면 T-SQL 명령을 실행합니다.
SELECT * FROM sys.server_principals
WHERE type IN ('E', 'X');
sysadmin
역할에 Microsoft Entra 사용자 멤버 자격을 부여하려면(예: admin@contoso.com
) master
에서 다음 명령을 실행합니다.
CREATE LOGIN [admin@contoso.com] FROM EXTERNAL PROVIDER;
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [admin@contoso.com];
GO
sp_addsrvrolemember
저장 프로시저는 SQL Server sysadmin
서버 역할의 멤버로 실행되어야 합니다.
사용자 구문 만들기
Microsoft Entra ID에서 서버 보안 주체(로그인)와 연결된 데이터베이스 사용자 또는 포함된 데이터베이스 사용자로 데이터베이스 사용자를 만들 수 있습니다.
SQL Server 데이터베이스의 Microsoft Entra 로그인에서 Microsoft Entra 사용자를 만들려면 다음 구문을 사용하세요.
CREATE USER [principal_name] FROM LOGIN [principal_name];
principal_name
구문은 로그인의 경우에도 동일합니다.
다음 몇 가지 예를 참조하세요.
-- for Azure AD user
CREATE USER [user@contoso.com] FROM LOGIN [user@contoso.com];
GO
-- for Azure AD group
CREATE USER [my_group_name] FROM LOGIN [my_group_name];
GO
-- for Azure AD application
CREATE USER [my_app_name] FROM LOGIN [my_app_name];
GO
서버 로그인에 연결되지 않은 Microsoft Entra 포함 데이터베이스 사용자를 만들려면 다음 구문을 실행할 수 있습니다.
CREATE USER [principal name] FROM EXTERNAL PROVIDER;
그룹 또는 애플리케이션에서 Microsoft Entra 데이터베이스 사용자를 만들 때는 Microsoft Entra 그룹 이름 또는 Microsoft Entra 애플리케이션 이름을 <principal name>
로 사용하세요.
다음 몇 가지 예를 참조하세요.
-- for Azure AD contained user
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- for Azure AD contained group
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
--for Azure AD contained application
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
데이터베이스에서 만든 사용자를 나열하려면 다음 T-SQL 명령을 실행합니다.
SELECT * FROM sys.database_principals;
새 데이터베이스 사용자에게는 기본적으로 Connect 권한이 부여됩니다. 모든 다른 모든 SQL Server 권한은 부여자가 명시적으로 권한을 부여해야 합니다.
Microsoft Entra 게스트 계정
CREATE LOGIN
및 CREATE USER
구문은 게스트 사용자도 지원합니다. 예를 들어 testuser@outlook.com
가 contoso.com
테넌트에 초대된 경우, 다른 Microsoft Entra 사용자 또는 로그인을 만드는 것과 동일한 구문을 사용하여 SQL Server에 로그인으로 추가할 수 있습니다. 게스트 사용자 및 로그인을 만들 때 테넌트의 사용자 계정 이름이 아닌 게스트 계정의 원래 전자 메일을 사용합니다. 이 예제에서는 contoso.com
테넌트에 등록된 계정을 사용하더라도 outlook.com
이 제공됩니다.
기존 로그인에서 게스트 사용자 만들기
CREATE USER [testuser@outlook.com] FROM LOGIN [testuser@outlook.com];
포함된 사용자로 게스트 사용자 만들기
CREATE USER [testuser@outlook.com] FROM EXTERNAL PROVIDER;
지원되는 인증 방법으로 연결
SQL Server는 여러가지 Microsoft Entra 인증 방법을 지원합니다.
- 기본값
- 사용자 이름 및 암호
- 통합:
- 다단계 인증을 통한 유니버설
- 서비스 주체
- 관리 ID
- 액세스 토큰
이러한 방법 중 하나를 사용하여 SQL Server 인스턴스에 연결하세요. 자세한 내용은 SQL Server에 Microsoft Entra 인증를 참조하세요.
SSMS를 사용하는 인증 예제
참고 항목
Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만, 기존 환경의 중단을 방지하기 위해 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코딩된 요소에는 여전히 Azure AD가 남아 있습니다. 이 문서에서는 두 이름을 혼용할 수 있습니다.
다음은 Azure Active Directory - MFA를 통한 유니버설 인증 방법을 사용한 SSMS(SQL Server Management Studio) 연결 페이지의 스냅샷입니다.
인증 프로세스 중에 사용자가 만들어진 데이터베이스는 SSMS에 명시적으로 표시되어야 합니다. 옵션 > 연결 속성 > 데이터베이스에 연결: database_name
을 확장합니다.
자세한 내용은 Microsoft Entra 다단계 인증 사용을 참조하세요.
Azure SQL의 Microsoft Entra 인증을 지원하는 SQL Server 도구도 SQL Server 2022 (16.x)에서 지원됩니다.
Microsoft Entra ID 매개 변수가 저장되는 위치
Warning
Microsoft Entra ID 매개 변수는 Azure Arc 에이전트에 의해 구성되며 수동으로 다시 구성해서는 안 됩니다.
Linux에서 Microsoft Entra ID 매개 변수는 mssql-conf
에 저장됩니다. Linux의 구성 옵션에 대한 자세한 내용은 mssql-conf 도구를 사용하여 SQL Server on Linux 구성을 참조하세요.
알려진 문제
- 인증서 업데이트가 전파되지 않음:
Microsoft Entra 인증이 SQL Server에 대해 구성된 후에는 SQL Server - Azure Arc 리소스의 Microsoft Entra ID 및 Purview 창에서 인증서를 업데이트해도 완전히 전파되지 않을 수 있습니다. 이로 인해 저장이 성공했음에도 이전 값이 계속 표시됩니다. 인증서를 갱신하려면 다음을 수행합니다.
- 관리자 제거를 선택합니다.
- 저장을 선택합니다.
- 관리자 설정을 선택하고 새 인증서로 Microsoft Entra 인증을 다시 구성합니다.
- 저장을 선택합니다.