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.
- Telepítés: 1.18-es vagy újabb verzió
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:
- 1. lehetőség: Környezeti változók definiálása
- 2. lehetőség: Számítási feladat identitásának használata
- 3. lehetőség: Felügyelt identitás használata
- 4. lehetőség: Bejelentkezés az Azure CLI-vel
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 DefaultAzureCredential
teszteli az Azure-ba való hitelesítést:
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.
Futtassa a go mod init parancsot egy modul létrehozásához:
go mod init azure-auth
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"
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.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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: