CREATE DATABASE SCOPED CREDENTIAL(Transact-SQL)

적용 대상: 예SQL Server(지원되는 모든 버전) 예Azure SQL Database 예Azure SQL Managed Instance 예Azure Synapse Analytics 예병렬 데이터 웨어하우스

데이터베이스 자격 증명을 만듭니다. 데이터베이스 자격 증명은 서버 로그인 또는 데이터베이스 사용자에 매핑되지 않습니다. 자격 증명은 데이터베이스가 액세스가 필요한 작업을 수행할 때 언제든 외부 위치에 액세스하기 위해 데이터베이스에서 사용됩니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

credential_name 만들려는 데이터베이스 범위 자격 증명의 이름을 지정합니다. credential_name 은 번호(#) 기호로 시작할 수 없습니다. 시스템 자격 증명은 ##으로 시작합니다.

IDENTITY =’ identity_name 서버 외부에 연결할 때 사용할 계정의 이름을 지정합니다. Azure Blob Storage에서 공유 키를 사용하여 파일을 가져오려면 ID 이름이 SHARED ACCESS SIGNATURE여야 합니다. Azure Synapse Analytics로 데이터를 로드하기 위해 ID에 모든 유효한 값을 사용할 수 있습니다. 공유 액세스 서명에 대한 자세한 내용은 SAS(공유 액세스 서명) 사용을 참조하세요. Kerberos(Windows Active Directory 또는 MIT KDC)를 사용하는 경우에는 IDENTITY 인수에 도메인 이름을 사용하지 않습니다. 계정 이름만 사용해야 합니다.

중요

Kerberos 인증을 지원하는 PolyBase 외부 데이터 원본은 Hadoop뿐입니다. 다른 모든 외부 데이터 원본(SQL Server, Oracle, Teradata, MongoDB, 일반 ODBC)은 기본 인증만 지원합니다.

참고

Azure Blob Storage의 컨테이너가 익명 액세스를 사용하도록 설정된 경우에는 WITH IDENTITY가 필요하지 않습니다. Azure Blob Storage를 쿼리하는 예제는 Azure Blob Storage에 저장된 파일에서 테이블로 가져오기를 참조하세요.

SECRET =’ secret 나가는 인증에 필요한 암호를 지정합니다. SECRET은 Azure Blob 스토리지에서 파일을 가져오는 데 필요합니다. Azure Blob Storage에서 Azure Synapse Analytics 또는 병렬 데이터 웨어하우스로 로드하려면 Azure Storage 키가 암호여야 합니다.

경고

SAS 키 값은 '?'(물음표)로 시작될 수 있습니다. SAS 키를 사용할 때는 앞의 '?'를 제거해야 합니다. 그렇지 않으면 작업이 차단될 수 있습니다.

설명

데이터베이스 범위 자격 증명은 SQL Server 외부의 리소스에 연결하는 데 필요한 인증 정보가 포함된 레코드입니다. 대부분의 자격 증명에는 Windows 사용자 및 암호가 들어 있습니다.

데이터베이스 범위 자격 증명을 만들기 전에 자격 증명을 보호하려면 데이터베이스에 마스터 키가 있어야 합니다. 자세한 내용은 CREATE MASTER KEY(Transact-SQL)를 참조하세요.

IDENTITY가 Windows 사용자인 경우 암호는 해당 사용자의 암호일 수 있습니다. 암호는 서비스 마스터 키를 사용하여 암호화됩니다. 서비스 마스터 키가 다시 생성되면 암호가 새 서비스 마스터 키를 사용하여 다시 암호화됩니다.

데이터베이스 범위 자격 증명에 대한 내용은 sys.database_scoped_credentials 카탈로그 뷰를 참조하세요.

다음은 몇 가지 데이터베이스 범위 자격 증명 애플리케이션입니다.

  • SQL Server는 데이터베이스 범위 자격 증명을 사용하여 PolyBase로 비공개 Azure BLOB 스토리지 또는 Kerberos 보안 Hadoop 클러스터에 액세스합니다. 자세한 내용은 CREATE EXTERNAL DATA SOURCE(Transact-SQL)를 참조하세요.

  • Azure Synapse Analytics는 데이터베이스 범위 자격 증명을 사용하여 PolyBase로 비공개 Azure BLOB 스토리지에 액세스합니다. 자세한 내용은 CREATE EXTERNAL DATA SOURCE(Transact-SQL)를 참조하세요.

  • SQL Database는 전역 쿼리 기능에 데이터베이스 범위 자격 증명을 사용합니다. 이것은 다수의 분할된 데이터베이스에서 쿼리를 수행할 수 있는 기능입니다.

  • SQL Database는 데이터베이스 범위 자격 증명을 사용하여 확장 이벤트 파일을 Azure BLOB 스토리지에 씁니다.

  • SQL Database는 탄력적 풀에 데이터베이스 범위 자격 증명을 사용합니다. 자세한 내용은 탄력적 데이터베이스로 폭발적인 증가에 대처하기를 참조하세요.

  • BULK INSERTOPENROWSET은 데이터베이스 범위 자격 증명을 사용하여 Azure BLOB 스토리지의 데이터에 액세스합니다. 자세한 내용은 Azure Blob Storage의 데이터에 대량 액세스 예제를 참조하세요.

사용 권한

데이터베이스에 대한 CONTROL 권한이 필요합니다.

예제

A. 애플리케이션에 대한 데이터베이스 범위 자격 증명 만들기

다음 예에서는 AppCred라는 데이터베이스 범위 자격 증명을 만듭니다. 이 데이터베이스 범위 자격 증명에는 Windows 사용자 Mary5 및 암호가 들어 있습니다.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

B. 공유 액세스 서명을 위한 데이터베이스 범위 자격 증명 만들기

다음 예에서는 BULK INSERTOPENROWSET과 같은 대량 작업을 수행할 수 있는 외부 데이터 원본을 만드는 데 사용할 수 있는 데이터베이스 범위 자격 증명을 만듭니다. 공유 액세스 서명은 SQL Server, APS 또는 Azure Synapse Analytics에서 PolyBase에 사용할 수 없습니다.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C. Azure Data Lake Store에 대한 PolyBase 연결을 위한 데이터베이스 범위 자격 증명 만들기

다음 예제에서는 Azure Synapse Analytics의 PolyBase에서 사용되는 외부 데이터 원본을 만드는 데 사용할 수 있는 데이터베이스 범위 자격 증명을 만듭니다.

Azure Data Lake Store는 서비스 간 인증에 Azure Active Directory 애플리케이션을 사용합니다. 데이터베이스 범위 자격 증명을 만들려면 그 전에 AAD 애플리케이션을 만들고 client_id, OAuth_2.0_Token_EndPoint 및 Key를 문서화하십시오.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
    IDENTITY = '<client_id>@\<OAuth_2.0_Token_EndPoint>',
    SECRET = '<key>'
;

자세한 정보