Bagikan melalui


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.

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