Megosztás a következőn keresztül:


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).

  1. 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.

  2. 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.
  3. 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. A appIdkövetkező lépésben a , passwordés tenant 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.

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

Miután létrehozott egy egyszerű szolgáltatást, környezeti változókon keresztül megadhatja annak hitelesítő adatait a Terraformban.

  1. 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>"
    
  2. A ~/.bashrc szkript végrehajtásához futtassa source ~/.bashrc (vagy annak rövidített megfelelője . ~/.bashrc). A szkript automatikus futtatásához kiléphet és újra megnyithatja a Cloud Shellt.

    . ~/.bashrc
    
  3. 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 a ARM_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 showmeghatá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.
  4. 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

Következő lépések