Azure-hitelesítés a Go-hoz készült Azure Identity modullal

Ebben az oktatóanyagban a Go-hoz készült Azure Identity modul DefaultAzureCredential típusa szolgál az Azure-beli hitelesítésre. Az Azure Identity modul számos olyan hitelesítőadat-típust kínál, amelyek a Microsoft Entra ID-val rendelkező OAuth-ra összpontosítanak.

DefaultAzureCredential leegyszerűsíti a hitelesítést a gyakran használt hitelesítő adatok típusok kombinálásával. Az Azure-ban üzembe helyezett alkalmazások hitelesítéséhez használt hitelesítő adattípusokat a fejlesztési környezetben történő hitelesítéshez használt hitelesítő típusok használatával láncba gyűri.

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. Az Azure Identity modul telepítése Go-hoz

Futtassa a következő parancsot az azidentitás modul letöltéséhez:

go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity

2. Hitelesítés az Azure-ral

DefaultAzureCredential Az alábbi technikák egyikével hitelesíthet az Azure-ban:

A hitelesítő adatok különböző típusaival kapcsolatos további információkért lásd a hitelesítő adatok típusait.

1. lehetőség: Környezeti változók definiálása

A DefaultAzureCredential típus használatával konfigurálja a EnvironmentCredential hitelesítést olyan környezeti változókkal, amelyek három hitelesítési típust támogatnak. Válasszon a következő hitelesítési típusok közül, és határozza meg a megfelelő környezeti változókat.

Szolgáltatásnév titkos kóddal

Variable name Value
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>"

Szolgáltatásnév tanúsítvánnyal

Variable name Value
AZURE_CLIENT_ID Microsoft Entra-alkalmazás azonosítója
AZURE_TENANT_ID Az alkalmazás Microsoft Entra-bérlőjének azonosítója
AZURE_CLIENT_CERTIFICATE_PATH Tanúsítványfájl elérési útja titkos kulccsal (jelszóvédelem nélkül)
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"

Felhasználónév és jelszó

Variable name Value
AZURE_CLIENT_ID Microsoft Entra-alkalmazás azonosítója
AZURE_USERNAME Felhasználónév (általában e-mail-cím)
AZURE_PASSWORD A felhasználó jelszava
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_USERNAME="<azure_username>"
export AZURE_PASSWORD="<azure_user_password>"

A konfigurációt a rendszer az előző sorrendben kísérli meg. Ha például az ügyfélkulcs és a tanúsítvány értékei is jelen vannak, a rendszer az ügyfélkulcsot használja.

2. lehetőség: Számítási feladat identitásának használata

Microsoft Entra Számítási feladat ID engedélyezi, hogy a Kubernetes-fürtök podjai Kubernetes-identitást (szolgáltatásfiókot) használjanak. A rendszer egy Kubernetes-jogkivonatot ad ki, és az OIDC-összevonás lehetővé teszi, hogy a Kubernetes-alkalmazások biztonságosan elérhessék az Azure-erőforrásokat a Microsoft Entra ID azonosítójával.

Ha a szükséges környezeti változók EnvironmentCredential nem jelennek meg, DefaultAzureCredential megkísérli a hitelesítést a WorkloadIdentityCredential használatával. WorkloadIdentityCredential megpróbálja beolvasni a szolgáltatásnév konfigurációját a Számítási feladatok identitása webhook által beállított környezeti változókból.

3. lehetőség: Felügyelt identitás használata

Felügyelt identitásokkal nincs szükség arra, hogy a fejlesztők kezeljék a hitelesítő adatokat. A Microsoft Entra-hitelesítést támogató erőforrásokhoz való csatlakozással az alkalmazások hitelesítő adatok helyett Microsoft Entra-jogkivonatokat használhatnak.

Ha a szükséges környezeti változók WorkloadIdentityCredential nem jelennek meg, DefaultAzureCredential a ManagedIdentityCredential használatával próbálja meg a hitelesítést.

Ha felhasználó által hozzárendelt felügyelt identitást használ, futtassa a következő parancsot a AZURE_CLIENT_ID környezeti változó beállításához.

export AZURE_CLIENT_ID="<user_assigned_managed_identity_client_id>"

4. lehetőség: Bejelentkezés az Azure CLI-vel

A helyi fejlesztés DefaultAzureCredential során a súrlódás csökkentése érdekében hitelesítést végezhet az Azure CLI-be bejelentkezett felhasználóként.

Futtassa a következő parancsot az Azure CLI-be való bejelentkezéshez:

az login

Az Azure CLI-hitelesítés nem ajánlott az Azure-ban futó alkalmazásokhoz.

3. A DefaultAzureCredential használata a ResourceClient hitelesítéséhez

Hozzon létre egy új Go-mintamodult, amely azure-auth a következővel DefaultAzureCredentialteszteli az Azure-ba való hitelesítést:

  1. Hozzon létre egy könyvtárat a Go-mintakód teszteléséhez és futtatásához, majd váltson arra a könyvtárra.

  2. Futtassa a go mod init parancsot egy modul létrehozásához:

    go mod init azure-auth
    
  3. Futtassa a Go-hoz szükséges Azure SDK-modulok letöltését, összeállítását és telepítését:

    go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    go get "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription"
    
  4. Hozzon létre egy elnevezett main.go fájlt, és szúrja be a következő kódot:

    package main
    
    import (
      "context"
    
      "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
      "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription"
    )
    
    const subscriptionID = "<subscription ID>"
    
    func main() {
      cred, err := azidentity.NewDefaultAzureCredential(nil)
      if err != nil {
        // TODO: handle error
      }
      // Azure SDK Resource Management clients accept the credential as a parameter.
      // The client will authenticate with the credential as necessary.
      client, err := armsubscription.NewSubscriptionsClient(cred, nil)
      if err != nil {
        // TODO: handle error
      }
      _, err = client.Get(context.TODO(), subscriptionID, nil)
      if err != nil {
        // TODO: handle error
      }
    }   
    
    

    Cserélje le <subscription ID> az előfizetés azonosítóját.

  5. Futtassa go run az alkalmazás létrehozásához és futtatásához:

    go run .
    

Hitelesítés az Azure-ban DefaultAzureCredential használatával

Az alkalmazás következő kódjával hitelesíthet az Azure-ban az Azure Identity modullal a következő használatával DefaultAzureCredential:

// This credential type checks environment variables for configuration.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
  // handle error
}

// Azure Resource Management clients accept the credential as a parameter
client, err := armresources.NewClient("<subscriptionId>", cred, nil)
if err != nil {
  // handle error
}

Hibaelhárítás

Az adott hitelesítőadat-típusok hibáinak megoldásával kapcsolatos útmutatásért tekintse meg a hibaelhárítási útmutatót.

További lépések