Autentikasi dengan Azure SDK for Go (warisan)
Penting
Artikel ini berlaku untuk versi lama Azure SDK for Go. Untuk mengautentikasi ke modul terbaru, gunakan paket Azure Identity .
Azure SDK for Go menawarkan beberapa cara untuk mengautentikasi dengan Azure. Jenis autentikasi ini dipanggil melalui metode autentikasi yang berbeda. Artikel ini mencakup jenis dan metode yang tersedia, serta cara memilih yang terbaik untuk aplikasi Anda.
Jenis dan metode autentikasi yang tersedia
Azure SDK for Go menawarkan beberapa jenis autentikasi yang berbeda, menggunakan set info masuk yang berbeda. Setiap jenis autentikasi tersedia melalui metode autentikasi yang berbeda, yaitu cara SDK menerima info masuk ini sebagai input. Tabel berikut menjelaskan jenis autentikasi dan situasi yang tersedia di mana mereka direkomendasikan untuk digunakan oleh aplikasi Anda.
Jenis autentikasi | Direkomendasikan ketika... |
---|---|
Autentikasi berbasis sertifikat | Anda memiliki sertifikat X509 yang dikonfigurasi untuk pengguna Microsoft Entra atau perwakilan layanan. Untuk mempelajari selengkapnya, lihat Mulai menggunakan autentikasi berbasis sertifikat di ID Microsoft Entra. |
Informasi masuk klien | Anda memiliki perwakilan layanan yang dikonfigurasi yang disiapkan untuk aplikasi ini atau kelas aplikasi yang dimilikinya. Untuk mempelajari selengkapnya, lihat Membuat perwakilan layanan menggunakan Azure CLI. |
Identitas terkelola untuk sumber daya Azure | Aplikasi Anda berjalan pada sumber daya Azure yang telah dikonfigurasi dengan identitas terkelola. Untuk mempelajari lebih lanjut, lihat identitas terkelola untuk sumber daya Azure. |
Token perangkat | Aplikasi Anda dimaksudkan untuk digunakan hanya secara interaktif. Pengguna dapat mengaktifkan autentikasi multifaktor. Pengguna memiliki akses ke browser web untuk masuk. Untuk informasi selengkapnya, lihat Menggunakan autentikasi token perangkat. |
Nama pengguna/kata sandi | Anda memiliki aplikasi interaktif yang tidak dapat menggunakan metode autentikasi lainnya. Pengguna Anda tidak mengaktifkan autentikasi multifaktor untuk masuk Microsoft Entra mereka. |
Poin-poin penting
- Jika Anda menggunakan jenis autentikasi selain kredensial klien, aplikasi Anda harus terdaftar di ID Microsoft Entra. Untuk mempelajari caranya, lihat Mengintegrasikan aplikasi dengan MICROSOFT Entra ID.
- Kecuali Anda memiliki persyaratan khusus, hindari autentikasi nama pengguna/kata sandi. Dalam situasi di mana masuk berbasis pengguna sesuai, autentikasi token perangkat biasanya dapat digunakan sebagai gantinya.
Jenis autentikasi ini tersedia melalui berbagai metode.
- Autentikasi berbasis lingkungan membaca info masuk langsung dari lingkungan program.
- Autentikasi berbasis file memuat file yang berisi info masuk perwakilan layanan.
- Autentikasi berbasis klien menggunakan objek dalam kode dan membuat Anda bertanggung jawab atas penyediaan info masuk selama eksekusi program.
- Autentikasi token perangkat mengharuskan pengguna untuk masuk secara interaktif melalui browser web dengan token.
Semua fungsi dan jenis autentikasi tersedia dalam paket github.com/Azure/go-autorest/autorest/azure/auth .
Catatan
Kecuali Anda memiliki persyaratan khusus, hindari autentikasi berbasis klien. Metode autentikasi ini mendorong praktik buruk. Secara khusus, menggunakan autentikasi berbasis klien membuat pengodean info masuk secara permanen lebih menggoda. Menulis kode kustom untuk autentikasi juga dapat rusak pada rilis SDK mendatang apabila persyaratan autentikasi berubah.
Menggunakan autentikasi berbasis lingkungan
Jika Anda menjalankan aplikasi dalam pengaturan terkontrol, autentikasi berbasis lingkungan adalah pilihan alami. Dengan metode autentikasi ini, Anda mengonfigurasi lingkungan shell sebelum menjalankan aplikasi Anda. Pada runtime, Go SDK membaca variabel lingkungan ini untuk mengautentikasi dengan Azure.
Autentikasi berbasis lingkungan memiliki dukungan untuk semua jenis autentikasi kecuali token perangkat, dievaluasi dalam urutan berikut:
- Informasi masuk klien
- Autentikasi berbasis sertifikat
- Nama pengguna/kata sandi
- Identitas terkelola untuk sumber daya Azure
Jika jenis autentikasi memiliki nilai yang belum diatur atau ditolak, SDK secara otomatis mencoba jenis autentikasi berikutnya. Ketika tidak ada lagi jenis yang tersedia untuk dicoba, SDK menampilkan kesalahan.
Tabel berikut merinci variabel lingkungan yang perlu diatur untuk setiap jenis autentikasi yang didukung oleh autentikasi berbasis lingkungan.
Jenis autentikasi | Variabel lingkungan | Deskripsi |
---|---|---|
Informasi masuk klien | AZURE_TENANT_ID |
ID untuk penyewa Active Directory tempat perwakilan layanan berada. |
AZURE_CLIENT_ID |
Nama atau ID perwakilan layanan. | |
AZURE_CLIENT_SECRET |
Rahasia yang terkait dengan kepala layanan. | |
Sertifikat | AZURE_TENANT_ID |
ID untuk penyewa Active Directory yang didaftarkan dengan sertifikat. |
AZURE_CLIENT_ID |
ID klien aplikasi yang terkait dengan sertifikat. | |
AZURE_CERTIFICATE_PATH |
Jalur menuju file sertifikat klien. | |
AZURE_CERTIFICATE_PASSWORD |
Kata sandi untuk sertifikat klien. | |
Nama Pengguna / Kata Sandi | AZURE_TENANT_ID |
ID untuk penyewa Active Directory tempat pengguna berada. |
AZURE_CLIENT_ID |
ID klien aplikasi. | |
AZURE_USERNAME |
Nama pengguna untuk proses masuk. | |
AZURE_PASSWORD |
Kata sandi untuk proses masuk. | |
Identitas terkelola | Info masuk tidak diperlukan untuk autentikasi identitas terkelola. Aplikasi harus berjalan pada sumber daya Azure yang dikonfigurasi untuk menggunakan identitas terkelola. Untuk detailnya, lihat Identitas terkelola untuk sumber daya Azure. |
Untuk menyambungkan ke titik akhir cloud atau manajemen selain cloud publik Azure default, atur variabel lingkungan berikut. Alasan paling umum adalah apabila Anda menggunakan Azure Stack, cloud di wilayah geografis yang berbeda, atau model penyebaran klasik.
Variabel lingkungan | Deskripsi |
---|---|
AZURE_ENVIRONMENT |
Nama lingkungan cloud untuk menyambungkan. |
AZURE_AD_RESOURCE |
ID sumber daya Active Directory untuk digunakan saat menyambungkan, sebagai URI ke titik akhir manajemen Anda. |
Saat menggunakan autentikasi berbasis lingkungan, panggil fungsi NewAuthorizerFromEnvironment untuk mendapatkan objek pengotorisasi Anda. Objek ini kemudian diatur pada properti Authorizer
klien untuk memungkinkan mereka mengakses Azure.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := auth.NewAuthorizerFromEnvironment()
Autentikasi di Azure Stack
Untuk mengautentikasi di Azure Stack, Anda perlu mengatur variabel berikut:
Variabel lingkungan | Deskripsi |
---|---|
AZURE_AD_ENDPOINT |
Titik akhir Active Directory. |
AZURE_AD_RESOURCE |
ID sumber daya Active Directory. |
Variabel-variabel ini dapat diambil dari informasi metadata Azure Stack. Untuk mengambil metadata, buka browser web di lingkungan Azure Stack Anda dan gunakan url: (ResourceManagerURL)/metadata/endpoints?api-version=1.0
ResourceManagerURL
bervariasi berdasarkan nama wilayah, nama mesin, dan nama domain yang sepenuhnya memenuhi syarat (FQDN) eksternal penyebaran Azure Stack Anda:
Lingkungan | ResourceManagerURL |
---|---|
Kit Pengembangan | https://management.local.azurestack.external/ |
Sistem Terintegrasi | https://management.(region).ext-(machine-name).(FQDN) |
Untuk informasi selengkapnya mengenai cara menggunakan Azure SDK for Go di Azure Stack, lihat Menggunakan profil versi API dengan Go di Azure Stack
Menggunakan autentikasi berbasis file
Autentikasi berbasis file menggunakan format file yang dihasilkan oleh Azure CLI. Anda dapat dengan mudah membuat file ini saat membuat perwakilan layanan baru dengan parameter --sdk-auth
. Jika Anda berencana menggunakan autentikasi berbasis file, pastikan argumen ini disediakan saat membuat perwakilan layanan. Karena CLI mencetak output ke stdout
, alihkan output ke file.
az ad sp create-for-rbac --role Contributor \
--scopes /subscriptions/<subscription_id> \
--sdk-auth > azure.auth
Atur variabel lingkungan AZURE_AUTH_LOCATION
ke tempat file otorisasi berada. Variabel lingkungan ini dibaca oleh aplikasi, dan kredensial di dalamnya diurai. Jika Anda perlu memilih file otorisasi saat runtime, manipulasi lingkungan program menggunakan fungsi os.Setenv.
Untuk memuat informasi autentikasi, panggil fungsi NewAuthorizerFromFile. Tidak seperti otorisasi berbasis lingkungan, otorisasi berbasis file memerlukan titik akhir sumber daya.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)
Untuk informasi selengkapnya mengenai penggunaan perwakilan layanan serta pengelolaan izin aksesnya, lihat Membuat perwakilan layanan dengan Azure CLI.
Menggunakan autentikasi token perangkat
Jika Anda ingin pengguna masuk secara interaktif, cara terbaik adalah melalui autentikasi token perangkat. Alur autentikasi ini meneruskan token kepada pengguna untuk ditempelkan ke situs masuk Microsoft, di mana mereka kemudian mengautentikasi dengan akun Microsoft Entra. Metode autentikasi ini mendukung akun yang mengaktifkan autentikasi multifaktor, tidak seperti autentikasi nama pengguna/kata sandi standar.
Untuk menggunakan autentikasi token perangkat, buat pengotorisasi DeviceFlowConfig dengan fungsi NewDeviceFlowConfig. Panggil Pengotorisasi pada objek yang dihasilkan untuk memulai proses autentikasi. Autentikasi alur perangkat memblokir eksekusi program hingga seluruh alur autentikasi selesai.
import "github.com/Azure/go-autorest/autorest/azure/auth"
deviceConfig := auth.NewDeviceFlowConfig(applicationID, tenantID)
authorizer, err := deviceConfig.Authorizer()
Menggunakan klien autentikasi
Jika memerlukan jenis autentikasi tertentu dan bersedia agar program Anda melakukan pekerjaan untuk memuat informasi autentikasi dari pengguna, Anda dapat menggunakan klien apa pun yang sesuai dengan antarmuka auth.AuthorizerConfig. Gunakan jenis yang mengimplementasikan antarmuka ini saat Anda:
- Menulis program interaktif
- Menggunakan file konfigurasi khusus
- Memiliki persyaratan yang mencegah penggunaan metode autentikasi bawaan
Peringatan
Jangan pernah mengodekan info masuk Azure secara permanen ke dalam aplikasi. Menempatkan rahasia ke dalam biner aplikasi memudahkan penyerang untuk mengekstraknya, baik aplikasi sedang berjalan maupun tidak. Ini menempatkan semua sumber daya info Azure yang diotorisasi info masuk dalam bahaya!
Tabel berikut mencantumkan jenis di SDK yang sesuai dengan antarmuka AuthorizerConfig
.
Jenis autentikasi | Jenis pengotorisasi |
---|---|
Autentikasi berbasis sertifikat | ClientCertificateConfig |
Informasi masuk klien | ClientCredentialsConfig |
Identitas terkelola untuk sumber daya Azure | MSIConfig |
Nama pengguna/kata sandi | UsernamePasswordConfig |
Buat pengautentikasi dengan fungsi New
terkait, kemudian panggil Authorize
pada objek yang dihasilkan untuk mengautentikasi. Misalnya, untuk menggunakan autentikasi berbasis sertifikat:
import "github.com/Azure/go-autorest/autorest/azure/auth"
certificateAuthorizer := auth.NewClientCertificateConfig(certificatePath, certificatePassword, clientID, tenantID)
authorizerToken, err := certificateAuthorizer.Authorizer()
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk