MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Membuat kredensial database. Kredensial database tidak dipetakan ke login server atau pengguna database. Kredensial digunakan oleh database untuk mengakses ke lokasi eksternal kapan saja database melakukan operasi yang memerlukan akses.

Konvensi sintaks transact-SQL

Sintaksis

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]

Catatan

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

Argumen

credential_name

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

IDENTITY ='identity_name'

Menentukan nama akun yang akan digunakan saat menyambungkan ke luar server.

  • Untuk mengimpor file dari Azure Blob Storage atau Azure Data Lake Storage menggunakan kunci bersama, nama identitas harus SHARED ACCESS SIGNATURE. Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS). Hanya gunakan IDENTITY = SHARED ACCESS SIGNATURE untuk tanda tangan akses bersama.
  • Untuk mengimpor file dari Azure Blob Storage menggunakan identitas terkelola, nama identitas harus .MANAGED IDENTITY
  • Saat menggunakan Kerberos (Windows Active Directory atau MIT KDC) jangan gunakan nama domain dalam argumen IDENTITY. Ini seharusnya hanya nama akun.
  • Dalam instans SQL Server, jika membuat kredensial cakupan database dengan Kunci Akses Penyimpanan yang digunakan sebagai RAHASIA, IDENTITAS diabaikan.
  • WITH IDENTITY tidak diperlukan jika kontainer di penyimpanan Azure Blob diaktifkan untuk akses anonim. Untuk contoh mengkueri penyimpanan Azure Blob, lihat Mengimpor ke tabel dari file yang disimpan di penyimpanan Azure Blob.

Penting

Satu-satunya sumber data eksternal PolyBase yang mendukung autentikasi Kerberos adalah Hadoop. Semua sumber data eksternal lainnya (SQL Server, Oracle, Teradata, MongoDB, ODBC generik) hanya mendukung Autentikasi Dasar.

  • Untuk memuat data ke Azure Synapse Analytics, nilai apa pun yang valid dapat digunakan untuk IDENTITY.
  • Dalam kumpulan SQL tanpa server Azure Synapse Analytics, kredensial tercakup database dapat menentukan identitas terkelola ruang kerja, nama perwakilan layanan, atau token tanda tangan akses bersama (SAS). Akses melalui identitas pengguna, yang diaktifkan oleh autentikasi pass-through Microsoft Entra, juga dimungkinkan dengan kredensial cakupan database, seperti halnya akses anonim ke penyimpanan yang tersedia untuk umum. Untuk informasi selengkapnya, lihat Jenis otorisasi penyimpanan yang didukung.
  • Dalam kumpulan SQL khusus Azure Synapse Analytics, kredensial tercakup database dapat menentukan token tanda tangan akses bersama (SAS), identitas aplikasi kustom, identitas terkelola ruang kerja, atau kunci akses penyimpanan.

SECRET ='secret'

Menentukan rahasia yang diperlukan untuk autentikasi keluar. SECRET diperlukan untuk mengimpor file dari penyimpanan Azure Blob. Untuk memuat dari penyimpanan Azure Blob ke Azure Synapse Analytics atau Gudang Data Paralel, Rahasia harus berupa Kunci Azure Storage.

Peringatan

Nilai kunci SAS mungkin dimulai dengan '?' (tanda tanya). Saat Anda menggunakan kunci SAS, Anda harus menghapus '?'. Jika tidak, upaya Anda mungkin diblokir.

Keterangan

Kredensial lingkup database adalah catatan yang berisi informasi autentikasi yang diperlukan untuk menyambungkan ke sumber daya di luar SQL Server. Sebagian besar kredensial mencakup pengguna dan kata sandi Windows.

Untuk melindungi informasi sensitif di dalam kredensial lingkup database, diperlukan kunci master database (DMK). DMK adalah kunci konten yang mengenkripsi rahasia dalam kredensial lingkup database. Database harus memiliki kunci master sebelum kredensial lingkup database apa pun dapat dibuat. DMK harus dienkripsi dengan kata sandi yang kuat. Azure SQL Database akan membuat kunci master database dengan kata sandi yang kuat dan dipilih secara acak sebagai bagian dari pembuatan kredensial lingkup database, atau sebagai bagian dari membuat audit server. Pengguna tidak dapat membuat kunci master pada database logis master . Kata sandi kunci master tidak diketahui oleh Microsoft dan tidak dapat ditemukan setelah pembuatan. Untuk alasan ini, disarankan untuk membuat kunci master database sebelum membuat kredensial lingkup database. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER (Transact-SQL).

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.

Saat memberikan izin untuk tanda tangan akses bersama (SAS) untuk digunakan dengan tabel eksternal PolyBase, pilih Kontainer dan Objek sebagai jenis sumber daya yang diizinkan. Jika tidak diberikan, Anda mungkin menerima kesalahan 16535 atau 16561 saat mencoba mengakses tabel eksternal.

Informasi tentang kredensial cakupan database terlihat dalam tampilan katalog sys.database_scoped_credentials .

Berikut adalah beberapa aplikasi kredensial cakupan database:

Izin

Memerlukan izin CONTROL pada database.

SQL Server 2022

Mulai SQL Server 2022 (16.x) jenis konektor baru diperkenalkan, menggunakan panggilan REST-API menggantikan HADOOP. Untuk Azure Blob Storage dan Azure Data Lake Gen 2, satu-satunya metode autentikasi yang didukung adalah SHARED ACCESS SIGNATURE.

Silakan lihat membuat sumber data eksternal untuk informasi lebih lanjut.

Contoh

J. Membuat kredensial cakupan database untuk aplikasi Anda

Contoh berikut membuat kredensial cakupan database yang disebut AppCred. Kredensial lingkup database berisi pengguna Mary5 Windows dan kata sandi.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

B. Membuat kredensial lingkup database untuk tanda tangan akses bersama

Contoh berikut membuat kredensial cakupan database yang dapat digunakan untuk membuat sumber data eksternal, yang dapat melakukan operasi massal, seperti BULK INSERT dan OPENROWSET. Tanda Tangan Akses Bersama tidak dapat digunakan dengan PolyBase di SQL Server, APS, atau Azure Synapse Analytics.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C. Membuat kredensial tercakup database untuk Koneksi ivitas PolyBase ke Azure Data Lake Store

Contoh berikut membuat kredensial cakupan database yang dapat digunakan untuk membuat sumber data eksternal, yang dapat digunakan oleh PolyBase di Azure Synapse Analytics.

Azure Data Lake Store menggunakan aplikasi Microsoft Entra untuk autentikasi layanan ke layanan.

Buat aplikasi Microsoft Entra dan dokumentasikan client_id, OAuth_2.0_Token_EndPoint, dan Kunci sebelum Anda mencoba membuat kredensial cakupan database.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
    IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
    SECRET = '<key>'
;