Sdílet prostřednictvím


Vytvoření servisního principu Azure pomocí Azure CLI

Automatizované nástroje, které používají služby Azure, by měly mít vždy omezená oprávnění k zajištění zabezpečení prostředků Azure. Místo toho, aby se aplikace přihlašovaly jako plně privilegovaný uživatel, nabízí Azure služební principály. Služební účet Azure je identita vytvořená pro použití s aplikacemi, hostovanými službami a automatizovanými nástroji. Tato identita se používá pro přístup k prostředkům.

V tomto návodu se naučíte, jak:

  • Vytvořte služebního principála
  • Přihlášení pomocí instančního objektu a hesla
  • Přihlásit se pomocí principálu služby a certifikátu
  • Správa rolí aplikačního objektu
  • Vytvoření prostředku Azure pomocí servisního principalu.
  • Resetování přihlašovacích údajů objektu služby

Požadavky

  • V předplatném musíte mít User Access Administrator nebo Role Based Access Control Administrator oprávnění, nebo vyšší, pro vytvoření servisního principálu. Seznam rolí dostupných pro řízení přístupu na základě role v Azure (Azure RBAC) najdete v tématu Předdefinované role Azure.

Vytvořte služebního principála

K vytvoření instančního objektu služeb použijte referenční příkaz az ad sp create-for-rbac v Azure CLI. Tento příklad nezadá --name parametr, takže se automaticky vytvoří název obsahující časové razítko.

Výstraha

Příkaz az ad sp create-for-rbac může upravit existující aplikaci nebo instanční objekt, pokud jiný objekt sdílí stejný zobrazovaný název. Zobrazované názvy nejsou jedinečné a můžou se změnit, což může vést ke ztrátě přihlašovacích údajů nebo nesprávným přiřazením RBAC. Místo toho použijte jedinečné ID objektu nebo ID aplikace .

az ad sp create-for-rbac

Výstupní konzola:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Pokud nedodržujete zásady pojmenovávání prostředků a plánujete později vytvořit roli a rozsah pro váš nový služební principál, příkaz az ad sp create-for-rbac bez parametrů je přijatelným řešením. Bez role a rozsahu ale nový služební principál nemá přístup k prostředkům. Jen existuje.

Při vytváření aplikačního objektu bez parametrů proveďte také následující kroky:

Poznámka:

Pokud váš účet nemá oprávnění ke vytvoření služebního principálu, az ad sp create-for-rbac vrátí chybovou zprávu obsahující "Nedostatečná oprávnění k dokončení operace." Požádejte správce Microsoft Entra o vytvoření služebního principála.

V adresáři Microsoft Entra ID, kde uživatelské nastavení Uživatelé mohou registrovat aplikace je nastaveno na Ne, musíte být členem jedné z následujících předdefinovaných rolí Microsoft Entra ID (které mají akci: microsoft.directory/applications/createAsOwner nebo microsoft.directory/applications/create):

Další informace o uživatelských nastaveních v Microsoft Entra ID naleznete v tématu Omezení, kdo může vytvářet aplikace.

Vytvoření služby hlavního uživatele s rolí a oblastí

Osvědčeným postupem je vždy při vytváření služebního principálu přiřadit konkrétní --role a --scopes. Postupujte takto:

  1. Určete správnou roli.

    Při určování role vždy používejte princip nejnižšího oprávnění. Například neudělujte instančnímu objektu oprávnění k předplatnému, pokud instanční contributor objekt potřebuje přístup jenom k úložišti Azure v rámci skupiny prostředků. Zvažte specializovanou roli jako přispěvatel dat úložiště blob. Úplný seznam dostupných rolí v Azure RBAC najdete v tématu Předdefinované role Azure.

  2. Získejte hodnotu parametru scopes.

    Vyhledejte a zkopírujte ID prostředku Azure, ke kterému entita služby potřebuje přístup. Tyto informace se obvykle nacházejí na stránce Properties nebo Endpoints jednotlivých prostředků v Azure Portal. Tady jsou běžné --scopes příklady, ale pro skutečný formát a hodnotu se spolehněte na ID prostředku.

    Scope Příklad
    Předplatné /subscriptions/mySubscriptionID
    Skupina zdrojů /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Virtuální počítač /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Služba souborů pro úložný účet /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Datová továrna /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Další příklady oborů najdete v tématu Vysvětlení rozsahu pro Azure RBAC.

  3. Vytvořte principál služby.

    V tomto příkladu se vytvoří nový instanční objekt s názvem myServicePrincipalName1 s oprávněními čtenáře ke všem prostředkům ve skupině prostředků RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    Parametr --scopes přijímá seznam oborů oddělených mezerami. V tomto příkladu se vytvoří nový instanční objekt s názvem myServicePrincipalName2 s oprávněními čtenáře ke všem prostředkům ve skupině prostředků myRG1. Tento služební objekt má také oprávnění čtenáře k virtuálnímu počítači myVM umístěnému v myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Pokud se rozhodnete, že jste novému principálu služby udělili příliš málo nebo příliš mnoho oprávnění, upravte oprávnění správou rolí principálu služby.

Vytvořte služební identitu pomocí proměnných

Můžete také vytvořit objekt služeb pomocí proměnných:

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Pro úplný seznam vlastností instančního objektu služby použijte az ad sp list a podívejte se na získání existujícího instančního objektu služby.

Výstraha

Při vytváření instančního objektu az ad sp create-for-rbac Azure pomocí příkazu výstup obsahuje přihlašovací údaje, které musíte chránit. Ujistěte se, že jste tyto přihlašovací údaje nezahrnuli do kódu, nebo je zaregistrujte ve správě zdrojového kódu. Jako alternativu zvažte použití spravovaných identit, pokud je k dispozici, abyste se vyhnuli nutnosti používat přihlašovací údaje.

Další kroky

Teď, když jste se naučili vytvořit instanční objekt Azure, přejděte k dalšímu kroku a zjistěte, jak používat instanční objekty s ověřováním založeným na heslech.