Hitelesítés az Azure-ban szolgáltatásnévvel
Ez a cikk azt ismerteti, hogyan hitelesítheti a Terraformot az Azure-ban egy szolgáltatásnévvel.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Egyszerű szolgáltatás létrehozása
- Szolgáltatásnév hitelesítő adatainak megadása környezeti változókban
- Szolgáltatásnév hitelesítő adatainak megadása Terraform-szolgáltatói blokkban
Egyszerű szolgáltatás létrehozása
Ha nem rendelkezik hozzáféréssel egy szolgáltatásnévhez, folytassa ezzel a szakaszsal egy új szolgáltatásnév létrehozásához. Ha rendelkezik egy használható szolgáltatásnévvel, ugorjon a szolgáltatásnév hitelesítő adatainak megadása című szakaszra.
Az Azure-szolgáltatásokat ( például a Terraformot) üzembe helyező vagy használó automatizált eszközöknek mindig korlátozott engedélyekkel kell rendelkezniük. Ahelyett, hogy az alkalmazások teljes jogosultsággal rendelkező felhasználóként jelentkezzenek be, az Azure egyszerű szolgáltatásneveket biztosít.
A leggyakoribb minta az, hogy interaktívan bejelentkezik az Azure-ba, létrehoz egy szolgáltatásnevet, teszteli a szolgáltatásnevet, majd ezt a szolgáltatásnevet használja a jövőbeli hitelesítéshez (interaktívan vagy a szkriptekből).
Szolgáltatásnév létrehozásához jelentkezzen be az Azure-ba. Miután egy Microsoft-fiókon keresztül hitelesítést végzett az Azure-ban, térjen vissza ide.
Ha szolgáltatásnevet hoz létre a Git Bashből, állítsa be a környezeti változót
MSYS_NO_PATHCONV
. (Ez a lépés nem szükséges a Cloud Shell használata esetén.)export MSYS_NO_PATHCONV=1
Főbb pontok:
- A környezeti változót globálisan (az
MSYS_NO_PATHCONV
összes terminál-munkamenethez) vagy helyileg (csak az aktuális munkamenethez) állíthatja be. Mivel a szolgáltatásnév létrehozása nem gyakran történik, a minta beállítja az aktuális munkamenet értékét. Ha globálisan szeretné beállítani ezt a környezeti változót, adja hozzá a beállítást a~/.bashrc
fájlhoz.
- A környezeti változót globálisan (az
Szolgáltatásnév létrehozásához futtassa az az ad sp create-for-rbac parancsot.
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Főbb pontok:
- Lecserélheti a
<service-principal-name>
környezetet egy egyéni névre, vagy teljesen kihagyhatja a paramétert. Ha kihagyja a paramétert, a szolgáltatásnév az aktuális dátum és idő alapján jön létre. - Sikeres befejezés után
az ad sp create-for-rbac
több értéket is megjelenít. AappId
következő lépésben a ,password
éstenant
az értékek lesznek használatban. - A jelszó nem kérhető le, ha elveszett. Ezért a jelszót biztonságos helyen kell tárolnia. Ha elfelejti a jelszavát, visszaállíthatja a szolgáltatásnév hitelesítő adatait.
- Ebben a cikkben egy közreműködői szerepkörrel rendelkező szolgáltatásnevet használunk. A szerepköralapú hozzáférés-vezérlési (RBAC-) szerepkörökről további információt az RBAC: Beépített szerepkörök című témakörben talál.
- A szolgáltatásnév létrehozásának kimenete bizalmas hitelesítő adatokat tartalmaz. Győződjön meg arról, hogy ezeket a hitelesítő adatokat nem tartalmazza a kódban, vagy nem ellenőrzi a hitelesítő adatokat a forrásvezérlőben.
- A szolgáltatásnév Azure CLI-vel történő létrehozásakor elérhető lehetőségekről további információt az Azure CLI-vel rendelkező Azure-szolgáltatásnév létrehozása című cikkben talál.
- Lecserélheti a
Szolgáltatásnév hitelesítő adatainak megadása
A szolgáltatásnév hitelesítő adatait többféleképpen is megadhatja. Biztonsági okokból azonban javasoljuk, hogy ne tárolja a hitelesítő adatokat a szolgáltatói blokkban. Ez a technika csak teljesség és tesztelés céljából jelenik meg.
- Szolgáltatásnév hitelesítő adatainak megadása környezeti változókban
- Szolgáltatásnév hitelesítő adatainak megadása Terraform-szolgáltatói blokkban
Szolgáltatásnév hitelesítő adatainak megadása környezeti változókban
Miután létrehozott egy egyszerű szolgáltatást, környezeti változókon keresztül megadhatja annak hitelesítő adatait a Terraformban.
Szerkessze a
~/.bashrc
fájlt a következő környezeti változók hozzáadásával.export ARM_SUBSCRIPTION_ID="<azure_subscription_id>" export ARM_TENANT_ID="<azure_subscription_tenant_id>" export ARM_CLIENT_ID="<service_principal_appid>" export ARM_CLIENT_SECRET="<service_principal_password>"
A
~/.bashrc
szkript végrehajtásához futtassasource ~/.bashrc
(vagy annak rövidített megfelelője. ~/.bashrc
). A szkript automatikus futtatásához kiléphet és újra megnyithatja a Cloud Shellt.. ~/.bashrc
A környezeti változók beállítása után az alábbi módon ellenőrizheti az értékeket:
printenv | grep ^ARM*
Főbb pontok:
- A környezeti változókhoz hasonlóan az Azure-előfizetési érték Terraform-szkriptből való eléréséhez használja a következő szintaxist:
${env.<environment_variable>}
Az érték eléréséhez például adja meg aARM_SUBSCRIPTION_ID
.${env.ARM_SUBSCRIPTION_ID}
- A Terraform végrehajtási terveinek létrehozása és alkalmazása módosításokat hajt végre a szolgáltatásnévhez társított Azure-előfizetésen. Ez a tény néha zavaró lehet, ha egy Azure-előfizetésbe van bejelentkezve, és a környezeti változók egy második Azure-előfizetésre mutatnak. Tekintsük meg a következő példát, hogy elmagyarázzuk. Tegyük fel, hogy két Azure-előfizetése van: SubA és SubB. Ha az aktuális Azure-előfizetés SubA (a rendszer által
az account show
meghatározott), míg a környezeti változók AlB-ra mutatnak, a Terraform által végrehajtott módosítások a SubB-en vannak. Ezért be kell jelentkeznie az AlB-előfizetésbe az Azure CLI-parancsok vagy az Azure PowerShell-parancsok futtatásához a módosítások megtekintéséhez.
- A környezeti változókhoz hasonlóan az Azure-előfizetési érték Terraform-szkriptből való eléréséhez használja a következő szintaxist:
Ugrás a szakaszra, Következő lépések
Szolgáltatásnév hitelesítő adatainak megadása Terraform-szolgáltatói blokkban
Figyelemfelhívás
Az Azure-előfizetés hitelesítő adatainak terraform konfigurációs fájlban való megadása kényelmes lehet , különösen teszteléskor. Nem ajánlott azonban a hitelesítő adatokat olyan világos szöveges fájlban tárolni, amelyet nem megbízható személyek tekinthetnek meg.
Az Azure-szolgáltatói blokk szintaxist határoz meg, amely lehetővé teszi az Azure-előfizetés hitelesítési adatainak megadását.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
subscription_id = "<azure_subscription_id>"
tenant_id = "<azure_subscription_tenant_id>"
client_id = "<service_principal_appid>"
client_secret = "<service_principal_password>"
}
# Your code goes here