Udělení přístupu k identitě úloh do Azure

Dokončeno

Identita úlohy sama o sobě nemůže ve vašem prostředí Azure nic dělat, stejně jako to, jak uživatel nemůže s vašimi prostředky Azure pracovat, pokud k tomu nemá oprávnění. V této lekci se dozvíte, jak autorizovat identity úloh k nasazení a konfiguraci prostředků Azure a zároveň se vyhnout udělení nepotřebných oprávnění.

Autorizace identit úloh

Doteď jste se zaměřili na to, co jsou identity úloh a jak je můžete použít k prokázání identity pracovního postupu nasazení do Microsoft Entra ID. To je vše o ověřování.

Jakmile Microsoft Entra ID ověří identitu úlohy, stane se další otázka: co může tato identita úlohy dělat? Toto je koncept autorizace . Je zodpovědností systému řízení přístupu na základě role (RBAC) Azure, který se někdy označuje jako správa identit a přístupu (IAM). Pomocí Azure RBAC můžete identitě úloh udělit přístup ke konkrétní skupině prostředků, předplatnému nebo skupině pro správu.

Poznámka

Všechno, co tady děláte, je použití systému Azure RBAC k udělení přístupu k vytváření a správě prostředků Azure, jako jsou účty úložiště, plán služby Azure App Service a virtuální sítě. Microsoft Entra ID má také vlastní systém rolí, který se někdy nazývá adresářové role. Pomocí těchto rolí udělíte oprávnění identitám úloh ke správě ID Microsoft Entra. Tento modul podrobně neprobírá toto téma, ale mějte na paměti, že termín role se v některé dokumentaci používá pro obě situace.

Výběr správného přiřazení role pro pracovní postup

Přiřazení role má tři klíčové části: komu je role přiřazena (přiřazení), co může dělat (role) a na který zdroj nebo zdroje se přiřazení role vztahuje (rozsah ).

Zmocněnec

Když pracujete s identitou úlohy, přiřadíte jí role. Pokud chcete přiřadit roli, musíte nejprve vytvořit aplikační objekt, který umožňuje přiřazení rolí aplikacím v Azure. Po vytvoření představitele služby můžete pokračovat v práci s ID aplikace registrace aplikace.

K vytvoření služebního principálu použijte příkaz az ad sp create a zadejte ID registrace aplikace:

az ad sp create --id A123b4567c-1234-1a2b-2b1a-1234abc12345

K vytvoření instančního objektu služby použijte rutinu New-AzADServicePrincipal a zadejte ID aplikace:

New-AzADServicePrincipal -AppId A123b4567c-1234-1a2b-2b1a-1234abc12345

Role

Může být o něco pracnější zjišťování, jakou roli přiřadit. V Azure existuje několik běžných rolí:

  • Čtenář: Umožňuje pověřené osobě číst informace o prostředcích, ale ne je upravovat ani odstraňovat.
  • Přispěvatele: Umožňuje přiřazenému uživateli vytvářet zdroje a číst a upravovat existující zdroje. Přispěvatelé ale nemohou udělit dalším hlavním subjektům přístup k prostředkům.
  • vlastník: Umožňuje úplnou kontrolu nad prostředky, včetně udělení přístupu k jiným subjektům.

Opatrnost

Udělte identitám úloh jenom minimální oprávnění, která potřebují k práci. Ve většině případů je role Vlastník příliš povolující pro pracovní postup nasazení.

Existuje také mnoho konkrétních rolí, které poskytují přístup k podmnožině funkcí. Můžete dokonce vytvořit svou vlastní definici role a určit přesný seznam oprávnění, která chcete přiřadit.

Poznámka

Definice vlastních rolí můžou být účinným způsobem, jak udělit oprávnění k prostředkům Azure, ale může být obtížné s jejich pomocí pracovat. Není vždy snadné přesně určit, která oprávnění potřebujete přidat do vlastní definice role. Definice rolí můžete omylem nastavit jako příliš omezující nebo příliš povolující.

Pokud si nejste jistí, co dělat, je nejlepší použít jednu z předdefinovaných definic rolí. Definice vlastních rolí jsou nad rámec tohoto modulu.

Rozsah

Potřebujete určit, jak široce přiřadíte roli. Toto rozhodnutí ovlivňuje počet prostředků, které může identita pracovního zatížení upravit. Mezi běžné obory patří:

  • jeden prostředek: Můžete udělit přístup ke konkrétnímu prostředku. Pracovní postupy nasazení tento obor obvykle nepoužívají, protože pracovní postup vytváří prostředky, které ještě neexistují, nebo překonfiguruje více prostředků.
  • Skupina prostředků: Můžete udělit přístup ke všem prostředkům v rámci skupiny prostředků. Přispěvatelé a vlastníci můžou také vytvářet prostředky v rámci skupiny. Tato možnost je vhodná pro mnoho pracovních postupů nasazení.
  • předplatné: Můžete udělit přístup ke všem prostředkům v rámci předplatného. Pokud máte v jednom předplatném více aplikací, úloh nebo prostředí, můžete udělit oprávnění k rozsahu předplatného. Obvykle je to ale pro pracovní postup nasazení příliš shovívavé. Místo toho byste měli zvážit určení rozsahu přiřazení rolí ke skupinám prostředků, pokud pracovní postup nasazení nepotřebuje vytvářet skupiny prostředků.

Nezapomeňte, že přiřazení rolí se dědí. Pokud přiřadíte roli v předplatném, má přiřazený přístup ke každé skupině prostředků a prostředku v rámci daného předplatného.

Výběr správného přiřazení role

Teď, když rozumíte komponentám přiřazení role, můžete rozhodnout o vhodných hodnotách pro vaše scénáře. Tady je několik obecných pokynů, které je potřeba vzít v úvahu:

  • Použijte nejméně permisivní roli, kterou můžete použít. Pokud váš pracovní postup nasadí jenom základní soubory Bicep a nebude spravovat přiřazení rolí, nepoužívejte roli Vlastník.

  • Použijte nejužší rozsah, který můžete použít. Většina pracovních postupů potřebuje pouze nasadit prostředky do skupiny prostředků, takže by nemělo být přiděleno přiřazení rolí na úrovni předplatného.

  • Pro mnoho pracovních postupů je dobrým výchozím nastavením pro přiřazení rolí role Přispěvatele v rozsahu skupiny prostředků.

  • Vezměte v úvahu všechno, co váš pracovní postup dělá, a vše, co může v budoucnu dělat. Můžete například zvážit vytvoření vlastní definice role pro pracovní postup nasazení vašeho webu a udělit oprávnění pouze pro App Service a Application Insights. Příští měsíc možná budete muset do souboru Bicep přidat účet služby Azure Cosmos DB, ale vlastní role zablokuje vytváření prostředků Azure Cosmos DB.

    Místo toho je často lepší použít předdefinované role nebo kombinaci předdefinovaných rolí, abyste nemuseli opakovaně měnit definice rolí. Zvažte použití služby Azure Policy k vynucení požadavků na zásady správného řízení pro povolené služby, skladové položky a umístění.

  • Otestujte pracovní postup a ověřte, že přiřazení role funguje.

Kombinování a přiřazování rolí

Můžete vytvořit více přiřazení rolí, která poskytují různá oprávnění v různých oborech. Můžete například přiřadit pracovní identitě roli Čtenář v rozsahu celého předplatného. Stejnému pracovně-zátěžovému identifikátoru můžete samostatně přiřadit roli přispěvatele pro konkrétní skupinu prostředků. Když se identita úlohy pokusí pracovat se skupinou prostředků, použije se více permisivní přiřazení.

Práce s několika prostředími

Pravděpodobně pracujete s několika prostředími, jako je vývoj, testování a produkční prostředí pro vaše aplikace. Prostředky pro každé prostředí by se měly nasadit do různých skupin prostředků nebo předplatných.

Pro každé prostředí byste měli vytvořit samostatné identity úloh. Udělte každé identitě úlohy minimální sadu oprávnění, která potřebuje pro svá nasazení. Dávejte pozor, abyste se vyhnuli kombinování oprávnění pro produkční nasazení s oprávněními pro nasazení do neprodukčního prostředí.

Vytvoření přiřazení rolí pro identitu úlohy

Pokud chcete vytvořit přiřazení role pro identitu úlohy, použijte příkaz az role assignment create. Potřebujete zadat přiřazení, roli a obor:

az role assignment create \
  --assignee A123b4567c-1234-1a2b-2b1a-1234abc12345 \
  --role Contributor \
  --scope "/subscriptions/B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0/resourceGroups/ToyWebsite" \
  --description "The deployment workflow for the company's website needs to be able to create resources within the resource group."

Pojďme se podívat na jednotlivé argumenty:

  • --assignee určuje identitu úlohy. Můžete to zadat několika způsoby, ale použití ID aplikace je dobrým postupem, protože se vyhne nejednoznačnosti.
  • --role určuje roli. Pokud používáte předdefinované role, můžete ji zadat podle názvu. Pokud používáte vlastní definici role, zadejte úplné ID definice role.
  • --scope určuje rozsah. Obvykle se jedná o ID prostředku pro jeden prostředek, skupinu prostředků nebo předplatné.
  • --description je popis přiřazení role čitelný člověkem.

K vytvoření přiřazení role pro identitu úlohy použijte cmdlet New-AzRoleAssignment. Zadejte odpovědnou osobu, roli a rozsah:

New-AzRoleAssignment `
  -ApplicationId A123b4567c-1234-1a2b-2b1a-1234abc12345 `
  -RoleDefinitionName Contributor `
  -Scope '/subscriptions/B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0/resourceGroups/ToyWebsite' `
  -Description "The deployment workflow for the company's website needs to be able to create resources within the resource group."

Pojďme se podívat na jednotlivé argumenty:

  • -ApplicationId určuje ID registrace aplikace pro identitu úlohy.
  • -RoleDefinitionName určuje název předdefinované role. Pokud použijete vlastní definici role, zadejte úplné ID definice role pomocí argumentu -RoleDefinitionId.
  • -Scope určuje rozsah. Obvykle se jedná o ID prostředku pro jeden prostředek, skupinu prostředků nebo předplatné.
  • -Description je popis přiřazení role čitelný člověkem.

(Only necessary if context specifies "Tip" as advice/suggestion, otherwise current translation is correct.)

Osvědčeným postupem je poskytnout odůvodnění přiřazení rolí zadáním popisu. Popis pomáhá každému, kdo později zkontroluje přiřazení rolí, pochopit jejich účel a pochopit, jak jste se rozhodli o přiřazení, roli a oboru.

Poznámka

Aktivní přiřazení rolí může trvat několik minut.

Poskytněte přístup pomocí Bicepu

Přiřazení rolí jsou prostředky Azure. To znamená, že pomocí Bicep můžete vytvořit přiřazení role. Můžete to udělat, pokud inicializujete skupiny prostředků pomocí Bicep a pak prostředky nasadíte do skupiny prostředků pomocí identity úlohy. Tady je příklad definice Bicep pro předchozí přiřazení role:

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(principalId, roleDefinitionId, resourceGroup().id)
  properties: {
    principalType: 'ServicePrincipal'
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
    principalId: principalId
    description: 'The deployment workflow for the company\'s website needs to be able to create resources within the resource group.'
  }
}

Pojďme se podívat na jednotlivé argumenty:

  • name je globálně jedinečný identifikátor (GUID) pro přiřazení role. Je vhodné použít funkci guid() v Bicep k vytvoření identifikátoru GUID. Abyste měli jistotu, že vytvoříte jedinečný název pro každé přiřazení role, použijte principal ID, ID definice role a obor jako argumenty pro inicializaci funkce.

  • principalType by měla být nastavena na ServicePrincipal.

  • roleDefinitionId je plně kvalifikované ID prostředku pro definici role, kterou přiřazujete. Většinou pracujete s předdefinovanými rolemi, takže ID definice role najdete v dokumentaci k předdefinovaným rolím Azure .

    Například role přispěvatele má ID definice role b24988ac-6180-42a0-ab88-20f7382dd24c. Když jej zadáte v souboru Bicep, použijete plně kvalifikované ID prostředku, například /subscriptions/B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c.

  • principalId je ID objektu principálu služby. Ujistěte se, že nepoužíváte ID aplikace ani ID objektu registrace aplikace.

  • description je popis přiřazení role čitelný člověkem.