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 dengannya. Gunakan kredensial lingkup database pada SQL Database.
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. 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. Windows identitas pengguna 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 Penyedia Manajemen Kunci Perusahaan (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 login SQL Server. 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 info masuk yang dipetakan masuk 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 dasar dan kata sandi. 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 azure Key Vault menggunakan SQL Server Connector untuk Microsoft Azure Key Vault. Untuk contoh lengkap penggunaan Konektor SQL Server, lihat Manajemen Kunci yang Dapat Diperluas 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 antara mereka.
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-sama 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 Storage blob Microsoft Azure dengan database SQL Server 2016.
Penting
Argumen CREDENTIAL NAME mengharuskan nama cocok dengan jalur kontainer, dimulai dengan https dan tidak berisi garis miring berikutnya. Argumen IDENTITY memerlukan nama, SHARED ACCESS SIGNATURE. Argumen SECRET memerlukan token tanda tangan akses bersama.
Rahasia TANDA TANGAN AKSES BERSAMA tidak boleh 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
- Kredensial (Mesin Database)
- ALTER CREDENTIAL (Transact-SQL)
- DROP CREDENTIAL (SQL Bertransaksi)
- MEMBUAT KREDENSIAL LINGKUP DATABASE (SQL T-SQL)
- CREATE LOGIN (Transact-SQL)
- ALTER LOGIN (SQL Bertransaksi)
- sys.credentials (Transact-SQL)
- Pelajaran 2: Membuat kredensial SQL Server menggunakan tanda tangan akses bersama
- Tanda Tangan Akses Bersama
