CREATE CREDENTIAL(Transact-SQL)

 

이 항목은 다음에 적용됩니다.예SQL Server(2008부터 시작)아니요Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스

서버 수준의 자격 증명을 만듭니다. 자격 증명은 SQL Server 외부의 리소스에 연결 하는 데 필요한 인증 정보를 포함 하는 레코드입니다. 대부분의 자격 증명에는 Windows 사용자 및 암호가 들어 있습니다. 예를 들어, 일부 위치에 데이터베이스 백업을 저장 하면 해당 위치에 액세스 하는 특별 한 자격 증명을 제공 하도록 SQL Server 필요할 수 있습니다. 자세한 내용은 참조 자격 증명 (데이터베이스 엔진)합니다.

System_CAPS_ICON_note.jpg 참고


데이터베이스 수준 사용에 자격 증명을 확인 하려면 만들 데이터베이스 범위 자격 증명 (TRANSACT-SQL)합니다. 서버에서 여러 데이터베이스에 대 한 동일한 자격 증명을 사용 해야 할 때 서버 수준 자격 증명을 사용 합니다. 사용 하 여 데이터베이스 범위 자격 증명을 데이터베이스 이식성을 높여 줍니다. 데이터베이스를 새 서버로 이동 될 때 데이터베이스 범위 자격 증명 함께 이동 됩니다. 사용 하 여 데이터베이스에서 자격 증명 범위 SQL 데이터베이스합니다.

Topic link icon Transact-SQL 구문 표기 규칙

  
CREATE CREDENTIAL credential_name   
WITH IDENTITY = 'identity_name'  
    [ , SECRET = 'secret' ]  
        [ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]  

credential_name
만들려는 자격 증명의 이름을 지정합니다. credential_name 숫자 (#) 기호로 시작할 수 없습니다. 시스템 자격 증명은 ##으로 시작합니다. 이 이름은 컨테이너 경로가 일치 해야 하는 공유 액세스 서명 (SAS)를 사용할 때 https로 시작 하 고 슬래시를 포함 해야 합니다. 예&4; 아래를 참조 하십시오.

IDENTITY ='identity_name'
서버 외부에 연결할 때 사용할 계정의 이름을 지정합니다. Azure 키 자격 증명 모음에 액세스 하는 자격 증명을 사용할 때의 IDENTITY 키 자격 증명 모음 이름입니다. 아래의 예&3;을 참조하세요. 자격 증명에는 공유 액세스 서명 (SAS)을 사용 하는 경우는 IDENTITY공유 액세스 서명을합니다. 예&4; 아래를 참조 하십시오.

SECRET ='secret'
나가는 인증에 필요한 암호를 지정합니다.

Azure 키 자격 증명 모음에 액세스 하는 자격 증명 사용 되는 경우는 비밀 의 인수 CREATE CREDENTIAL 필요는 * > * (하이픈 없이)와 * <> > * 의 서비스 사용자 서로 공백 없이 함께 전달할 Azure Active Directory에. 아래의 예&3;을 참조하세요. 자격 증명, 공유 액세스 서명을 사용 하는 경우는 비밀 공유 액세스 서명 토큰입니다. 예&4; 아래를 참조 하십시오. Azure 컨테이너에 저장된 된 액세스 정책 및 공유 액세스 서명 만들기에 대 한 정보를 참조 하십시오. 1 단원: Azure 컨테이너에 저장 된 액세스 정책과 공유 액세스 서명을 만들합니다.

암호화 공급자에 대 한 cryptographic_provider_name
이름을 지정는 엔터프라이즈 키 관리 공급자 (EKM)합니다. 키 관리에 대 한 자세한 내용은 참조 관리 EKM (Extensible Key)합니다.

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

자격 증명을 만든 후에 매핑할 수 있습니다는 SQL Server 를 사용 하 여 로그인 CREATE LOGIN 또는 ALTER LOGIN합니다. A SQL Server 로그인을 하나의 자격 증명에 매핑될 수 있지만 단일 자격 증명을 여러에 매핑될 수 SQL Server 로그인 합니다. 자세한 내용은 참조 자격 증명 (데이터베이스 엔진)합니다. 서버 수준의 자격 증명을 데이터베이스 사용자에 게 하지 로그인에만 매핑할 수 있습니다.

자격 증명에 대 한 정보에 표시 되는 sys.credentials 카탈로그 뷰를 사용 합니다.

공급자에 대해 매핑된 로그인 자격 증명이 없으면 SQL Server 서비스 계정에 매핑된 자격 증명이 사용됩니다.

자격 증명이 고유한 공급자에 대해 사용되는 경우 로그인에 여러 개의 매핑된 자격 증명이 있을 수 있습니다. 로그인별로 각 공급자에 하나의 매핑된 자격 증명만 있어야 합니다. 동일한 자격 증명이 다른 로그인에 매핑될 수 있습니다.

필요한 ALTER ANY CREDENTIAL 권한.

1. 기본 예

다음 예에서는 AlterEgo라는 자격 증명을 만듭니다. 이 자격 증명에는 Windows 사용자 Mary5 및 암호가 들어 있습니다.

CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',   
    SECRET = '<EnterStrongPasswordHere>';  
GO  

2. EKM에 대한 자격 증명 만들기

다음 예에서는 이전에 EKM 모듈에서 관리 도구의 기본 계정 유형 및 암호를 사용하여 만든 User1OnEKM이라는 계정을 사용합니다. sysadmin 서버에서 계정에 할당 합니다 EKM 계정에 연결 하는 데 사용 되는 자격 증명을 만듭니다는 User1 SQL Server 계정:

CREATE CREDENTIAL CredentialForEKM  
    WITH IDENTITY='User1OnEKM', SECRET='<EnterStrongPasswordHere>'  
    FOR CRYPTOGRAPHIC PROVIDER MyEKMProvider;  
GO  
  
/* Modify the login to assign the cryptographic provider credential */  
ALTER LOGIN Login1  
ADD CREDENTIAL CredentialForEKM;  
  
/* Modify the login to assign a non cryptographic provider credential */   
ALTER LOGIN Login1  
WITH CREDENTIAL = AlterEgo;  
GO  

3. Azure Key Vault를 사용하는 EKM에 대한 자격 증명 만들기

다음 예제에서는 SQL Server 에 대 한 자격 증명은 데이터베이스 엔진 사용 하 여 Azure 키 자격 증명 모음에 액세스할 때 사용 하는 Microsoft Azure 키 자격 증명 모음 용 SQL Server 커넥터합니다. 사용 하 여의 전체 예제는 SQL Server 커넥터 참조 확장 가능 키 관리를 사용 하 여 Azure 키 자격 증명 모음 (SQL Server)합니다.

System_CAPS_ICON_important.jpg 중요


CREATE CREDENTIALIDENTITY 인수에는 키 자격 증명 모음 이름이 필요합니다. 비밀 의 인수 CREATE CREDENTIAL 필요는 * > * (하이픈 없이) 및 * <> > * 사이의 공백 없이 함께 전달할 수 있습니다.

다음 예제에서 클라이언트 ID (EF5C8E09-4D2A-4A76-9998-D93440D8115D)는 하이픈이 제거되어 문자열 EF5C8E094D2A4A769998D93440D8115D 로 입력되어 있으며 암호 는 문자열 SECRET_DBEngine으로 표현되었습니다.

USE master;  
CREATE CREDENTIAL Azure_EKM_TDE_cred   
    WITH IDENTITY = 'ContosoKeyVault',   
    SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_DBEngine'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;  

다음 예제에 대 한 변수를 사용 하 여 동일한 자격 증명을 만듭니다는 클라이언트 ID비밀 다음 서로 연결 되 고 폼을 하는 문자열은 비밀 인수입니다. 대체 함수는 id입니다. 클라이언트에서 하이픈을 제거 하는 데 사용 됩니다

DECLARE @AuthClientId uniqueidentifier = 'EF5C8E09-4D2A-4A76-9998-D93440D8115D';  
DECLARE @AuthClientSecret varchar(200) = 'SECRET_DBEngine';  
DECLARE @pwd varchar(max) = REPLACE(CONVERT(varchar(36), @AuthClientId) , '-', '') + @AuthClientSecret;  
  
EXEC ('CREATE CREDENTIAL Azure_EKM_TDE_cred   
    WITH IDENTITY = 'ContosoKeyVault', SECRET = ''' + @PWD + '''   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;');  

4. SAS 토큰을 사용 하 여 자격 증명 만들기

적용 대상: SQL Server 2014 통해 현재 버전합니다.

다음 예제에서는 SAS 토큰을 사용 하 여 공유 액세스 서명 자격 증명을 만듭니다. Azure 컨테이너에 대해 저장 된 액세스 정책과 공유 액세스 서명을 만들고 공유 액세스 서명을 사용 하 여 자격 증명을 만든 다음에 대 한 자습서를 참조 하십시오. 자습서: Microsoft Azure Blob 저장소 서비스를 사용 하 여 SQL Server 데이터베이스와합니다.

System_CAPS_ICON_important.jpg 중요


자격 증명 이름 인수 이름은 컨테이너 경로 일치를 적용 해야 https로 시작 하 고 후행 슬래시를 포함 하지 않습니다. IDENTITY 인수는 이름에 필요 하지만 공유 액세스 서명을합니다. 비밀 인수에 대 한 공유 액세스 서명 토큰은 적용 해야 합니다.

USE master  
CREATE CREDENTIAL 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>' -- this name must match the container path, start with https and must not contain a trailing forward slash.  
   WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and do not change it.   
   , SECRET = 'sharedaccesssignature' –- this is the shared access signature token   
GO    

자격 증명 (데이터베이스 엔진)
ALTER CREDENTIAL (TRANSACT-SQL)
DROP CREDENTIAL (TRANSACT-SQL)
데이터베이스 범위 이름 자격 증명 (TRANSACT-SQL) 만들기
CREATE LOGIN (TRANSACT-SQL)
ALTER LOGIN (TRANSACT-SQL)
sys.credentials (TRANSACT-SQL)
2 단원: 공유 액세스 서명을 사용 하 여 SQL Server 자격 증명 만들기
공유 액세스 서명

커뮤니티 추가 항목

추가
표시: