Sdílet prostřednictvím


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, a tím odeberete nutnost předat přihlašovací údaje ve vaší aplikaci. Spravované identity můžete použít k ověřování a autorizaci aplikací hostovaných v Azure s jinými prostředky Azure.

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.
  • Pokud chcete použít Azure CLI ke spuštění kroků v tomto článku:

  • Pokud chcete ke spuštění kroků v tomto článku použít Azure PowerShell:

1. Vytvoření prostředků Azure

Než začnete, musíte vytvořit novou skupinu prostředků, virtuální počítač a instanci trezoru klíčů.

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:0001-com-ubuntu-server-jammy:22_04-lts: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 --enable-rbac-authorization

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 GoUserIdentity

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 Secrets Officer 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 Secrets Officer 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
az keyvault show --name <keyVaultName> --query id -o tsv

az role assignment create --assignee <principalId> --role "Key Vault Secrets Officer" --scope <keyVaultId>

V druhém příkazu nahraďte <keyVaultName> názvem vašeho trezoru klíčů. V posledním příkazu nahraďte <principalId> výstupem <keyVaultId> z prvních dvou příkazů.

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 Secrets Officer 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 <keyVaultName> --query id -o tsv

az role assignment create --assignee <principalId> --role "Key Vault Secrets Officer" --scope <keyVaultId>

V druhém příkazu nahraďte <keyVaultName> názvem vašeho trezoru klíčů. V posledním příkazu nahraďte <principalId> výstupem <keyVaultId> z prvních dvou příkazů.

Další informace o předdefinovaných rolích ve službě Azure Key Vault najdete v tématu Poskytnutí přístupu k klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure. Další informace o předdefinovaných rolích v Azure najdete v tématu Předdefinované role 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.

    mkdir ~/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/security/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/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. Vytvořte proměnnou prostředí s názvem KEY_VAULT_NAME. Nahraďte <keyVaultName> názvem vaší instance služby Azure Key Vault.

    export KEY_VAULT_NAME=<keyVaultName>
    
  7. Spuštěním go run příkazu vytvořte tajný klíč trezoru klíčů.

    go run main.go
    

    Při úspěchu se výstup podobá následujícímu:

    Name: https://<keyVaultName>.vault.azure.net/secrets/quickstart-secret/0e0b941824c4493bb3b83045a31b2bf7, Value: createdWithGO
    

Tajný klíč trezoru klíčů můžete ověřit pomocí Azure PowerShellu, Azure CLI nebo webu Azure Portal.

Poznámka:

Pokud používáte Azure CLI nebo Azure PowerShell, musíte se ujistit, že je vašemu uživatelskému účtu Azure přiřazená role, která jí umožňuje číst tajné kódy v trezoru klíčů, jako je "Key Vault Secrets Officer" nebo "Key Vault Secrets User".

5. Vyčištění prostředků

Pokud už nechcete používat prostředky Azure, které jste vytvořili v tomto článku, je vhodné je odstranit. Odstranění nepoužívaných prostředků vám pomůže vyhnout se průběžným poplatkům a udržovat vaše předplatné přehledné. Nejjednodušší způsob, jak odstranit prostředky, které jste použili v tomto kurzu, je odstranit skupinu prostředků.

az group delete --name go-on-azure --force-deletion-types Microsoft.Compute/virtualMachines --yes

Argument force-deletion-type říká příkazu, aby vynutil odstranění virtuálních počítačů ve skupině prostředků. Argument --yes říká příkazu, aby nepožádá o potvrzení.

Předchozí příkaz provede obnovitelné odstranění trezoru klíčů ve skupině prostředků. Pokud ho chcete trvale odebrat z předplatného, zadejte následující příkaz:

az keyvault purge --name <keyVaultName> --no-wait

Nahraďte <keyVaultName> názvem trezoru klíčů.

Další kroky