Aracılığıyla paylaş


CREATE CREDENTIAL (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Sunucu düzeyinde bir kimlik bilgisi oluşturur. Kimlik bilgisi, SQL Server dışındaki bir kaynağa bağlanmak için gereken kimlik doğrulama bilgilerini içeren bir kayıttır. Çoğu kimlik bilgisi bir Windows kullanıcısı ve parolası içerir. Örneğin, veritabanı yedeğini bir konuma kaydetmek için SQL Server'ın bu konuma erişmek için özel kimlik bilgileri sağlaması gerekebilir. Daha fazla bilgi için bkz. Kimlik Bilgileri (Veritabanı Altyapısı).

Not

Kimlik bilgilerini veritabanı düzeyinde yapmak için create DATABASE SCOPED CREDENTIAL (Transact-SQL)kullanın. Sunucudaki birden çok veritabanı için aynı kimlik bilgilerini kullanmanız gerektiğinde CREATE CREDENTIAL ile sunucu düzeyinde bir kimlik bilgisi oluşturun.

  • Veritabanını daha taşınabilir hale getirmek için CREATE DATABASE SCOPED CREDENTIAL ile kapsamlı bir veritabanı kimlik bilgisi oluşturun. Veritabanı yeni bir sunucuya taşındığında, veritabanı kapsamlı kimlik bilgileri de bu sunucuyla birlikte taşınır.
  • SQL Veritabanı'nda veritabanı kapsamlı kimlik bilgilerini kullanın.
  • PolyBase ile veritabanı kapsamlı kimlik bilgilerini kullanın ve Azure SQL Yönetilen Örneği veri sanallaştırma özelliklerini .

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Bağımsız değişken

credential_name

Oluşturulan kimlik bilgilerinin adını belirtir. credential_name sayı (#) işaretiyle başlayamaz. Sistem kimlik bilgileri ## ile başlar.

Önemli

Paylaşılan erişim imzası (SAS) kullanılırken, bu ad kapsayıcı yoluyla eşleşmeli, https ile başlamalıdır ve eğik çizgi içermemelidir. Bkz. örnek D.

Azure Blob Depolama veya S3 uyumlu platformlar gibi dış veri platformlarını kullanarak yedekleme/geri yükleme için kullanıldığında, aşağıdaki tabloda ortak yollar sağlanır:

Dış Veri Kaynağı Konum yolu Örnek
Azure Blob Depolama (V2) https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername> Örnek D
Azure Key Vault <keyvaultname>.vault.azure.net Örnek H
Azure Key Vault Yönetilen Donanım Güvenlik Modülü (HSM) <akv-name>.managedhsm.azure.net Örnek H
S3 uyumlu nesne depolama - S3 uyumlu depolama: s3://<server_name>:<port>/
- AWS S3: s3://<bucket_name>.S3.<region>.amazonaws.com[:port]/<folder>
veya s3://s3.<region>.amazonaws.com[:port]/<bucket_name>/<folder>
Örnek F

IDENTITY ='identity_name'

Sunucu dışına bağlanırken kullanılacak hesabın adını belirtir. Kimlik bilgileri Azure Key Vault'a erişmek için kullanıldığında, IDENTITY anahtar kasasının adıdır. Aşağıdaki C örneğine bakın. Kimlik bilgisi paylaşılan erişim imzası (SAS) kullandığında, IDENTITYSHARED ACCESS SIGNATURE. Aşağıdaki örnek D'ye bakın.

Önemli

Azure SQL Veritabanı yalnızca Azure Key Vault ve Paylaşılan Erişim İmzası kimliklerini destekler. Windows kullanıcı kimlikleri desteklenmez.

GIZLI dizi ='gizli dizi'

Giden kimlik doğrulaması için gereken gizli diziyi belirtir.

Kimlik bilgisi Azure Key Vault'a erişmek için kullanıldığında, SECRET bağımsız değişkeni hizmet sorumlusunun <istemci kimliği> (kısa çizgi olmadan) olarak biçimlendirilmeli ve aralarında boşluk bırakmadan birlikte geçirilen <gizli dizi>olmalıdır. Aşağıdaki C örneğine bakın. Kimlik bilgisi paylaşılan erişim imzası kullanırken, SECRET paylaşılan erişim imzası belirtecidir. Aşağıdaki örnek D'ye bakın. Azure kapsayıcısı üzerinde depolanmış erişim ilkesi ve paylaşılan erişim imzası oluşturma hakkında bilgi için bkz. 1. Ders: Azure kapsayıcıdepolanmış erişim ilkesi ve paylaşılan erişim imzası oluşturma.

ŞIFRELEME SAĞLAYıCı cryptographic_provider_name IÇIN

Kurumsal Anahtar Yönetimi Sağlayıcısı (EKM)adını belirtir. Anahtar Yönetimi hakkında daha fazla bilgi için bkz. Genişletilebilir Anahtar Yönetimi (EKM).

Açıklamalar

KIMLIK bir Windows kullanıcısı olduğunda gizli dizi parola olabilir. Gizli dizi, hizmet ana anahtarı kullanılarak şifrelenir. Hizmet ana anahtarı yeniden oluşturulursa, gizli dizi yeni hizmet ana anahtarı kullanılarak yeniden şifrelenir.

Bir kimlik bilgisi oluşturduktan sonra, CREATE LOGIN kullanarak veya ALTER LOGINkullanarak bunu SQL Server oturum açma bilgileriyle eşleyebilirsiniz. SQL Server oturum açma bilgileri yalnızca bir kimlik bilgileriyle eşlenebilir, ancak tek bir kimlik bilgisi birden çok SQL Server oturum açma bilgileriyle eşlenebilir. Daha fazla bilgi için bkz. Kimlik Bilgileri (Veritabanı Altyapısı). Sunucu düzeyinde kimlik bilgileri veritabanı kullanıcısına değil yalnızca oturum açma bilgilerine eşlenebilir.

Kimlik bilgileri hakkındaki bilgiler sys.credentials katalog görünümünde görünür.

Sağlayıcı için oturum açma eşlenmiş kimlik bilgisi yoksa, SQL Server hizmet hesabına eşlenen kimlik bilgisi kullanılır.

Bir oturum açma bilgileri, ayırt edici sağlayıcılarla kullanıldığı sürece bu kimlik bilgileriyle eşlenmiş birden çok kimlik bilgilerine sahip olabilir. Oturum açma başına sağlayıcı başına yalnızca bir eşlenmiş kimlik bilgisi olmalıdır. Aynı kimlik bilgileri diğer oturum açma bilgileriyle eşlenebilir.

İzinler

HERHANGI bir KIMLIK iznini değiştirme gerektirir.

Örnekler

A. Windows Kimliği için Kimlik Bilgisi Oluşturma

Aşağıdaki örnek, AlterEgoadlı kimlik bilgilerini oluşturur. Kimlik bilgisi Windows kullanıcı Mary5 ve bir parola içerir.

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

B. EKM için Kimlik Bilgisi Oluşturma

Aşağıdaki örnek, EKM'nin Yönetim araçları aracılığıyla ekm modülünde User1OnEKM adlı, temel hesap türü ve parola içeren önceden oluşturulmuş bir hesap kullanır. Sunucudaki sysadmin hesabı, EKM hesabına bağlanmak için kullanılan bir kimlik bilgisi oluşturur ve bunu User1 SQL Server hesabına atar:

CREATE CREDENTIAL CredentialForEKM
    WITH IDENTITY='User1OnEKM', SECRET='<EnterStrongPasswordHere>'
    FOR CRYPTOGRAPHIC PROVIDER MyEKMProvider;
GO

/* Modify the login to assign the cryptographic provider credential */
ALTER LOGIN User1
ADD CREDENTIAL CredentialForEKM;

C. Azure Key Vault Kullanarak EKM için Kimlik Bilgisi Oluşturma

Aşağıdaki örnek, Microsoft Azure Key Vaultiçin SQL Server Bağlayıcısı'nı kullanarak Azure Key Vault'a erişirken kullanılacak Veritabanı Altyapısı için bir SQL Server kimlik bilgisi oluşturur. SQL Server Bağlayıcısı'nı kullanmanın tam örneği için bkz. Azure Key Vault Kullanarak Genişletilebilir Anahtar Yönetimi (SQL Server).

Önemli

CREATE CREDENTIALIDENTITY bağımsız değişkeni anahtar kasası adını gerektirir. CREATE CREDENTIALSECRET bağımsız değişkeni, <İstemci Kimliği> (kısa çizgi olmadan) ve <Gizli Dizi> aralarında boşluk bırakmadan birlikte geçirilmesini gerektirir. Yönetilen kimlikler EKM ile desteklenir ve kimlik bilgileri yönetilen kimliklerle kullanılabilir. Örnek için bkz. Örnek H.

Aşağıdaki örnekte, İstemci Kimliği (00001111-aaaa-2222-bbbb-3333cccc4444) kısa çizgilerden çıkarılır ve dize 11111111222233334444555555555555 olarak girilir ve Gizli DiziSECRET_DBEnginedizesiyle temsil edilir.

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

Aşağıdaki örnek, İstemci Kimliği ve Gizli Dizi dizeleri için değişkenleri kullanarak aynı kimlik bilgilerini oluşturur ve daha sonra SECRET bağımsız değişkenini oluşturmak için birleştirilir. REPLACE işlevi, kısa çizgileri İstemci Kimliği'nden kaldırmak için kullanılır.

DECLARE @AuthClientId uniqueidentifier = '11111111-AAAA-BBBB-2222-CCCCCCCCCCCC';
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 ;');

D. SAS Belirteci kullanarak kimlik bilgisi oluşturma

geçerli sürüm ve Azure SQL Yönetilen Örneği aracılığıyla sql server 2014 (12.x) için geçerlidir.

Aşağıdaki örnek, SAS belirteci kullanarak paylaşılan erişim imzası kimlik bilgileri oluşturur. Azure kapsayıcısı üzerinde depolanmış erişim ilkesi ve paylaşılan erişim imzası oluşturma ve ardından paylaşılan erişim imzasını kullanarak kimlik bilgisi oluşturma öğreticisi için bkz. Öğretici:SQL Server veritabanlarıyla Microsoft Azure Blob Depolama'yı kullanma.

Önemli

CREDENTIAL NAME bağımsız değişkeni, adın kapsayıcı yoluyla eşleşmesini, https ile başlamasını ve sondaki eğik çizgi içermesini gerektirir. IDENTITY bağımsız değişkeni, PAYLAŞıLAN ERIŞIM İMZAsıadını gerektirir. SECRET bağımsız değişkeni paylaşılan erişim imzası belirtecini gerektirir.

PAYLAŞıLAN ERIŞIM İMZAsı gizli anahtarı baştaki sahip olmamalıdır?.

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

E. Yönetilen Kimlik için kimlik bilgisi oluşturma

Aşağıdaki örnek, Azure SQL veya Azure Synapse hizmetinin yönetilen kimliğini temsil eden kimlik bilgilerini oluşturur. Parola ve gizli dizi bu durumda geçerli değildir.

CREATE CREDENTIAL ServiceIdentity WITH IDENTITY = 'Managed Identity';
GO

Azure VM'de SQL Server için yönetilen kimlikle kimlik bilgisi oluşturma örneği için bkz. Örnek G ve Örnek H. Sunucu düzeyinde yönetilen kimlik Linux için desteklenmez.

F. S3 uyumlu depolama alanına yedekleme/geri yükleme için kimlik bilgisi oluşturma

için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümler

Açık S3 uyumlu standart, depolama platformuna göre farklılık gösterebilecek depolama yolları ve ayrıntılar sağlar. Daha fazla bilgi için bkz. S3 uyumlu nesne depolamaIÇIN URL'ye SQL Server yedeklemesi .

Çoğu S3 uyumlu depolama için, bu örnek bir sunucu düzeyinde kimlik bilgisi oluşturur ve BACKUP TO URLgerçekleştirir.

USE [master];
CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
WITH
        IDENTITY    = 'S3 Access Key',
        SECRET      = '<AccessKeyID>:<SecretKeyID>';
GO

BACKUP DATABASE [SQLTestDB]
TO      URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
WITH    FORMAT /* overwrite any existing backup sets */
,       STATS = 10
,       COMPRESSION;

Ancak AWS S3 iki farklı URL standardını destekler.

  • S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER> (varsayılan)
  • S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>

AWS S3 için kimlik bilgilerini başarıyla oluşturmaya yönelik birden çok yaklaşım vardır:

  • Kimlik bilgisi adında demet adını, yolu ve bölgeyi belirtin.

    -- S3 bucket name: datavirtualizationsample
    -- S3 bucket region: us-west-2
    -- S3 bucket folder: backup
    
    CREATE CREDENTIAL [s3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup]
    WITH    
            IDENTITY    = 'S3 Access Key'
    ,       SECRET      = 'accesskey:secretkey';
    GO
    
    BACKUP DATABASE [AdventureWorks2022]
    TO URL  = 's3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup/AdventureWorks2022.bak'
    WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
    GO
    

    Veya

    CREATE CREDENTIAL [s3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup]
    WITH    
            IDENTITY    = 'S3 Access Key'
    ,       SECRET      = 'accesskey:secretkey';
    GO
    
    BACKUP DATABASE [AdventureWorks2022]
    TO URL  = 's3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup/AdventureWorks2022.bak'
    WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
    GO
    
  • Alternatif olarak, kimlik bilgisi adında demet adını ve yolu sağlayın, ancak her BACKUP/RESTORE komutu içinde bölgeyi parametreleştirin. BACKUP_OPTIONS ve RESTORE_OPTIONSS3'e özgü bölge dizesini kullanın; örneğin, '{"s3": {"region":"us-west-2"}}'.

    -- S3 bucket name: datavirtualizationsample
    -- S3 bucket region: us-west-2
    -- S3 bucket folder: backup
    
    CREATE CREDENTIAL   [s3://datavirtualizationsample.s3.amazonaws.com/backup]
    WITH    
            IDENTITY    = 'S3 Access Key'
    ,       SECRET      = 'accesskey:secretkey';
    GO
    
    BACKUP DATABASE [AdventureWorks2022]
    TO URL  = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak'
    WITH
      BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}' -- REGION AS PARAMETER)
    , COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
    GO
    
    RESTORE DATABASE AdventureWorks2022_1 
    FROM URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak'
    WITH 
      MOVE 'AdventureWorks2022' 
      TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.mdf'
    , MOVE 'AdventureWorks2022_log' 
      TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.ldf'
    , STATS = 10, RECOVERY
    , REPLACE, RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'; -- REGION AS PARAMETER)
    GO
    

G. Yönetilen kimlik kullanarak Azure Blob Depolama'ya erişmek için kimlik bilgisi oluşturma

SQL Server 2022 CU17'den başlayarak, Azure Blob depolama alanındaki Azure VM veritabanlarında SQL Server'ı yedeklemek ve geri yüklemek için SQL Server kimlik bilgileriyle yönetilen kimlikleri kullanabilirsiniz. Daha fazla bilgi için bkz. Yönetilen kimlikleri kullanarak URL'ye yedekleme ve geri yükleme.

BACKUP ve RESTORE işlemleriyle kullanılacak yönetilen kimliğe sahip bir kimlik bilgisi oluşturmak için aşağıdaki örneği kullanın:

CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<container-name>] 
    WITH IDENTITY = 'Managed Identity';

İzleme bayrağı 4675 yönetilen kimlikle oluşturulan kimlik bilgilerini denetlemek için kullanılabilir. CREATE CREDENTIAL deyimi izleme bayrağı 4675 etkinleştirilmeden yürütüldüyse, sunucu için birincil yönetilen kimlik ayarlanmadıysa hata iletisi gönderilmez. Bu senaryoyla ilgili sorunları gidermek için, izleme bayrağı etkinleştirildikten sonra kimlik bilgilerinin silinmesi ve yeniden oluşturulması gerekir.

H. Azure Key Vault ile Genişletilebilir Anahtar Yönetimi için yönetilen kimlik kimlik bilgileri oluşturma

SQL Server 2022 CU17'den başlayarak, Azure Key Vault (AKV) ile Genişletilebilir Anahtar Yönetimi (EKM) için Azure VM'lerinde SQL Server'da yönetilen kimlikleri de kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Key Vault ile Genişletilebilir Anahtar Yönetimi için Yönetilen Kimlik desteği .

AKV ile EKM ile kullanılacak bir yönetilen kimlik kimlik bilgisi oluşturmak için aşağıdaki örneği kullanın:

CREATE CREDENTIAL [<akv-name>.vault.azure.net] 
    WITH IDENTITY = 'Managed Identity'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov

Mesela:

CREATE CREDENTIAL [contoso.vault.azure.net] -- for Azure Key Vault
    WITH IDENTITY = 'Managed Identity'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
CREATE CREDENTIAL [contoso.managedhsm.azure.net] -- for Azure Key Vault Managed HSM
    WITH IDENTITY = 'Managed Identity'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov

İzleme bayrağı 4675 yönetilen kimlikle oluşturulan kimlik bilgilerini denetlemek için kullanılabilir. CREATE CREDENTIAL deyimi izleme bayrağı 4675 etkinleştirilmeden yürütüldüyse, sunucu için birincil yönetilen kimlik ayarlanmadıysa hata iletisi gönderilmez. Bu senaryoyla ilgili sorunları gidermek için, izleme bayrağı etkinleştirildikten sonra kimlik bilgilerinin silinmesi ve yeniden oluşturulması gerekir.