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 kód 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 egy Microsoft Entra-bérlőben. Olyan alapvető funkciók engedélyezése, mint a bejelentkezéskor 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. Az Azure SDK for Go Azure Identity modulja kényelmes módot kínál az Azure-ral való hitelesítésre egy szolgáltatásnév használatával 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ó
1. A környezet konfigurálá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
Cserélje le <keyVaultName>
globálisan egyedi névre. Jegyezze fel a Id
kimenetből származó kimenetet is, amelyet a szolgáltatásfiók hatóköréhez fog használni.
2. Azure-szolgáltatásnév létrehozása
Azure-szolgáltatásnév létrehozásához használja az alábbi technikák egyikét:
- 1. lehetőség: Azure-szolgáltatásnév létrehozása titkos kóddal
- 2. lehetőség: Azure-szolgáltatásnév létrehozása tanúsítvánnyal
További Azure-szolgáltatásnevekért tekintse meg a Szolgáltatásnév objektumot.
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.
az ad sp create-for-rbac --name `<servicePrincipalName>` --role Contributor --scope <resourceGroupId>
Cserélje le és <resourceGroupId>
cserélje le <servicePrincipalName>
a megfelelő értékeket.
Győződjön meg arról, hogy másolja a jelszó értékét – nem kérhető le. Ha elfelejti a jelszót, állítsa alaphelyzetbe a szolgáltatásnév hitelesítő adatait.
2. lehetőség: Azure-szolgáltatásnév létrehozása tanúsítvánnyal
az ad sp create-for-rbac --name <servicePrincipal> --create-cert --role Contributor --scope <resourceGroupId>
Cserélje le és <resourceGroupId>
cserélje le <servicePrincipalName>
a megfelelő értékeket.
3. Hitelesítés az Azure-ban szolgáltatásnévvel
A használatával elkerülheti, DefaultAzureCredential
hogy környezetspecifikus kódot írjon az Azure-ba való hitelesítéshez.
DefaultAzureCredential
A szolgáltatásnév hitelesítő adatainak konfigurálása környezeti változók definiálásával.
Válassza az alábbi lehetőségek egyikét a szolgáltatásnév hitelesítő adatainak konfigurálásához:
Az Azure-hitelesítéssel kapcsolatos további információkért tekintse meg az DefaultAzureCredential
Azure SDK for Go-t
1. lehetőség: Hitelesítés titkos kóddal
Adja meg a következő környezeti változókat:
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>"
2. lehetőség: Hitelesítés tanúsítvánnyal
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_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>"
A ResourceClient hitelesítése a DefaultAzureCredential használatával
NewDefaultAzureCredential
A ResourceClient hitelesítéséhez használja az Azure Identity modul függvényét.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
4. Mintakód
Az alábbi kódmintával ellenőrizheti, hogy a szolgáltatásnév hiteles-e az Azure-ban, és rendelkezik-e a megfelelő engedélyekkel az erőforráscsoporthoz.
Hozzon létre egy új, a kezdőkönyvtárban hívott
go-on-azure
könyvtárat.mkdir ~/go-on-azure
Váltson a könyvtárra
go-on-azure
.cd ~/go-on-azure
Futtassa
go mod init
ago.mod
fájl létrehozásához.go mod init go-on-azure
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"
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/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) } resp, err := client.SetSecret(context.TODO(), name, value, 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") }
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.Futtassa a
go run
parancsot az új kulcstartó titkos kódjának létrehozásához.go run main.go
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: