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:
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Ha az Azure PowerShell használatával szeretné futtatni a cikkben szereplő lépéseket:
- Ha az Azure PowerShell helyi használatát választja:
- Telepítse az Az PowerShell-modul legújabb verzióját.
- Csatlakozás az Azure-fiókjába az Csatlakozás-AzAccount parancsmag használatával.
- Ha az Azure Cloud Shell használata mellett dönt:
- További információkért tekintse meg az Azure Cloud Shell áttekintését.
- Ha az Azure PowerShell helyi használatát választja:
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:
- 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.
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 password
kimenetbő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 fileWithCertAndPrivateKey
kimenetbő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 DefaultAzureCredential
elkerülheti, hogy környezetspecifikus kódot írjon az Azure-ba való hitelesítéshez. Ezzel DefaultAzureCredential
konfigurá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 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:
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.
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/security/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/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") }
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
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.