Verificatie met de Azure SDK voor Go met behulp van een beheerde identiteit
In deze zelfstudie configureert u een virtuele Azure-machine met een beheerde identiteit voor verificatie bij Azure met behulp van de Azure SDK voor Go.
Met beheerde identiteiten hoeft u geen referenties te beheren door een identiteit rechtstreeks aan een Azure-resource te verstrekken. Machtigingen die zijn toegewezen aan de identiteit verlenen de resource toegang tot andere Azure-resources die beheerde identiteiten ondersteunen, waardoor u geen referenties hoeft door te geven in uw toepassing. U kunt beheerde identiteiten gebruiken om door Azure gehoste apps te verifiëren en autoriseren met andere Azure-resources.
Volg deze zelfstudie om een beheerde identiteit toe te wijzen aan een virtuele machine en te verifiëren bij Azure met behulp van een beheerde identiteit.
Vereisten
- Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
Als u de Azure CLI wilt gebruiken om de stappen in dit artikel uit te voeren:
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Als u Azure PowerShell wilt gebruiken om de stappen in dit artikel uit te voeren:
- Als u ervoor kiest om Azure PowerShell lokaal te gebruiken:
- Installeer de nieuwste versie van de Az PowerShell-module.
- Maak verbinding met uw Azure-account met de cmdlet Connect-AzAccount.
- Als u ervoor kiest om Azure Cloud Shell te gebruiken:
- Raadpleeg Overzicht van Azure Cloud Shell voor meer informatie.
- Als u ervoor kiest om Azure PowerShell lokaal te gebruiken:
1. Azure-resources maken
Voordat u begint, moet u een nieuwe resourcegroep, virtuele machine en sleutelkluisexemplaren maken.
Een virtuele machine implementeren
Een virtuele machine implementeren in Azure. U voert de Go-code uit om een geheim te maken in Azure Key Vault vanaf die virtuele machine.
Maak een Azure-resourcegroep.
az group create --name go-on-azure --location eastus
Wijzig de
--location
parameter in de juiste waarde voor uw omgeving.Maak de virtuele Azure-machine.
az vm create \ --resource-group go-on-azure \ --name go-on-azure-vm \ --image canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest \ --admin-username azureuser \ --admin-password <password>
Vervang het
<password>
wachtwoord.
Zie Services die beheerde identiteiten ondersteunen voor Azure-resources voor meer informatie over andere services die beheerde identiteiten ondersteunen.
Een sleutelkluisexemplaren implementeren
Maak een nieuw Azure Key Vault-exemplaar door de volgende opdracht uit te voeren:
az keyvault create --location eastus --name <keyVaultName> --resource-group go-on-azure --enable-rbac-authorization
Vervang door <keyVaultName>
een wereldwijd unieke naam.
2. Een beheerde identiteit maken
Er worden twee typen beheerde identiteiten ondersteund in Azure; door het systeem toegewezen en door de gebruiker toegewezen.
Door het systeem toegewezen identiteiten worden rechtstreeks gekoppeld aan een Azure-resource en beperkt tot alleen die resource. Door de gebruiker toegewezen identiteiten zijn zelfstandige resources die kunnen worden toegewezen aan een of meer Azure-resources.
Kies een van de volgende opties:
- Optie 1: Een door het systeem toegewezen identiteit maken
- Optie 2: Een door de gebruiker toegewezen identiteit maken
Optie 1: Een door het systeem toegewezen identiteit maken
Voer de volgende opdrachten uit om een door het systeem toegewezen beheerde identiteit te maken:
az vm identity assign -g go-on-azure -n go-on-azure-vm
Optie 2: Een door de gebruiker toegewezen identiteit maken
Voer de volgende opdrachten uit om een door de gebruiker toegewezen beheerde identiteit te maken:
az identity create -g go-on-azure -n GoUserIdentity
az vm identity assign -g go-on-azure -n go-on-azure-vm --identities GoUserIdentity
Zie Beheerde identiteiten configureren voor Azure-resources op een Azure-VM met behulp van Azure CLI voor meer informatie.
3. Wijs een rol toe aan de beheerde identiteit
Nadat een beheerde identiteit is gemaakt, wijst u rollen toe om de identiteitsmachtigingen te verlenen voor toegang tot andere Azure-resources. In deze zelfstudie wijst u de ingebouwde rol van Key Vault Secrets Officer
de beheerde identiteit toe, zodat de Go-toepassing een geheim kan maken binnen het sleutelkluisexemplaren.
Kies een van de volgende opties:
- Optie 1: Een rol toewijzen aan een door het systeem toegewezen identiteit
- Optie 2: Een rol toewijzen aan een door de gebruiker toegewezen identiteit
Optie 1: Een rol toewijzen aan een door het systeem toegewezen identiteit
Voer de volgende opdrachten uit om de rol toe te wijzen aan de door het Key Vault Secrets Officer
systeem toegewezen beheerde identiteit:
#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
az keyvault show --name <keyVaultName> --query id -o tsv
az role assignment create --assignee <principalId> --role "Key Vault Secrets Officer" --scope <keyVaultId>
Vervang in de tweede opdracht door <keyVaultName>
de naam van uw sleutelkluis. Vervang in de laatste opdracht <principalId>
de <keyVaultId>
uitvoer van de eerste twee opdrachten.
Optie 2: Een rol toewijzen aan een door de gebruiker toegewezen identiteit
Voer de volgende opdrachten uit om de rol toe te wijzen aan de door de Key Vault Secrets Officer
gebruiker toegewezen beheerde identiteit:
#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 <keyVaultName> --query id -o tsv
az role assignment create --assignee <principalId> --role "Key Vault Secrets Officer" --scope <keyVaultId>
Vervang in de tweede opdracht door <keyVaultName>
de naam van uw sleutelkluis. Vervang in de laatste opdracht <principalId>
de <keyVaultId>
uitvoer van de eerste twee opdrachten.
Zie Toegang bieden tot Key Vault-sleutels, -certificaten en -geheimen met een op rollen gebaseerd toegangsbeheer van Azure voor meer informatie over ingebouwde rollen in Azure Key Vault. Zie ingebouwde Azure-rollen voor meer informatie over ingebouwde rollen in Azure.
4. Een sleutelkluisgeheim maken met Go
Installeer Go en bouw het Go-pakket in de volgende SSH op de virtuele Azure-machine.
Go installeren op de Virtuele Azure-machine
Haal het openbare IP-adres van de virtuele Azure-machine op.
az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
SSH naar de Virtuele Azure-machine.
ssh azureuser@<public-ip>
Vervang door
<public-ip>
het openbare IP-adres van de Azure-VM.Go installeren
sudo add-apt-repository ppa:longsleep/golang-backports; sudo apt update; sudo apt install golang-go -y
Het Go-pakket maken
Maak een nieuwe map met de naam
go-on-azure
in uw basismap.mkdir ~/go-on-azure
Ga naar de
go-on-azure
map.cd ~/go-on-azure
Voer
go mod init
uit om hetgo.mod
bestand te maken.go mod init go-on-azure
Voer deze opdracht uit
go get
om de vereiste Go-modules te installeren.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets"
Maak een
main.go
bestand en kopieer de volgende code erin.package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/security/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) } params := azsecrets.SetSecretParameters{Value: &secretValue} resp, err := client.SetSecret(context.TODO(), secretName, params, 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() }
Maak een omgevingsvariabele met de naam
KEY_VAULT_NAME
. Vervang door<keyVaultName>
de naam van uw Azure Key Vault-exemplaar.export KEY_VAULT_NAME=<keyVaultName>
Voer de opdracht uit
go run
om een sleutelkluisgeheim te maken.go run main.go
Bij succes ziet de uitvoer er ongeveer als volgt uit:
Name: https://<keyVaultName>.vault.azure.net/secrets/quickstart-secret/0e0b941824c4493bb3b83045a31b2bf7, Value: createdWithGO
U kunt controleren of het sleutelkluisgeheim is gemaakt met behulp van Azure PowerShell, Azure CLI of Azure Portal.
Notitie
Als u de Azure CLI of Azure PowerShell gebruikt, moet u ervoor zorgen dat uw Azure-gebruikersaccount een rol heeft toegewezen waarmee geheimen in de sleutelkluis kunnen worden gelezen, zoals Key Vault Secrets Officer of Key Vault Secrets User.
5. Resources opschonen
Als u de Azure-resources die u in dit artikel hebt gemaakt niet meer wilt gebruiken, is het een goed idee om ze te verwijderen. Als u ongebruikte resources verwijdert, voorkomt u doorlopende kosten en blijft uw abonnement overzichtelijk. De eenvoudigste manier om de resources te verwijderen die u in deze zelfstudie hebt gebruikt, is door de resourcegroep te verwijderen.
az group delete --name go-on-azure --force-deletion-types Microsoft.Compute/virtualMachines --yes
Het force-deletion-type
argument vertelt de opdracht om het verwijderen van VM's in de resourcegroep af te dwingen. Het --yes
argument geeft aan dat de opdracht niet om bevestiging moet vragen.
Met de voorgaande opdracht wordt een voorlopig verwijderen uitgevoerd op de sleutelkluis in de resourcegroep. Als u het definitief uit uw abonnement wilt verwijderen, voert u de volgende opdracht in:
az keyvault purge --name <keyVaultName> --no-wait
Vervang <keyVaultName>
door de naam van uw sleutelkluis.