Delen via


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.

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.

  1. Maak een Azure-resourcegroep.

    az group create --name go-on-azure --location eastus
    

    Wijzig de --location parameter in de juiste waarde voor uw omgeving.

  2. 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.

Bekijk beheerde identiteitstypen voor meer informatie over het verschil tussen door het systeem toegewezen en door de gebruiker toegewezen identiteiten.

Kies een van de volgende opties:

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

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

  1. 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
    
  2. SSH naar de Virtuele Azure-machine.

    ssh azureuser@<public-ip>
    

    Vervang door <public-ip> het openbare IP-adres van de Azure-VM.

  3. Go installeren

    sudo add-apt-repository ppa:longsleep/golang-backports;
    sudo apt update;
    sudo apt install golang-go -y
    

Het Go-pakket maken

  1. Maak een nieuwe map met de naam go-on-azure in uw basismap.

    mkdir ~/go-on-azure
    
  2. Ga naar de go-on-azure map.

    cd ~/go-on-azure
    
  3. Voer go mod init uit om het go.mod bestand te maken.

    go mod init go-on-azure
    
  4. 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"
    
  5. 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()
    }
    
    
  6. 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>
    
  7. 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.

Volgende stappen