Hitelesítés a Go-hoz készült Azure SDK-val felügyelt identitás használatával

Ebben az oktatóanyagban egy felügyelt identitással rendelkező Azure-beli virtuális gépet fog konfigurálni az Azure-beli hitelesítéshez az Azure SDK for Go használatával.

A felügyelt identitások nem igénylik a hitelesítő adatok kezelését azáltal, hogy egy identitást közvetlenül egy Azure-erőforrásnak adnak meg. Az identitáshoz rendelt engedélyek hozzáférést biztosítanak az erőforrásnak a felügyelt identitásokat támogató egyéb Azure-erőforrásokhoz. Nem szükséges hitelesítő adatokat átadnia az alkalmazásnak.

Ezt az oktatóanyagot követve hozzárendelhet egy felügyelt identitást egy virtuális géphez, és felügyelt identitással hitelesítheti magát az Azure-ban.

Előfeltételek

  • Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.

1. A környezet konfigurálása

A kezdés előtt konfigurálnia kell a környezetet.

Virtuális gép üzembe helyezése

Virtuális gép üzembe helyezése az Azure-ban. A Go-kódot futtatva létrehoz egy titkos kulcsot az Azure Key Vaultban a virtuális gépről.

  1. Azure-erőforráscsoport létrehozása

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

    Módosítsa a paramétert --location a környezetének megfelelő értékre.

  2. Hozza létre az Azure-beli virtuális gépet.

    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>
    

    Cserélje le a <password> jelszót.

A felügyelt identitásokat támogató egyéb szolgáltatásokról további információt az Azure-erőforrások felügyelt identitását támogató szolgáltatások című témakörben talál.

Key Vault-példány üzembe helyezése

Hozzon létre egy új Azure Key Vault-példányt az alábbi parancs futtatásával:

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

Cserélje le <keyVaultName> globálisan egyedi névre.

2. Felügyelt identitás létrehozása

Az Azure kétféle felügyelt identitást támogat; rendszer által hozzárendelt és felhasználó által hozzárendelt.

A rendszer által hozzárendelt identitások közvetlenül egy Azure-erőforráshoz vannak csatolva, és csak erre az erőforrásra korlátozódnak. A felhasználó által hozzárendelt identitások önálló erőforrások, amelyek egy vagy több Azure-erőforráshoz rendelhetők.

Ha többet szeretne megtudni a rendszer által hozzárendelt és a felhasználó által hozzárendelt identitástípusok közötti különbségről, tekintse meg a felügyelt identitástípusokat.

Válasszon az alábbi lehetőségek közül:

1. lehetőség: Rendszer által hozzárendelt identitás létrehozása

Futtassa a következő parancsokat egy rendszer által hozzárendelt felügyelt identitás létrehozásához:

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

2. lehetőség: Felhasználó által hozzárendelt identitás létrehozása

Futtassa a következő parancsokat egy felhasználó által hozzárendelt felügyelt identitás létrehozásához:

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

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

Cserélje le <UserIdentityId> a felügyelt felhasználói identitás azonosítójára.

További információ: Felügyelt identitások konfigurálása Azure-erőforrásokhoz azure-beli virtuális gépen az Azure CLI használatával.

3. Szerepkör hozzárendelése a felügyelt identitáshoz

A felügyelt identitás létrehozása után szerepköröket rendel hozzá, hogy az identitásengedélyeket más Azure-erőforrásokhoz is elérhesse. Ebben az oktatóanyagban a felügyelt identitás beépített szerepkörét Key Vault Contributor rendeli hozzá, hogy a Go-alkalmazás létrehozhasson egy titkos kulcsot a Key Vault-példányban.

Válasszon az alábbi lehetőségek közül:

1. lehetőség: Szerepkör hozzárendelése egy rendszer által hozzárendelt identitáshoz

Futtassa a következő parancsokat a Key Vault Contributor szerepkör a rendszer által hozzárendelt felügyelt identitáshoz való hozzárendeléséhez:

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

2. lehetőség: Szerepkör hozzárendelése felhasználó által hozzárendelt identitáshoz

Futtassa a következő parancsokat a Key Vault Contributor szerepkör felhasználó által hozzárendelt felügyelt identitáshoz való hozzárendeléséhez:

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

A beépített szerepkörökről az Azure beépített szerepköreiből tudhat meg többet.

4. Key Vault-titkos kulcs létrehozása a Go használatával

Következő SSH az Azure-beli virtuális gépre, telepítse a Go-t, és építette ki a Go-csomagot.

A Go telepítése az Azure-beli virtuális gépen

  1. Kérje le az Azure-beli virtuális gép nyilvános IP-címét.

    az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
    
  2. SSH az Azure-beli virtuális gépre.

    ssh azureuser@<public-ip>
    

    Cserélje le <public-ip> az Azure-beli virtuális gép nyilvános IP-címére.

  3. A Go telepítése

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

A Go-csomag létrehozása

  1. Hozzon létre egy új könyvtárat a kezdőkönyvtárban lévő névvel go-on-azure .

    mkidr ~/go-on-azure
    
  2. Váltson a könyvtárra go-on-azure .

    cd ~/go-on-azure
    
  3. Futtassa go mod init a go.mod fájl létrehozásához.

    go mod init go-on-azure
    
  4. Futtassa go get a szükséges Go-modulok telepítéséhez.

    go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
    
  5. Hozzon létre egy main.go fájlt, és másolja be a következő kódot.

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

A kód futtatása előtt hozzon létre egy környezeti változót .KEY_VAULT_NAME Állítsa a környezeti változó értékét a korábban létrehozott Azure Key Vault nevére. Cserélje le <KeyVaultName> az Azure Key Vault-példány nevére.

export KEY_VAULT_NAME=<KeyVaultName>

Ezután futtassa go run a parancsot egy kulcstartó titkos kulcsának létrehozásához.

go run main.go

Ellenőrizze, hogy a kulcstartó titkos kódja az Azure PowerShell, az Azure CLI vagy az Azure Portal használatával lett-e létrehozva.

További lépések