Mengautentikasi dengan ID Microsoft Entra di sqlcmd

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

sqlcmd mendukung berbagai model autentikasi Microsoft Entra, tergantung pada versi mana yang telah Anda instal.

Catatan

Meskipun MICROSOFT Entra ID adalah nama baru untuk Azure Active Directory (Azure AD), untuk mencegah mengganggu lingkungan yang ada, Azure AD masih tetap berada di beberapa elemen yang dikodekan secara permanen seperti bidang UI, penyedia koneksi, kode kesalahan, dan cmdlet. Dalam artikel ini, dua nama tersebut dapat dipertukarkan.

Untuk informasi selengkapnya tentang perbedaan antara versi sqlcmd , lihat utilitas sqlcmd.

sqlcmd (Go) mendukung lebih banyak model autentikasi Microsoft Entra, berdasarkan paket azidentitas. Implementasi bergantung pada konektor Microsoft Entra di driver go-sqlcmd.

Argumen baris perintah

Untuk menggunakan autentikasi Microsoft Entra, Anda dapat menggunakan salah satu dari dua sakelar baris perintah.

-G (sebagian besar) kompatibel dengan penggunaannya dalam sqlcmd (ODBC). Jika nama pengguna dan kata sandi disediakan, nama pengguna dan kata sandi akan diautentikasi menggunakan autentikasi kata sandi Microsoft Entra. Jika nama pengguna disediakan, nama pengguna menggunakan autentikasi interaktif Microsoft Entra, yang dapat menampilkan browser web. Jika tidak ada nama pengguna atau kata sandi yang disediakan, nama pengguna atau kata sandi menggunakan DefaultAzureCredential, yang mencoba mengautentikasi melalui berbagai mekanisme.

--authentication-method= dapat digunakan untuk menentukan salah satu jenis autentikasi berikut.

ActiveDirectoryDefault

  • Untuk gambaran umum jenis autentikasi yang digunakan mode ini, lihat Kredensial Azure Default.
  • Pilih metode ini jika skrip otomatisasi database Anda dimaksudkan untuk dijalankan di lingkungan pengembangan lokal dan dalam penyebaran produksi di Azure. Di lingkungan pengembangan, Anda dapat menggunakan rahasia klien atau login Azure CLI. Tanpa mengubah skrip dari lingkungan pengembangan, Anda dapat menggunakan identitas terkelola atau rahasia klien pada penyebaran produksi Anda.
  • Mengatur variabel AZURE_TENANT_ID lingkungan dan AZURE_CLIENT_ID diperlukan untuk DefaultAzureCredential mulai memeriksa konfigurasi lingkungan dan mencari salah satu variabel lingkungan tambahan berikut untuk mengautentikasi:
    • Mengatur variabel AZURE_CLIENT_SECRET lingkungan mengonfigurasi DefaultAzureCredential untuk memilih ClientSecretCredential.
    • Mengatur variabel AZURE_CLIENT_CERTIFICATE_PATH lingkungan mengonfigurasi DefaultAzureCredential untuk memilih ClientCertificateCredential apakah AZURE_CLIENT_SECRET tidak diatur.
  • Mengatur variabel lingkungan AZURE_USERNAME mengonfigurasi DefaultAzureCredential untuk memilih UsernamePasswordCredential apakah AZURE_CLIENT_SECRET dan AZURE_CLIENT_CERTIFICATE_PATH tidak diatur.

ActiveDirectoryIntegrated

Metode ini saat ini tidak diimplementasikan, dan kembali ke ActiveDirectoryDefault.

ActiveDirectoryPassword

  • Metode ini mengautentikasi menggunakan nama pengguna dan kata sandi. Ini tidak berfungsi jika MFA diperlukan.

  • Anda memberikan nama pengguna dan kata sandi menggunakan sakelar baris perintah atau SQLCMD variabel lingkungan yang biasa.

  • Atur AZURE_TENANT_ID variabel lingkungan ke ID penyewa server jika tidak menggunakan penyewa default pengguna.

ActiveDirectoryInteractive

Metode ini meluncurkan browser web untuk mengautentikasi pengguna.

ActiveDirectoryManagedIdentity

Gunakan metode ini saat menjalankan sqlcmd (Go) pada Azure VM yang memiliki identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna. Jika menggunakan identitas terkelola yang ditetapkan pengguna, atur nama pengguna ke ID Klien identitas terkelola. Jika menggunakan identitas yang ditetapkan sistem, biarkan nama pengguna kosong.

Contoh ini menunjukkan cara menyambungkan menggunakan Service Assigned Managed Identity (SAMI):

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity

Contoh ini menunjukkan cara menyambungkan dengan User Assigned Managed Identity (UAMI) dengan menambahkan Id Klien dari identitas terkelola yang ditetapkan pengguna:

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>

ActiveDirectoryServicePrincipal

Metode ini mengautentikasi nama pengguna yang disediakan sebagai ID perwakilan layanan dan kata sandi sebagai rahasia klien untuk perwakilan layanan. Berikan nama pengguna dalam formulir <service principal id>@<tenant id>. Atur SQLCMDPASSWORD variabel ke rahasia klien. Jika menggunakan sertifikat alih-alih rahasia klien, atur AZURE_CLIENT_CERTIFICATE_PATH variabel lingkungan ke jalur file sertifikat.

Variabel lingkungan untuk autentikasi Microsoft Entra

Beberapa pengaturan autentikasi Microsoft Entra tidak memiliki input baris perintah, dan beberapa variabel lingkungan dikonsumsi langsung oleh paket yang azidentity digunakan oleh sqlcmd (Go).

Variabel lingkungan ini dapat diatur untuk mengonfigurasi beberapa aspek autentikasi Microsoft Entra dan untuk melewati perilaku default. Selain variabel yang tercantum sebelumnya, berikut ini khusus untuk sqlcmd (Go), dan berlaku untuk beberapa metode.

SQLCMDCLIENTID

Atur variabel lingkungan ini ke pengidentifikasi aplikasi yang terdaftar di Microsoft Entra, yang berwenang untuk mengautentikasi ke Azure SQL Database. Berlaku untuk ActiveDirectoryInteractive metode dan ActiveDirectoryPassword .