Share via


sqlcmd에서 Microsoft Entra ID를 사용하여 인증

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

sqlcmd는 설치한 버전에 따라 다양한 Microsoft Entra 인증 모델을 지원합니다.

참고 항목

Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만, 기존 환경의 중단을 방지하기 위해 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코딩된 요소에는 여전히 Azure AD가 남아 있습니다. 이 문서에서는 두 이름을 혼용할 수 있습니다.

sqlcmd 버전 간의 차이점에 대한 자세한 내용은 sqlcmd 유틸리티를 참조하세요.

sqlcmd(Go)는 azidentity 패키지에 따라 더 많은 Microsoft Entra 인증 모델을 지원합니다. 구현은 go-sqlcmd 드라이버의 Microsoft Entra 커넥터를 사용합니다.

Command line arguments

Microsoft Entra 인증을 사용하려면 두 명령줄 스위치 중 하나를 사용하면 됩니다.

-G는 (대부분) sqlcmd(ODBC)의 사용과 호환됩니다. 사용자 이름과 암호가 제공되면 Microsoft Entra 암호 인증을 사용하여 인증합니다. 사용자 이름이 제공되면 Microsoft Entra 대화형 인증을 사용하며 여기에는 웹 브라우저가 표시될 수도 있습니다. 사용자 이름 또는 암호가 제공되지 않으면 다양한 메커니즘을 통해 인증을 시도하는 DefaultAzureCredential을 사용합니다.

--authentication-method=를 사용하여 다음 인증 유형 중 하나를 지정할 수 있습니다.

ActiveDirectoryDefault

  • 이 모드에서 사용할 인증 유형에 대한 개요는 기본 Azure 자격 증명을 참조하세요.
  • 데이터베이스 자동화 스크립트가 로컬 개발 환경과 Azure의 프로덕션 배포 모두에서 실행되도록 의도된 경우 이 방법을 선택합니다. 개발 환경에서는 클라이언트 암호 또는 Azure CLI 로그인을 사용할 수 있습니다. 개발 환경에서 스크립트를 변경하지 않으면 프로덕션 배포에서 관리 ID 또는 클라이언트 암호를 사용할 수 있습니다.
  • 환경 변수 AZURE_TENANT_IDAZURE_CLIENT_ID 설정은 DefaultAzureCredential이 환경 구성 검사를 시작하고 인증하기 위해 다음 추가 환경 변수 중 하나를 찾는 데 필요합니다.
    • 환경 변수 AZURE_CLIENT_SECRET을 설정하면 DefaultAzureCredentialClientSecretCredential을 선택하도록 구성됩니다.
    • 환경 변수 AZURE_CLIENT_CERTIFICATE_PATH을 설정하면 AZURE_CLIENT_SECRET이 설정되지 않은 경우 DefaultAzureCredentialClientCertificateCredential을 선택하도록 구성됩니다.
  • 환경 변수 AZURE_USERNAME을 설정하면 AZURE_CLIENT_SECRETAZURE_CLIENT_CERTIFICATE_PATH가 설정되지 않은 경우 DefaultAzureCredentialUsernamePasswordCredential을 선택하도록 구성됩니다.

ActiveDirectoryIntegrated

이 메서드는 현재 구현되어 있지 않으며 ActiveDirectoryDefault로 대체됩니다.

ActiveDirectoryPassword

  • 이 메서드는 사용자 이름과 암호를 사용하여 인증합니다. MFA가 필요한 경우 작동하지 않습니다.

  • 일반적인 명령줄 스위치 또는 SQLCMD 환경 변수를 사용하여 사용자 이름과 암호를 제공합니다.

  • 사용자의 기본 테넌트를 사용하지 않는 경우 AZURE_TENANT_ID 환경 변수를 서버의 테넌트 ID로 설정합니다.

ActiveDirectoryInteractive

이 메서드는 사용자를 인증하는 웹 브라우저를 시작합니다.

ActiveDirectoryManagedIdentity

시스템 할당 또는 사용자 할당 관리 ID가 있는 Azure VM에서 sqlcmd(Go)를 실행할 때 이 메서드를 사용합니다. 사용자 할당 관리 ID를 사용하는 경우 사용자 이름을 관리 ID의 클라이언트 ID로 설정합니다. 시스템 할당 ID를 사용하는 경우 사용자 이름을 비워 둡니다.

이 예에서는 SAMI(서비스 할당 관리 ID)를 사용하여 연결하는 방법을 보여줍니다.

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity

이 예에서는 사용자 할당 관리 ID의 클라이언트 ID를 추가하여 UAMI(사용자 할당 관리 ID)와 연결하는 방법을 보여 줍니다.

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>

ActiveDirectoryServicePrincipal

이 메서드는 제공된 사용자 이름을 서비스 주체 ID로 인증하고 암호를 서비스 주체에 대한 클라이언트 암호로 인증합니다. 양식 <service principal id>@<tenant id>에 사용자 이름을 입력합니다. SQLCMDPASSWORD 변수를 클라이언트 암호로 설정합니다. 클라이언트 암호 대신 인증서를 사용하는 경우 AZURE_CLIENT_CERTIFICATE_PATH 환경 변수를 인증서 파일의 경로로 설정합니다.

Microsoft Entra 인증을 위한 환경 변수

일부 Microsoft Entra 인증 설정에는 명령줄 입력이 없으며, 일부 환경 변수는 sqlcmd(Go)에서 사용하는 azidentity 패키지에서 직접 사용합니다.

이러한 환경 변수는 Microsoft Entra 인증의 일부 측면을 구성하고 기본 동작을 무시하도록 설정할 수 있습니다. 앞에 나열된 변수 외에도 다음은 sqlcmd(Go)에만 해당되며 여러 메서드에 적용됩니다.

SQLCMDCLIENTID

이 환경 변수를 Azure SQL Database에 인증할 권한이 있는 Microsoft Entra에 등록된 애플리케이션의 식별자로 설정합니다. ActiveDirectoryInteractiveActiveDirectoryPassword 메서드에 적용됩니다.