CREATE CREDENTIAL (T-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Managed Instance

Membuat kredensial tingkat server. Kredensial adalah rekaman yang berisi informasi autentikasi yang diperlukan untuk menyambungkan ke sumber daya di luar SQL Server. Sebagian besar kredensial mencakup pengguna dan kata sandi Windows. Misalnya, menyimpan cadangan database ke beberapa lokasi mungkin memerlukan SQL Server untuk memberikan kredensial khusus untuk mengakses lokasi tersebut. Untuk informasi selengkapnya, lihat Kredensial (Mesin Database).

Catatan

Untuk membuat kredensial di tingkat database, gunakan CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Gunakan kredensial tingkat server saat Anda perlu menggunakan kredensial yang sama untuk beberapa database di server. Gunakan kredensial lingkup database untuk membuat database lebih portabel. Saat database dipindahkan ke server baru, kredensial lingkup database akan berpindah bersamanya. Gunakan kredensial lingkup database pada SQL Database.

Ikon tautan topikKonvensi Sintaks Transact-SQL

Sintaks

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

credential_name Menentukan nama kredensial yang sedang dibuat. credential_name tidak dapat dimulai dengan tanda angka (#). Kredensial sistem dimulai dengan ##.

Penting

Saat menggunakan tanda tangan akses bersama (SAS), nama ini harus cocok dengan jalur kontainer, dimulai dengan https dan tidak boleh berisi garis miring ke depan. Lihat contoh D.

IDENTITY ='identity_name' Menentukan nama akun yang akan digunakan saat menyambungkan ke luar server. Saat kredensial digunakan untuk mengakses azure Key Vault, IDENTITY adalah nama brankas kunci. Lihat contoh C di bawah ini. Saat kredensial menggunakan tanda tangan akses bersama (SAS), IDENTITAS adalah TANDA TANGAN AKSES BERSAMA. Lihat contoh D di bawah ini.

Penting

Azure SQL Database hanya mendukung identitas Azure Key Vault dan Tanda Tangan Akses Bersama. Identitas pengguna Windows tidak didukung.

SECRET ='secret' Menentukan rahasia yang diperlukan untuk autentikasi keluar.

Ketika kredensial digunakan untuk mengakses Azure Key Vault argumen SECRETDARI CREATE CREDENTIAL memerlukan <ID> Klien (tanpa tanda hubung) dan <Rahasia>Perwakilan Layanan di Azure Active Directory untuk diteruskan bersama-sama tanpa spasi di antara mereka. Lihat contoh C di bawah ini. Saat kredensial menggunakan tanda tangan akses bersama, SECRET adalah token tanda tangan akses bersama. Lihat contoh D di bawah ini. Untuk informasi tentang membuat kebijakan akses tersimpan dan tanda tangan akses bersama pada kontainer Azure, lihat Pelajaran 1: Membuat kebijakan akses tersimpan dan tanda tangan akses bersama pada kontainer Azure.

UNTUK PENYEDIA KRIPTOGRAFI cryptographic_provider_name Menentukan nama Enterprise Key Management Provider (EKM). Untuk informasi selengkapnya tentang Manajemen Kunci, lihat Extensible Key Management (EKM).

Keterangan

Ketika IDENTITY adalah pengguna Windows, rahasianya bisa menjadi kata sandi. Rahasia dienkripsi menggunakan kunci master layanan. Jika kunci master layanan diregenerasi, rahasia dienkripsi ulang menggunakan kunci master layanan baru.

Setelah membuat kredensial, Anda dapat memetakannya ke login SQL Server dengan menggunakan CREATE LOGIN atau ALTER LOGIN. Login SQL Server hanya dapat dipetakan ke satu kredensial, tetapi satu kredensial dapat dipetakan ke beberapa SQL Server masuk. Untuk informasi selengkapnya, lihat Kredensial (Mesin Database). Kredensial tingkat server hanya dapat dipetakan ke login, bukan ke pengguna database.

Informasi tentang kredensial terlihat dalam tampilan katalog sys.credentials .

Jika tidak ada kredensial yang dipetakan login untuk penyedia, kredensial yang dipetakan ke akun layanan SQL Server digunakan.

Login dapat memiliki beberapa kredensial yang dipetakan ke dalamnya selama digunakan dengan penyedia yang khas. Hanya boleh ada satu kredensial yang dipetakan per penyedia per login. Kredensial yang sama dapat dipetakan ke login lain.

Izin

Memerlukan izin UBAH INFO MASUK APA PUN .

Contoh

A. Membuat Kredensial untuk Identitas Windows

Contoh berikut membuat kredensial yang disebut AlterEgo. Kredensial berisi pengguna Mary5 Windows dan kata sandi.

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

B. Membuat Kredensial untuk EKM

Contoh berikut menggunakan akun yang dibuat sebelumnya yang disebut User1OnEKM pada modul EKM melalui alat Manajemen EKM, dengan jenis akun dan kata sandi dasar. Akun sysadmin di server membuat kredensial yang digunakan untuk menyambungkan ke akun EKM, dan menetapkannya ke User1 akun 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 User1
ADD CREDENTIAL CredentialForEKM;

C. Membuat Kredensial untuk EKM Menggunakan Azure Key Vault

Contoh berikut membuat kredensial SQL Server untuk digunakan Mesin Database saat mengakses Key Vault Azure menggunakan SQL Server Connector untuk Microsoft Azure Key Vault. Untuk contoh lengkap penggunaan Konektor SQL Server, lihat Extensible Key Management Menggunakan Azure Key Vault (SQL Server).

Penting

Argumen IDENTITY dari CREATE CREDENTIAL memerlukan nama brankas kunci. Argumen SECRET dari CREATE CREDENTIAL memerlukan <ID> Klien (tanpa tanda hubung) dan <Rahasia> untuk diteruskan bersama-sama tanpa spasi di antaranya.

Dalam contoh berikut, ID Klien (EF5C8E09-4D2A-4A76-9998-D93440D8115D) dilucuti dari tanda hubung dan dimasukkan sebagai string EF5C8E094D2A4A769998D93440D8115D dan Rahasia diwakili oleh string SECRET_DBEngine.

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

Contoh berikut membuat kredensial yang sama dengan menggunakan variabel untuk ID Klien dan string Rahasia , yang kemudian digabungkan bersama untuk membentuk argumen SECRET . Fungsi REPLACE digunakan untuk menghapus tanda hubung dari ID Klien.

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 ;');

D. Membuat Kredensial menggunakan Token SAS

Berlaku untuk: SQL Server 2014 (12.x) melalui versi dan Azure SQL Managed Instance saat ini.

Contoh berikut membuat kredensial tanda tangan akses bersama menggunakan token SAS. Untuk tutorial tentang membuat kebijakan akses tersimpan dan tanda tangan akses bersama pada kontainer Azure, lalu membuat kredensial menggunakan tanda tangan akses bersama, lihat Tutorial: Menggunakan Microsoft Azure Blob Storage dengan database SQL Server 2016.

Penting

Argumen CREDENTIAL NAME mengharuskan nama cocok dengan jalur kontainer, dimulai dengan https dan tidak berisi garis miring ke depan. Argumen IDENTITY memerlukan nama, SHARED ACCESS SIGNATURE. Argumen SECRET memerlukan token tanda tangan akses bersama.

Rahasia TANDA TANGAN AKSES BERSAMA seharusnya tidak memiliki yang di depannya?

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. Membuat Kredensial untuk Identitas Terkelola

Contoh berikut membuat kredensial yang mewakili Identitas Terkelola layanan Azure SQL atau Azure Synapse. Kata sandi dan rahasia tidak berlaku dalam kasus ini.

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

Lihat juga