CREATE CREDENTIAL (T-SQL)
Berlaku untuk: SQL Server 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).
Buat kredensial tingkat server dengan CREATE CREDENTIAL
saat Anda perlu menggunakan kredensial yang sama untuk beberapa database di server.
- Buat kredensial cakupan database dengan
CREATE DATABASE SCOPED CREDENTIAL
untuk membuat database lebih portabel. Saat database dipindahkan ke server baru, kredensial lingkup database akan berpindah dengannya. - Gunakan kredensial lingkup database di SQL Database.
- Gunakan kredensial tercakup database dengan fitur virtualisasi data PolyBase dan Azure SQL Managed Instance.
Sintaks
CREATE CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]
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.
Saat digunakan untuk pencadangan/pemulihan menggunakan platform data ke eksternal, seperti Azure Blob Storage atau platform yang kompatibel dengan S3, tabel berikut ini menyediakan jalur umum:
Sumber Data Eksternal | Jalur lokasi | Contoh |
---|---|---|
Azure Blob Storage (V2) | https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername> |
Contoh D. |
Penyimpanan objek yang kompatibel dengan S3 | - Penyimpanan yang kompatibel dengan S3: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.<region>.amazonaws.com[:port]/<folder> atau s3://s3.<region>.amazonaws.com[:port]/<bucket_name>/<folder> |
Contoh F. |
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.
Saat kredensial digunakan untuk mengakses Azure Key Vault, argumen SECRET harus diformat sebagai ID> klien perwakilan layanan (tanpa tanda hubung) dan< rahasia>, diteruskan bersama-sama tanpa spasi di antaranya.< 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 cryptographic_provider_name PENYEDIA KRIPTOGRAFI
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 KREDENSIAL APA PUN.
Contoh
J. 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 (11111111-2222-3333-4444-555555555555
) dilucuti dari tanda hubung dan dimasukkan sebagai string 11111111222233334444555555555555
dan Rahasia diwakili oleh string SECRET_DBEngine
.
USE master;
CREATE CREDENTIAL Azure_EKM_TDE_cred
WITH IDENTITY = 'ContosoKeyVault',
SECRET = '11111111222233334444555555555555SECRET_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 = '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. Membuat kredensial menggunakan Token SAS
Berlaku untuk: SQL Server 2014 (12.x) melalui versi saat ini dan Azure SQL Managed Instance.
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.
Penting
Argumen NAMA KREDENSIAL 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 seharusnya tidak memiliki ?.
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
F. Membuat kredensial untuk pencadangan/pemulihan ke penyimpanan yang kompatibel dengan S3
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru
Standar terbuka yang kompatibel dengan S3 menyediakan jalur penyimpanan dan detail yang mungkin berbeda berdasarkan platform penyimpanan. Untuk informasi selengkapnya, lihat Cadangan SQL Server ke URL untuk penyimpanan objek yang kompatibel dengan S3.
Untuk sebagian besar penyimpanan yang kompatibel dengan S3, contoh ini membuat kredensial tingkat server dan melakukan BACKUP TO URL
.
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;
Namun, AWS S3 mendukung dua standar URL yang berbeda.
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>
(default)S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
Ada beberapa pendekatan untuk berhasil membuat kredensial untuk AWS S3:
Berikan nama wadah dan jalur dan wilayah dalam nama kredensial.
-- 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
Atau,
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
Atau, berikan nama wadah dan jalur dalam nama kredensial, tetapi parameterisasi wilayah dalam setiap
BACKUP
/RESTORE
perintah. Gunakan string wilayah khusus S3 diBACKUP_OPTIONS
danRESTORE_OPTIONS
, misalnya,'{"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
Konten terkait
- Kredensial (Mesin Database)
- ALTER CREDENTIAL (Transact-SQL)
- DROP CREDENTIAL (Transact-SQL)
- MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- UBAH LOGIN (Transact-SQL)
- sys.credentials (Transact-SQL)
- Pelajaran 2: Membuat kredensial SQL Server menggunakan tanda tangan akses bersama
- Tanda Tangan Akses Bersama