Sdílet prostřednictvím


Ověřování v Azure pomocí instančního objektu

Tento článek vysvětluje, jak ověřit Terraform v Azure pomocí instančního objektu.

V tomto článku získáte informace o těchto tématech:

  • Vytvoření instančního objektu služby
  • Zadání přihlašovacích údajů instančního objektu v proměnných prostředí
  • Zadání přihlašovacích údajů instančního objektu v bloku zprostředkovatele Terraformu

Vytvoření instančního objektu služby

Pokud nemáte přístup k instančnímu objektu, pokračujte v této části a vytvořte nový instanční objekt. Pokud máte instanční objekt, který můžete použít, přejděte do části Zadejte přihlašovací údaje instančního objektu.

Automatizované nástroje, které nasazují nebo používají služby Azure , jako je Terraform, by měly mít vždy omezená oprávnění. Místo toho, aby se aplikace přihlašovaly jako plně privilegovaný uživatel, Azure nabízí instanční objekty.

Nejběžnějším vzorem je interaktivní přihlášení k Azure, vytvoření instančního objektu, otestování instančního objektu a následné použití instančního objektu pro budoucí ověřování (interaktivně nebo z vašich skriptů).

  1. Pokud chcete vytvořit instanční objekt, přihlaste se k Azure. Po ověření v Azure prostřednictvím účtu Microsoft se sem vraťte.

  2. Pokud vytváříte instanční objekt z Git Bash, nastavte proměnnou MSYS_NO_PATHCONV prostředí. (Tento krok není nutný, pokud používáte Cloud Shell.)

    export MSYS_NO_PATHCONV=1    
    

    Klíčové body:

    • Proměnnou MSYS_NO_PATHCONV prostředí můžete nastavit globálně (pro všechny terminálové relace) nebo místně (pouze pro aktuální relaci). Vzhledem k tomu, že vytvoření instančního objektu není něco, co často děláte, ukázka nastaví hodnotu pro aktuální relaci. Pokud chcete tuto proměnnou prostředí nastavit globálně, přidejte toto nastavení do ~/.bashrc souboru.
  3. Pokud chcete vytvořit instanční objekt, spusťte příkaz az ad sp create-for-rbac.

    az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
    

    Klíčové body:

    • Parametr můžete nahradit <service-principal-name> vlastním názvem vašeho prostředí nebo ho úplně vynechat. Pokud parametr vynecháte, vygeneruje se hlavní název služby na základě aktuálního data a času.
    • Po úspěšném dokončení se az ad sp create-for-rbac zobrazí několik hodnot. Hodnoty appIda tenant hodnoty passwordse používají v dalším kroku.
    • Heslo nelze načíst, pokud dojde ke ztrátě. Heslo byste proto měli uložit na bezpečném místě. Pokud heslo zapomenete, můžete resetovat přihlašovací údaje instančního objektu.
    • V tomto článku se používá instanční objekt s rolí Přispěvatel . Další informace o rolích řízení přístupu na základě role (RBAC) najdete v tématu RBAC: Předdefinované role.
    • Výstup z vytvoření instančního objektu zahrnuje citlivé přihlašovací údaje. Ujistěte se, že tyto přihlašovací údaje nezahrnete do kódu, nebo zkontrolujte přihlašovací údaje do správy zdrojového kódu.
    • Další informace o možnostech při vytváření instančního objektu pomocí Azure CLI najdete v článku Vytvoření instančního objektu Azure pomocí Azure CLI.

Zadání přihlašovacích údajů instančního objektu

Existuje několik způsobů, jak zadat přihlašovací údaje instančního objektu. Zbezpečnostních Tato technika se zobrazuje pouze pro účely úplnosti a testování.

Zadání přihlašovacích údajů instančního objektu v proměnných prostředí

Po vytvoření instančního objektu můžete zadat jeho přihlašovací údaje k Terraformu prostřednictvím proměnných prostředí.

  1. ~/.bashrc Upravte soubor přidáním následujících proměnných prostředí.

    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. Pokud chcete spustit ~/.bashrc skript, spusťte source ~/.bashrc (nebo jeho zkrácený ekvivalent . ~/.bashrc). Můžete také ukončit a znovu otevřít Cloud Shell, aby se skript spustil automaticky.

    . ~/.bashrc
    
  3. Po nastavení proměnných prostředí můžete jejich hodnoty ověřit následujícím způsobem:

    printenv | grep ^ARM*
    

    Klíčové body:

    • Další informace o práci s proměnnými prostředí v Terraform HCL najdete v tématu Čtení a používání proměnných prostředí ve spuštěních Terraformu.
    • Vytvoření a použití plánů provádění Terraformu provádí změny v předplatném Azure přidruženém k instančnímu objektu. Tento fakt může být někdy matoucí, pokud jste přihlášení k jednomu předplatnému Azure a proměnné prostředí odkazují na druhé předplatné Azure. Podívejme se na následující příklad, který vysvětlujeme. Řekněme, že máte dvě předplatná Azure: SubA a SubB. Pokud je aktuální předplatné Azure SubA (určeno prostřednictvím az account show), zatímco proměnné prostředí odkazují na SubB, všechny změny provedené Terraformem jsou v SubB. Proto byste se museli přihlásit ke svému předplatnému SubB, abyste mohli zobrazit změny spuštěním příkazů Azure CLI nebo příkazů Azure PowerShellu.
  4. Přeskočte do části Další kroky.

Zadání přihlašovacích údajů instančního objektu v bloku zprostředkovatele Terraformu

Upozornění

Možnost zadat přihlašovací údaje předplatného Azure v konfiguračním souboru Terraformu může být praktická – zejména při testování. Nedoporučuje se ale ukládat přihlašovací údaje do prostého textového souboru, který můžou zobrazit nevěrní jednotlivci.

Blok zprostředkovatele Azure definuje syntaxi, která umožňuje zadat ověřovací informace vašeho předplatného Azure.

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

Další kroky