다음을 통해 공유


CREATE DATABASE SCOPED CREDENTIAL(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

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

Transact-SQL 구문 표기 규칙

구문

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

인수

credential_name

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

IDENTITY = 'identity_name'

서버 외부에 연결할 때 사용할 계정의 이름을 지정합니다.

  • Azure Blob Storage 또는 Azure Data Lake Storage에서 공유 키를 사용하여 파일을 가져오려면 ID 이름이 SHARED ACCESS SIGNATURE여야 합니다. 공유 액세스 서명에 대한 자세한 내용은 SAS(공유 액세스 서명) 사용을 참조하세요. 공유 액세스 서명에만 사용합니다 IDENTITY = SHARED ACCESS SIGNATURE .
  • Azure Blob Storage에서 관리 ID를 사용하여 파일을 가져오려면 ID 이름이 MANAGED IDENTITY여야 합니다.
  • Kerberos(Windows Active Directory 또는 MIT KDC)를 사용하는 경우에는 IDENTITY 인수에 도메인 이름을 사용하지 않습니다. 계정 이름만 사용해야 합니다.
  • SQL Server 인스턴스에서 SECRET으로 사용되는 스토리지 액세스 키를 사용하여 데이터베이스 범위 자격 증명을 만드는 경우 IDENTITY는 무시됩니다.
  • Azure Blob Storage의 컨테이너가 익명 액세스를 사용하도록 설정된 경우에는 WITH IDENTITY가 필요하지 않습니다. Azure Blob Storage를 쿼리하는 예제는 Azure Blob Storage에 저장된 파일에서 테이블로 가져오기를 참조하세요.

Important

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

  • Azure Synapse Analytics에 데이터를 로드하려면 IDENTITY에 유효한 값을 사용할 수 있습니다.
  • Azure Synapse Analytics 서버리스 SQL 풀에서 데이터베이스 범위 자격 증명은 작업 영역 관리 ID, 서비스 주체 이름 또는 SAS(공유 액세스 서명) 토큰을 지정할 수 있습니다. Microsoft Entra 통과 인증에서 사용하도록 설정된 사용자 ID를 통한 액세스는 공개적으로 사용 가능한 스토리지에 대한 익명 액세스와 마찬가지로 데이터베이스 범위 자격 증명에서도 가능합니다. 자세한 내용은 지원되는 스토리지 권한 부여 유형을 참조 하세요.
  • Azure Synapse Analytics 전용 SQL 풀에서 데이터베이스 범위 자격 증명은 SAS(공유 액세스 서명) 토큰, 사용자 지정 애플리케이션 ID, 작업 영역 관리 ID 또는 스토리지 액세스 키를 지정할 수 있습니다.

SECRET = 'secret'

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

경고

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

설명

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

데이터베이스 범위 자격 증명 내에서 중요한 정보를 보호하려면 DMK(데이터베이스 마스터 키)가 필요합니다. DMK는 데이터베이스 범위 자격 증명의 비밀을 암호화하는 대칭 키입니다. 데이터베이스 범위 자격 증명을 만들려면 먼저 데이터베이스에 DMK가 있어야 합니다. DMK는 강력한 암호로 암호화해야 합니다. Azure SQL Database는 데이터베이스 범위 자격 증명을 만들거나 서버 감사를 만드는 과정의 일환으로 임의로 선택된 강력한 암호를 사용하여 DMK를 만듭니다. 사용자는 논리 master 데이터베이스에서 DMK를 만들 수 없습니다. 마스터 키 암호는 Microsoft에 알려지지 않았으며 만든 후에는 검색할 수 없습니다. 이러한 이유로 데이터베이스 범위 자격 증명을 만들기 전에 DMK를 만드는 것이 좋습니다. 자세한 내용은 CREATE MASTER KEY(Transact-SQL)를 참조하세요.

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

PolyBase 외부 테이블과 함께 사용할 SAS(공유 액세스 서명)에 권한을 부여하는 경우, 허용되는 리소스 종류로 컨테이너개체를 모두 선택합니다. 부여하지 않으면 외부 테이블에 액세스하려고 할 때 오류 16535 또는 16561이 나타날 수 있습니다.

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

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

사용 권한

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

SQL Server 2022

2022년 SQL Server(16.x)부터 HADOOP를 대체하는 REST-API 호출을 사용하여 새로운 유형의 커넥터가 도입되었습니다. Azure Blob Storage 및 Azure Data Lake Gen 2의 경우 유일하게 지원되는 인증 방법은 .입니다 SHARED ACCESS SIGNATURE.

자세한 내용은 CREATE EXTERNAL DATA SOURCE를 참조하세요.

예제

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과 같은 대량 작업을 수행할 수 있는 외부 데이터 원본을 만드는 데 사용할 수 있는 데이터베이스 범위 자격 증명을 만듭니다.

-- 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는 서비스 대 서비스 인증에 Microsoft Entra 애플리케이션을 사용합니다.

데이터베이스 범위 자격 증명을 만들기 전에 Microsoft Entra 애플리케이션 을 만들고 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>'
;