Ověřování pomocí sady Azure SDK for Go s využitím spravované identity

V tomto kurzu nakonfigurujete virtuální počítač Azure se spravovanou identitou pro ověření v Azure pomocí sady Azure SDK for Go.

Spravované identity eliminují potřebu správy přihlašovacích údajů tím, že poskytují identitu přímo prostředku Azure. Oprávnění přiřazená identitě udělují prostředku přístup k dalším prostředkům Azure, které podporují spravované identity. Odebrání potřeb pro předání přihlašovacích údajů do aplikace

Podle tohoto kurzu přiřaďte spravované identitě virtuálnímu počítači a ověřte ji do Azure pomocí spravované identity.

Požadavky

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
  • Go installed: Version 1.18 or above

1. Konfigurace prostředí

Než začnete, budete muset nakonfigurovat své prostředí.

Nasazení virtuálního počítače

Nasaďte virtuální počítač do Azure. Spuštěním kódu Go vytvoříte tajný kód v trezoru klíčů Azure z daného virtuálního počítače.

  1. Vytvořte skupinu prostředků Azure.

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

    --location Změňte parametr na odpovídající hodnotu pro vaše prostředí.

  2. Vytvořte virtuální počítač 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>
    

    <password> Nahraďte heslo.

Další informace o dalších službách, které podporují spravované identity, najdete v tématu Služby, které podporují spravované identity pro prostředky Azure.

Nasazení instance trezoru klíčů

Spuštěním následujícího příkazu vytvořte novou instanci služby Azure Key Vault:

az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure

Nahraďte <keyVaultName> globálně jedinečným názvem.

2. Vytvoření spravované identity

V Azure se podporují dva typy spravovaných identit; přiřazené systémem a přiřazené uživatelem.

Identity přiřazené systémem jsou přímo připojené k prostředku Azure a jsou omezené pouze na tento prostředek. Identity přiřazené uživatelem jsou samostatné prostředky, které je možné přiřadit k jednomu nebo více prostředkům Azure.

Další informace o rozdílu mezi přiřazenými systémem a přiřazenými uživateli najdete v tématu Typy spravovaných identit.

Vyberte jednu z následujících možností:

Možnost 1: Vytvoření identity přiřazené systémem

Spuštěním následujících příkazů vytvořte spravovanou identitu přiřazenou systémem:

az vm identity assign -g go-on-azure -n go-on-azure-vm

Možnost 2: Vytvoření identity přiřazené uživatelem

Spuštěním následujících příkazů vytvořte spravovanou identitu přiřazenou uživatelem:

az identity create -g go-on-azure -n GoUserIdentity

az vm identity assign -g go-on-azure -n go-on-azure-vm --identities <UserIdentityId>

Nahraďte <UserIdentityId> ID spravované identity uživatele.

Další informace najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači Azure pomocí Azure CLI.

3. Přiřazení role spravované identitě

Po vytvoření spravované identity přiřadíte role k udělení oprávnění identity pro přístup k dalším prostředkům Azure. V tomto kurzu přiřadíte předdefinované role Key Vault Contributor spravované identitě, aby aplikace Go v instanci trezoru klíčů vytvořila tajný klíč.

Vyberte jednu z následujících možností:

Možnost 1: Přiřazení role k identitě přiřazené systémem

Spuštěním následujících příkazů přiřaďte Key Vault Contributor roli spravované identitě přiřazené systémem:

#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>'

Možnost 2: Přiřazení role k identitě přiřazené uživatelem

Spuštěním následujících příkazů přiřaďte Key Vault Contributor roli spravované identitě přiřazené uživatelem:

#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>'

Další informace o předdefinovaných rolích najdete v předdefinovaných rolích Azure.

4. Vytvoření tajného klíče trezoru klíčů pomocí Go

Další SSH do virtuálního počítače Azure, nainstalujte Go a sestavili balíček Go.

Instalace Go na virtuální počítač Azure

  1. Získejte veřejnou IP adresu virtuálního počítače Azure.

    az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
    
  2. Připojte se k virtuálnímu počítači Azure pomocí SSH.

    ssh azureuser@<public-ip>
    

    Nahraďte <public-ip> veřejnou IP adresou virtuálního počítače Azure.

  3. Nainstalovat Go

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

Vytvoření balíčku Go

  1. Vytvořte nový adresář s názvem go-on-azure v domovském adresáři.

    mkidr ~/go-on-azure
    
  2. Přejděte do go-on-azure adresáře.

    cd ~/go-on-azure
    
  3. Spuštěním go mod init vytvořte go.mod soubor.

    go mod init go-on-azure
    
  4. Spusťte instalaci go get požadovaných modulů Go.

    go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
    
  5. main.go Vytvořte soubor a zkopírujte do něj následující kód.

    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()
    }
    
    

Před spuštěním kódu vytvořte proměnnou prostředí s názvem KEY_VAULT_NAME. Nastavte hodnotu proměnné prostředí na název služby Azure Key Vault, který jste vytvořili dříve. Nahraďte <KeyVaultName> názvem vaší instance služby Azure Key Vault.

export KEY_VAULT_NAME=<KeyVaultName>

Potom spusťte go run příkaz pro vytvoření tajného klíče trezoru klíčů.

go run main.go

Ověřte, že se tajný klíč trezoru klíčů vytvořil pomocí Azure PowerShellu, Azure CLI nebo webu Azure Portal.

Další kroky