Autentisering med Azure SDK för Go med hjälp av en hanterad identitet
I den här självstudien konfigurerar du en virtuell Azure-dator med en hanterad identitet för att autentisera till Azure med hjälp av Azure SDK för Go.
Hanterade identiteter eliminerar behovet av att hantera autentiseringsuppgifter genom att tillhandahålla en identitet direkt till en Azure-resurs. Behörigheter som tilldelats identiteten ger resursen åtkomst till andra Azure-resurser som stöder hanterade identiteter. Tar bort behovet av att skicka autentiseringsuppgifter till ditt program.
Följ den här självstudien om du vill tilldela en hanterad identitet till en virtuell dator och autentisera till Azure med hjälp av en hanterad identitet.
Förutsättningar
- Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Go installerat: Version 1.18 eller senare
1. Konfigurera din miljö
Innan du börjar måste du konfigurera din miljö.
Distribuera en virtuell dator
Distribuera en virtuell dator till Azure. Du kör Go-koden för att skapa en hemlighet i Azure Key Vault från den virtuella datorn.
Skapa en Azure-resursgrupp.
az group create --name go-on-azure --location eastus
Ändra parametern
--location
till lämpligt värde för din miljö.Skapa den virtuella Azure-datorn.
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>
<password>
Ersätt lösenordet.
Mer information om andra tjänster som stöder hanterade identiteter finns i Tjänster som stöder hanterade identiteter för Azure-resurser.
Distribuera en key vault-instans
Skapa en ny Azure Key Vault-instans genom att köra följande kommando:
az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure
Ersätt <keyVaultName>
med ett globalt unikt namn.
2. Skapa en hanterad identitet
Två typer av hanterade identiteter stöds i Azure. systemtilldelad och användartilldelad.
Systemtilldelade identiteter är direkt kopplade till en Azure-resurs och begränsas endast till den resursen. Användartilldelade identiteter är fristående resurser som kan tilldelas till en eller flera Azure-resurser.
Mer information om skillnaden mellan systemtilldelade och användartilldelade finns i Hanterade identitetstyper.
Välj ett av följande alternativ:
Alternativ 1: Skapa en systemtilldelad identitet
Kör följande kommandon för att skapa en systemtilldelad hanterad identitet:
az vm identity assign -g go-on-azure -n go-on-azure-vm
Alternativ 2: Skapa en användartilldelad identitet
Kör följande kommandon för att skapa en användartilldelad hanterad identitet:
az identity create -g go-on-azure -n GoUserIdentity
az vm identity assign -g go-on-azure -n go-on-azure-vm --identities <UserIdentityId>
Ersätt <UserIdentityId>
med den hanterade användaridentitetens ID.
Mer information finns i Konfigurera hanterade identiteter för Azure-resurser på en virtuell Azure-dator med Hjälp av Azure CLI.
3. Tilldela en roll till den hanterade identiteten
När en hanterad identitet har skapats tilldelar du roller för att ge identitetsbehörighet för att få åtkomst till andra Azure-resurser. I den här självstudien tilldelar du den inbyggda rollen Key Vault Contributor
för den hanterade identiteten så att Go-programmet kan skapa en hemlighet i key vault-instansen.
Välj ett av följande alternativ:
- Alternativ 1: Tilldela en roll till en systemtilldelad identitet
- Alternativ 2: Tilldela en roll till en användartilldelad identitet
Alternativ 1: Tilldela en roll till en systemtilldelad identitet
Kör följande kommandon för att tilldela Key Vault Contributor
rollen till den systemtilldelade hanterade identiteten:
#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>'
Alternativ 2: Tilldela en roll till en användartilldelad identitet
Kör följande kommandon för att tilldela Key Vault Contributor
rollen till den användartilldelade hanterade identiteten:
#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>'
Mer information om inbyggda roller finns i inbyggda Azure-roller.
4. Skapa en nyckelvalvshemlighet med Go
Nästa SSH i den virtuella Azure-datorn installerar du Go och skapar Go-paketet.
Installera Go på den virtuella Azure-datorn
Hämta den offentliga IP-adressen för den virtuella Azure-datorn.
az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
SSH till den virtuella Azure-datorn.
ssh azureuser@<public-ip>
Ersätt
<public-ip>
med den offentliga IP-adressen för den virtuella Azure-datorn.Installera Go
sudo add-apt-repository ppa:longsleep/golang-backports; sudo apt update; sudo apt install golang-go -y
Skapa Go-paketet
Skapa en ny katalog med namnet
go-on-azure
i din hemkatalog.mkidr ~/go-on-azure
Ändra till
go-on-azure
katalogen.cd ~/go-on-azure
Kör
go mod init
för att skapago.mod
filen.go mod init go-on-azure
Kör
go get
för att installera nödvändiga Go-moduler.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
Skapa en
main.go
fil och kopiera följande kod till den.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() }
Innan du kör koden skapar du en miljövariabel med namnet KEY_VAULT_NAME
. Ange miljövariabelns värde till namnet på det Azure Key Vault som skapades tidigare. Ersätt <KeyVaultName>
med namnet på din Azure Key Vault-instans.
export KEY_VAULT_NAME=<KeyVaultName>
go run
Kör sedan kommandot för att skapa en nyckelvalvshemlighet.
go run main.go
Kontrollera att nyckelvalvshemligheten har skapats med Hjälp av Azure PowerShell, Azure CLI eller Azure-portalen.
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för