Megosztás a következőn keresztül:


Rövid útmutató: Titkos kódok kezelése az Azure Key Vault Go ügyfélkódtárával

Ebben a rövid útmutatóban megtudhatja, hogyan hozhat létre, kérdezhet le, listázhat és törölhet titkos kulcsokat az Azure Key Vaultból az Azure SDK for Go használatával.

Számos objektumtípust tárolhat egy Azure-kulcstartóban. Ha titkos kulcsokat tárol egy kulcstartóban, akkor nem kell őket a kódban tárolnia, ami segít az alkalmazások biztonságának javításában.

Ismerkedjen meg az azsecrets-csomaggal, és ismerje meg, hogyan kezelheti titkos kulcsait egy Azure-kulcstartóban a Go használatával.

Előfeltételek

Beállítás

Ebben a rövid útmutatóban az azidentity-csomag használatával hitelesítheti magát az Azure-ban az Azure CLI használatával. A különböző hitelesítési módszerekről az Azure SDK for Go használatával történő Azure-hitelesítéssel kapcsolatban olvashat.

Jelentkezzen be az Azure Portalra

  1. Az Azure CLI-ben futtassa a következő parancsot:

    az login
    

    Ha az Azure CLI meg tudja nyitni az alapértelmezett böngészőt, ezt az Azure Portal bejelentkezési oldalán teheti meg.

    Ha a lap nem nyílik meg automatikusan, lépjen a lapra https://aka.ms/devicelogin, majd adja meg a terminálban megjelenő engedélyezési kódot.

  2. Jelentkezzen be az Azure Portalra a fiók hitelesítő adataival.

Erőforráscsoport és kulcstartó létrehozása

Ez a rövid útmutató egy előre létrehozott Azure Key Vaultot használ. Kulcstartót az Azure CLI rövid útmutatójában, az Azure PowerShell gyorsútmutatójában vagy az Azure Portal rövid útmutatójában ismertetett lépések követésével hozhat létre.

Másik lehetőségként futtathatja ezeket az Azure CLI- vagy Azure PowerShell-parancsokat.

Fontos

Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére az alábbi példákban.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

Hozzáférés biztosítása a kulcstartóhoz

Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyeket szerezni a kulcstartóhoz, rendeljen hozzá egy szerepkört a "Felhasználónév" (UPN) szolgáltatáshoz az Az role Assignment Create Azure CLI-paranccsal.

az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Cserélje le <a upn>, <subscription-id>, <resource-group-name> és <your-unique-keyvault-name> értékét a tényleges értékekre. Az UPN általában egy e-mail-cím (pl. username@domain.com) formátumban lesz.

Új Go-modul létrehozása és csomagok telepítése

Futtassa a következő Go-parancsokat:

go mod init kvSecrets
go get -u github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity

Mintakód

Hozzon létre egy main.go nevű fájlt, majd illessze 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 main() {
    mySecretName := "secretName01"
    mySecretValue := "secretValue"
    vaultURI := fmt.Sprintf("https://%s.vault.azure.net/", os.Getenv("KEY_VAULT_NAME"))

    // Create a credential using the NewDefaultAzureCredential type.
    cred, err := azidentity.NewDefaultAzureCredential(nil)
    if err != nil {
        log.Fatalf("failed to obtain a credential: %v", err)
    }

    // Establish a connection to the Key Vault client
    client, err := azsecrets.NewClient(vaultURI, cred, nil)

    // Create a secret
    params := azsecrets.SetSecretParameters{Value: &mySecretValue}
    _, err = client.SetSecret(context.TODO(), mySecretName, params, nil)
    if err != nil {
        log.Fatalf("failed to create a secret: %v", err)
    }

    // Get a secret. An empty string version gets the latest version of the secret.
    version := ""
    resp, err := client.GetSecret(context.TODO(), mySecretName, version, nil)
    if err != nil {
        log.Fatalf("failed to get the secret: %v", err)
    }

    fmt.Printf("secretValue: %s\n", *resp.Value)

    // List secrets
    pager := client.NewListSecretsPager(nil)
    for pager.More() {
        page, err := pager.NextPage(context.TODO())
        if err != nil {
            log.Fatal(err)
        }
        for _, secret := range page.Value {
            fmt.Printf("Secret ID: %s\n", *secret.ID)
        }
    }

    // Delete a secret. DeleteSecret returns when Key Vault has begun deleting the secret.
    // That can take several seconds to complete, so it may be necessary to wait before
    // performing other operations on the deleted secret.
    delResp, err := client.DeleteSecret(context.TODO(), mySecretName, nil)
    if err != nil {
        log.Fatalf("failed to delete secret: %v", err)
    }

    fmt.Println(delResp.ID.Name() + " has been deleted")
}

A kód futtatása

  1. 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 kulcstartó nevére.

    export KEY_VAULT_NAME=quickstart-kv
    
  2. A Go alkalmazás elindításához futtassa a következő parancsot:

    go run main.go
    
    secretValue: createdWithGO
    Secret ID: https://quickstart-kv.vault.azure.net/secrets/quickstart-secret
    Secret ID: https://quickstart-kv.vault.azure.net/secrets/secretName
    quickstart-secret has been deleted
    

Kódpéldák

További példákért tekintse meg a modul dokumentációját .

Az erőforrások eltávolítása

Törölje az erőforráscsoportot és az összes többi erőforrást az alábbi parancs futtatásával:

az group delete --resource-group quickstart-rg

Következő lépések