Autentikasi dengan Azure SDK for Go menggunakan identitas terkelola
Dalam tutorial ini, Anda akan mengonfigurasi komputer virtual Azure dengan identitas terkelola untuk mengautentikasi ke Azure menggunakan Azure SDK for Go.
Identitas terkelola menghilangkan kebutuhan untuk mengelola kredensial dengan menyediakan identitas secara langsung ke sumber daya Azure. Izin yang ditetapkan ke identitas memberikan akses sumber daya ke sumber daya Azure lainnya yang mendukung identitas terkelola. Menghilangkan tugas Anda untuk meneruskan kredensial ke aplikasi Anda.
Ikuti tutorial ini untuk menetapkan identitas terkelola ke komputer virtual dan mengautentikasi ke Azure menggunakan identitas terkelola.
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
- Go yang terinstal: Versi 1.18 atau yang lebih baru
1. Mengonfigurasi lingkungan Anda
Sebelum memulai, Anda harus mengonfigurasi lingkungan Anda.
Menyebarkan komputer virtual
Menyebarkan sumber daya mesin virtual. Anda akan menjalankan kode Go untuk membuat rahasia di brankas kunci Azure dari komputer virtual itu.
Buat grup sumber daya Azure.
az group create --name go-on-azure --location eastus
Ubah parameter
--location
ke nilai yang sesuai untuk lingkungan Anda.Buat mesin virtual Azure.
az vm create \ --resource-group go-on-azure \ --name go-on-azure-vm \ --image canonical:ubuntuserver:19.04:latest \ --admin-username azureuser \ --admin-password <password>
Ganti kata sandi Anda
<password>
.
Untuk mempelajari selengakpnya mengenai layanan lain yang mendukung identitas terkelola, lihat Layanan yang mendukung identitas terkelola untuk sumber daya Azure.
Sebarkan instans kunci brankas
Buat instans brankas kunci Azure baru dengan menjalankan perintah berikut:
az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure
Ganti <keyVaultName>
dengan nama unik global.
2. Membuat identitas terkelola
Azure mendukung dua jenis identitas terkelola: ditetapkan oleh sistem dan ditetapkan oleh pengguna.
Identitas yang ditetapkan sistem secara langsung dilampirkan ke sumber daya Azure dan terbatas hanya pada sumber daya tersebut. Identitas yang ditetapkan pengguna adalah sumber daya yang berdiri sendiri yang dapat ditetapkan ke satu sumber daya Azure atau lebih.
Untuk mempelajari lebih lanjut tentang perbedaan antara yang ditetapkan sistem dan yang ditetapkan pengguna, lihat Tipe identitas terkelola.
Pilih salah satu opsi berikut:
- Opsi 1: Membuat identitas terkelola yang ditetapkan sistem
- Opsi 2: Membuat identitas terkelola yang ditetapkan pengguna
Opsi 1: Membuat identitas terkelola yang ditetapkan sistem
Jalankan perintah berikut untuk membuat identitas terkelola yang ditetapkan sistem:
az vm identity assign -g go-on-azure -n go-on-azure-vm
Opsi 2: Membuat identitas terkelola yang ditetapkan pengguna
Jalankan perintah berikut untuk membuat identitas terkelola yang ditetapkan pengguna:
az identity create -g go-on-azure -n GoUserIdentity
az vm identity assign -g go-on-azure -n go-on-azure-vm --identities <UserIdentityId>
Ganti <UserIdentityId>
dengan ID identitas pengguna terkelola.
Untuk mempelajari selengkapnya, periksa Mengonfigurasi Identitas terkelola untuk sumber daya Azure di komputer virtual Azure menggunakan Azure CLI.
3. Menetapkan peran untuk identitas terkelola
Setelah identitas terkelola dibuat, Anda menetapkan peran untuk memberikan izin identitas untuk mengakses sumber daya Azure lainnya. Dalam tutorial ini, Anda akan menetapkan peran bawaan dar Key Vault Contributor
ke identitas terkelola sehingga aplikasi Go dapat membuat rahasia dalam instans brankas kunci.
Pilih salah satu opsi berikut:
- Opsi 1: Tetapkan peran ke identitas yang ditetapkan sistem
- Opsi 2: Menetapkan peran ke identitas terkelola yang ditetapkan pengguna
Opsi 1: Tetapkan peran ke identitas yang ditetapkan sistem
Jalankan perintah berikut untuk menetapkan peran Key Vault Contributor
ke identitas terkelola yang ditetapkan sistem:
#output system identity principal ID
az vm identity show --name go-on-azure-vm --resource-group go-on-azure --query 'principalId' -o tsv
#output key vault ID
scope=$(az keyvault show --name go-on-azure-kv --query id -o tsv)
az role assignment create --assignee '<principalId>' --role 'Key Vault Contributor' --scope '<keyVaultId>'
Opsi 2: Menetapkan peran ke identitas terkelola yang ditetapkan pengguna.
Jalankan perintah berikut untuk menetapkan peran Key Vault Contributor
ke identitas terkelola yang ditetapkan pengguna:
#output user identity principal ID
az identity show --resource-group go-on-azure --name GoUserIdentity --query 'principalId' -o tsv
#output key vault ID
az keyvault show --name go-on-azure-kv --query id -o tsv
az role assignment create --assignee '<principalId>' --role 'Key Vault Contributor' --scope '<keyVaultId>'
Untuk mempelajari selengkapnya tentang peran bawaan, lihat Peran bawaan Azure.
4. Membuat rahasia brankas kunci dengan Go
Selanjutnya SSH ke dalam mesin virtual Azure, instal Go, dan bangun paket Go.
Instal Go di Azure VM
Dapatkan alamat IP publik komputer virtual Azure.
az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
SSH ke dalam Azure VM.
ssh azureuser@<public-ip>
Mengganti
<public-ip>
dengan alamat IP publik dari VM Azure.Menginstal Go
sudo add-apt-repository ppa:longsleep/golang-backports; sudo apt update; sudo apt install golang-go -y
Membuat paket Go
Buat direktori baru dengan nama
go-on-azure
di direktori beranda Anda.mkidr ~/go-on-azure
Ubah ke direktori
go-on-azure
.cd ~/go-on-azure
Jalankan
go mod init
untuk membuat filego.mod
.go mod init go-on-azure
Jalankan
go get
untuk menginstal modul Go yang diperlukan.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
Buat file
main.go
dan salin kode berikut ke dalam file tersebut.package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets" ) func createSecret() { keyVaultName := os.Getenv("KEY_VAULT_NAME") secretName := "quickstart-secret" secretValue := "createdWithGO" keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName) cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("failed to obtain a credential: %v", err) } client, err := azsecrets.NewClient(keyVaultUrl, cred, nil) if err != nil { log.Fatalf("failed to create a client: %v", err) } resp, err := client.SetSecret(context.TODO(), secretName, secretValue, nil) if err != nil { log.Fatalf("failed to create a secret: %v", err) } fmt.Printf("Name: %s, Value: %s\n", *resp.ID, *resp.Value) } func main() { createSecret() }
Sebelum Anda menjalankan kode, buat variabel lingkungan bernama KEY_VAULT_NAME
. Atur nilai variabel lingkungan ke nama Azure Key Vault yang dibuat sebelumnya. Ganti <KeyVaultName>
dengan nama instans Azure Key Vault Anda.
export KEY_VAULT_NAME=<KeyVaultName>
Selanjutnya, jalankan perintah go run
untuk membuat rahasia brankas kunci.
go run main.go
Pastikan rahasia brankas kunci telah dibuat menggunakan Azure PowerShell, Azure CLI, atau portal Microsoft Azure.
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