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


Azure SDK for Go-hitelesítés szolgáltatásnévvel

Ebben az oktatóanyagban az Azure SDK for Go használatával hitelesíthet az Azure-ban egy Azure-szolgáltatásnévvel titkos vagy tanúsítvány használatával.

Az Azure-szolgáltatásnevek határozzák meg a Hozzáférési szabályzatot és az engedélyeket a Microsoft Entra-bérlőkben, lehetővé téve olyan alapvető funkciókat, mint a bejelentkezés során történő hitelesítés és az erőforrás-hozzáférés során történő engedélyezés. Nem szükséges személyes fiókokat használni az Azure-erőforrások eléréséhez. A szolgáltatásnévhez hozzárendelheti az alkalmazáshoz szükséges pontos engedélyeket, és a személyes fiók használata helyett ezek alapján fejleszthet, amelyek több jogosultsággal rendelkezhetnek a bérlőben, mint amennyit az alkalmazás igényel. A szolgáltatásnevek olyan helyszíni alkalmazásokhoz is használhatók, amelyeknek Azure-erőforrásokat kell használniuk. Az Azure SDK for Go Azure Identity modul kényelmes módot kínál az Azure-ban való hitelesítésre egy szolgáltatásnévvel környezeti változók, titkos kódok vagy tanúsítványok használatával.

Kövesse ezt az oktatóanyagot az Azure SDK for Go szolgáltatásnévvel való létrehozásához és hitelesítéséhez.

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.
  • Telepítés: 1.18-es vagy újabb verzió

  • Ha az Azure CLI használatával szeretné futtatni a cikkben szereplő lépéseket:

  • Ha az Azure PowerShell használatával szeretné futtatni a cikkben szereplő lépéseket:

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

Mielőtt hozzákezdene, hozzon létre egy új erőforráscsoportot és kulcstartópéldányt.

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

az keyvault create --location eastus --name <keyVaultName> --resource-group go-on-azure --enable-rbac-authorization

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

Jegyezze fel a id tulajdonságot a az keyvault create parancs kimenetéből. A következő szakaszban fogja használni a szolgáltatásnév engedélyezésének hatókörét. Az id érték a következő űrlapot tartalmazza: /subscriptions/<subscriptionId>/resourceGroups/go-on-azure/providers/Microsoft.KeyVault/vaults/<keyVaultName>.

2. Azure-szolgáltatásnév létrehozása

Az alábbi technikák egyikével hozzon létre egy Azure-szolgáltatásnevet, és rendelje hozzá a "Key Vault titkos kulcsőrének" szerepkört a kulcstartóhoz:

További Azure-szolgáltatásnevekért tekintse meg a Szolgáltatásnév objektumot.

Ha hozzárendeli a "Key Vault Titkos kulcsok tisztviselője" szerepkört a szolgáltatásnévhez, engedélyezi a titkos kulcsok létrehozását, olvasását, frissítését és törlését a kulcstartóban. Az Azure Key Vault beépített szerepköreivel kapcsolatos további információkért lásd : Hozzáférés biztosítása a Key Vault kulcsaihoz, tanúsítványaihoz és titkos kulcsaihoz azure-beli szerepköralapú hozzáférés-vezérléssel. A beépített Azure-szerepkörökről az Azure beépített szerepköreivel kapcsolatos további információkért lásd : Azure beépített szerepkörök.

1. lehetőség: Azure-szolgáltatásnév létrehozása titkos kóddal

Futtassa az alábbi parancsokat egy Azure-szolgáltatásnév létrehozásához, és rendelje hozzá a "Key Vault titkos kulcsőrének" szerepkört a kulcstartóhoz.

az ad sp create-for-rbac --name <servicePrincipalName> --role "Key Vault Secrets Officer" --scope <keyVaultId>

Cserélje le és <keyVaultId> cserélje le <servicePrincipalName> a megfelelő értékeket.

Jegyezze fel a passwordkimenetből származó , tenantés appId tulajdonságokat. Ezekre a következő szakaszban lesz szükség.

A létrehozás után a szolgáltatásnév jelszava nem kérhető le. Ha elfelejti a jelszót, visszaállíthatja a szolgáltatásnév hitelesítő adatait.

2. lehetőség: Azure-szolgáltatásnév létrehozása tanúsítvánnyal

Futtassa az alábbi parancsokat egy tanúsítványt használó Azure-szolgáltatásnév létrehozásához, és rendelje hozzá a "Key Vault titkos kulcskezelője" szerepkört a kulcstartóhoz.

az ad sp create-for-rbac --name <servicePrincipalName> --create-cert --role "Key Vault Secrets Officer" --scope <keyVaultId>

Cserélje le és <keyVaultId> cserélje le <servicePrincipalName> a megfelelő értékeket.

Jegyezze fel a fileWithCertAndPrivateKeykimenetből származó , tenantIdés appId tulajdonságokat. Ezekre a következő szakaszban lesz szükség.

3. Hitelesítés az Azure-ban szolgáltatásnévvel

A használatával DefaultAzureCredentialelkerülheti, hogy környezetspecifikus kódot írjon az Azure-ba való hitelesítéshez. Ezzel DefaultAzureCredentialkonfigurálhatja a szolgáltatásnév hitelesítő adatait környezeti változók definiálásával.

A szolgáltatásnév hitelesítő adatainak konfigurálásához válasszon az alábbi lehetőségek közül:

Az Azure-hitelesítéssel kapcsolatos további információkért tekintse meg az DefaultAzureCredentialAzure SDK for Go-t

1. lehetőség: Hitelesítés titkos kóddal

Adja meg a következő környezeti változókat:

Változó neve Érték
AZURE_CLIENT_ID Azure-szolgáltatásnév alkalmazásazonosítója
AZURE_TENANT_ID Az alkalmazás Microsoft Entra-bérlőjének azonosítója
AZURE_CLIENT_SECRET Az Azure-szolgáltatásnév jelszava
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"

2. lehetőség: Hitelesítés tanúsítvánnyal

Változó neve Érték
AZURE_CLIENT_ID Azure-szolgáltatásnév alkalmazásazonosítója
AZURE_TENANT_ID Az alkalmazás Microsoft Entra-bérlőjének azonosítója
AZURE_CLIENT_CERTIFICATE_PATH PEM- vagy PKCS12-tanúsítványfájl elérési útja, beleértve a titkos kulcsot is. Ha követte az Azure CLI lépéseit, a fájl nem jelszóval védett. Ha követte az Azure PowerShell lépéseit, a fájl jelszóval védett, és a AZURE_CLIENT_CERTIFICATE_PASSWORD környezeti változót is be kell állítania.
AZURE_CLIENT_CERTIFICATE_PASSWORD A szolgáltatásnév létrehozásakor megadott jelszó. Csak akkor van szükség, ha követte az Azure PowerShell lépéseit.
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"

Erőforrás-ügyfél hitelesítése a DefaultAzureCredential használatával

A környezeti változók beállítása után az Azure Identity modulban használhatja DefaultAzureCredential az erőforrás-ügyfél hitelesítését. Az alábbi kód bemutatja, hogyan kérhet le egy példányt DefaultAzureCredential.

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

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

Az alábbi kódmintával ellenőrizheti, hogy a szolgáltatásnév hitelesít-e az Azure-ban, és rendelkezik-e a kulcstartóhoz szükséges engedélyekkel.

  1. Hozzon létre egy új, a kezdőkönyvtárban hívott go-on-azure könyvtárat.

    mkdir ~/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/security/keyvault/azsecrets"
    
  5. Hozzon létre egy elnevezett main.go fájlt, és adja hozzá 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/security/keyvault/azsecrets"
    )
    
    func createSecret(name, value string) {
    	keyVaultName := os.Getenv("KEY_VAULT_NAME")
    	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: &value}
        resp, err := client.SetSecret(context.TODO(), name, 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("ExamplePassword", "hVFkk965BuUv")
    }
    
    
  6. 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.

    export KEY_VAULT_NAME=<keyVaultName>
    

    Cserélje le <keyVaultName> az Azure Key Vault-példány nevére.

  7. Futtassa a go run parancsot az új kulcstartó titkos kódjának létrehozásához.

     go run main.go
    

    Sikeresség esetén a kimenet a következőhöz hasonló:

    Name: https://<keyVaultName>.vault.azure.net/secrets/ExamplePassword/1e697f71d0014761a65641226f2f057b, Value: hVFkk965BuUv
    

5. Erőforrások eltávolítása

Ha már nem szeretné használni a cikkben létrehozott Azure-erőforrásokat, célszerű törölni őket. A fel nem használt erőforrások törlésével elkerülheti a folyamatban lévő díjakat, és az előfizetést rendetlenül tarthatja. Az oktatóanyagban használt erőforrások törlésének legegyszerűbb módja az erőforráscsoport törlése.

az group delete --name go-on-azure --yes

Az --yes argumentum arra utasítja a parancsot, hogy ne kérjen megerősítést.

Az előző parancs helyreállítható törlést hajt végre az erőforráscsoport kulcstartóján. Ha véglegesen el szeretné távolítani az előfizetésből, írja be a következő parancsot:

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

Cserélje le <keyVaultName> a kulcstartó nevére.

Végül el kell távolítania az alkalmazásregisztrációt és a szolgáltatásnevet.

az ad app delete --id <servicePrincipalAppId>

Cserélje le <servicePrincipalAppId> a szolgáltatásnév alkalmazásazonosítójára.

Következő lépések