Autentikasi Azure dengan Azure SDK for Go
Dalam tutorial ini, Anda akan menggunakan jenis Azure Credential dari Azure SDK for Go untuk mengautentikasi ke Azure dengan variabel lingkungan, identitas terkelola, atau Azure CLI.
Modul Azure Identity untuk Go menawarkan beberapa jenis info masuk berbeda yang berfokus pada OAuth dengan Azure Active Directory (Azure AD).
Jenis ini DefaultAzureCredential menyederhanakan autentikasi dengan menggabungkan jenis info masuk yang umum digunakan. Ia menghubungkan bersama-sama jenis yang digunakan untuk mengautentikasi aplikasi Azure yang disebarkan dengan info masuk yang digunakan untuk mengautentikasi dalam lingkungan pengembangan.

Prasyarat
- Langganan Azure: Jika Anda belum memiliki langganan Azure, buat akun gratis sebelum memulai.
- Pergi diinstal: Versi 1.18 atau lebih tinggi
1. Instal modul Azure Identity untuk Go
Modul Azure Identity digunakan untuk mengautentikasi ke Azure.
Jalankan perintah berikut untuk mengunduh modul azidentity:
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
2. Autentikasi dengan Azure
Gunakan DefaultAzureCredential untuk mengautentikasi ke Azure dengan salah satu teknik berikut:
- Opsi 1: Tentukan variabel lingkungan
- Opsi 2: Gunakan identitas terkelola
- Opsi 3: Masuk dengan Azure CLI
Untuk mempelajari lebih lanjut tentang jenis info masuk yang berbeda, lihat jenis info masuk.
Opsi 1: Tentukan variabel lingkungan
DefaultAzureCredential menggunakan jenis EnvironmentCredential untuk mengonfigurasi autentikasi menggunakan variabel lingkungan yang mendukung tiga jenis autentikasi. Pilih dari jenis autentikasi berikut dan tentukan variabel lingkungan yang sesuai.
Perwakilan layanan dengan rahasia
| Nama variabel | Nilai |
|---|---|
AZURE_CLIENT_ID |
ID aplikasi perwakilan layanan Azure |
AZURE_TENANT_ID |
ID penyewa Azure AD aplikasi |
AZURE_CLIENT_SECRET |
Kata sandi dari perwakilan layanan Azure |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Perwakilan layanan dengan sertifikat
| Nama variabel | Nilai |
|---|---|
AZURE_CLIENT_ID |
ID aplikasi Azure AD |
AZURE_TENANT_ID |
ID penyewa Azure AD aplikasi |
AZURE_CLIENT_CERTIFICATE_PATH |
Jalur ke file sertifikat termasuk kunci pribadi (tanpa perlindungan kata sandi) |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Nama pengguna dan kata sandi
| Nama variabel | Nilai |
|---|---|
AZURE_CLIENT_ID |
ID aplikasi Azure AD |
AZURE_USERNAME |
Nama pengguna (biasanya alamat email) |
AZURE_PASSWORD |
Kata sandi pengguna |
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_USERNAME="<azure_username>"
export AZURE_PASSWORD="<azure_user_password>"
Konfigurasi dicoba dengan urutan di atas. Misalnya, jika nilai untuk baik rahasia klien dan sertifikat ada, rahasia klien digunakan.
Opsi 2: Gunakan identitas terkelola
Identitas terkelola menghilangkan kebutuhan pengembang untuk mengelola info masuk. Dengan menghubungkan ke sumber daya yang mendukung autentikasi Azure AD, aplikasi dapat menggunakan token Azure AD alih-alih info masuk.
Jika variabel lingkungan yang diperlukan untuk jenis info masuk EnvironmentCredential tidak ada, DefaultAzureCredential akan mencoba mengautentikasi menggunakan jenis ManagedIdentityCredential.
Jika menggunakan identitas terkelola yang ditetapkan pengguna, jalankan perintah berikut untuk mengatur variabel lingkungan AZURE_CLIENT_ID.
export AZURE_CLIENT_ID="<user_assigned_managed_identity_client_id>"
Opsi 3: Masuk dengan Azure CLI
Untuk mendukung pengembangan lokal, DefaultAzureCredential dapat mengautentikasi saat pengguna masuk ke Azure CLI.
Jalankan perintah berikut ini untuk masuk ke Azure CLI.
az login
Modul azidentity mendukung autentikasi melalui alat pengembang untuk menyederhanakan pengembangan lokal. Autentikasi Azure CLI tidak disarankan untuk aplikasi yang sedang berjalan di Azure.
3. Gunakan DefaultAzureCredential untuk mengautentikasi ResourceClient
Buat modul Go sampel baru yang dinamai azure-auth untuk menguji autentikasi ke Azure dengan DefaultAzureCredential.
Buat direktori untuk menguji dan menjalankan kode Go sampel, lalu ubah ke direktori tersebut.
Jalankan go mod init untuk membuat modul.
go mod init azure-authJalankan go get untuk mengunduh, membangun, dan menginstal modul Azure SDK for Go yang diperlukan.
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"Buat file bernama
main.godan masukkan kode berikut.package main // Import key modules. import ( "log" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" ) // Define key global variables. var ( subscriptionId = "<subscription ID>" ) // Define the function to create a resource group. func main() { cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("Authentication failure: %+v", err) } // Azure SDK Azure Resource Management clients accept the credential as a parameter client := armresources.NewClient(subscriptionId, cred, nil) log.Printf("Authenticated to subscription", client) }Ganti
<subscriptionId>dengan ID Langganan Azure Anda.Jalankan
go rununtuk membuat dan menjalankan aplikasi.go run .
Autentikasi ke Azure dengan DefaultAzureCredential
Gunakan kode berikut dalam aplikasi Anda untuk mengautentikasi ke Azure dengan modul Azure Identity Go menggunakan jenis info masuk DefaultAzureCredential.
// The default credential checks environment variables for configuration.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
// Azure SDK Azure Resource Management clients accept the credential as a parameter
client := armresources.NewClient("<subscription ID>", cred, nil)