Použití spravovaných identit se službami Azure k připojení ke službě Azure Cosmos DB for NoSQL
PLATÍ PRO: NoSQL
Diagram posloupnosti průvodce nasazením, včetně těchto umístění, v uvedeném pořadí: Přehled, Koncepty, Příprava, Řízení přístupu na základě role, Síť a Reference Umístění Připravit je aktuálně zvýrazněné.
Tento článek popisuje kroky potřebné k vytvoření spravovaných identit pro použití s nasazenou aplikací připojenou ke službě Azure Cosmos DB for NoSQL.
Spravované identity jsou jedním z mnoha typů prostředků identit v Microsoft Entra ID pro aplikace, které se používají při připojování ke službám, které podporují ověřování Microsoft Entra. Spravované identity se dají použít místo tradičních přihlašovacích údajů vlastněných prostředky, jako jsou klíče. Spravované identity v Azure poskytují vašim aplikacím způsob, jak získat token Microsoft Entra pro ověřování ve službách Azure, aniž byste museli psát velké množství ověřovacího kódu.
Microsoft Entra můžete použít k ověřování ve službách Azure, včetně mimo jiné:
- Azure SQL
- Azure AI
- Azure Cosmos DB
- Azure Storage
- Azure Event Hubs
- Azure Container Registry
Spravované identity můžete použít k reprezentaci objektu zabezpečení, který se ověřuje ve službě Azure z jiných služeb Azure, včetně mimo jiné:
- Azure Kubernetes Service
- Azure Container Apps
- Azure Virtual Machines
- Azure Functions
- Azure App Service
- Azure Spring Apps
- Azure Service Fabric
Spravované identity umožňují několik zabezpečených scénářů, kdy se k sobě můžou vzájemně připojovat různé služby Azure. Mezi některé příklady patří:
- Vytvoření spravované identity přiřazené systémem pro aplikaci v Azure Spring Apps pro připojení a dotazování účtu Azure SQL
- Použití jedné spravované identity přiřazené uživatelem se službou Azure Kubernetes Service a Azure Functions k vydávání požadavků na účet Azure AI
- Použití spravované identity pro účet služby Azure Cosmos DB k ukládání klíčů ve službě Azure Key Vault
Další informace najdete v tématu spravované identity pro prostředky Azure.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Pokud se rozhodnete používat Azure PowerShell místně:
- Nainstalujte nejnovější verzi modulu Az PowerShell.
- Připojte se ke svému účtu Azure pomocí rutiny Connect-AzAccount .
- Pokud se rozhodnete použít Azure Cloud Shell:
- Další informace najdete v přehledu služby Azure Cloud Shell .
Vytvoření služby Azure se spravovanou identitou přiřazenou systémem
Vytvořte novou službu Azure se spravovanou identitou přiřazenou systémem. Tato část vytvoří prostředek Azure Container Instances .
Slouží
az container create
k vytvoření nové instance kontejneru. Nakonfigurujte účet tak, aby používal spravovanou identitu přiřazenou systémem pomocí parametruassign-identity
.az container create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-new-container>" \ --image mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled \ --cpu 1 \ --memory 2 \ --assign-identity
Získejte podrobnosti o spravované identitě přiřazené systémem pomocí
az container show
dotazu JMESPath.az container show \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-container>" \ --query "identity"
Zkontrolujte výstup příkazu. Měl by obsahovat jedinečné identifikátory identity a tenanta.
{ "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned", "userAssignedIdentities": null }
Vytvořte nový soubor Bicep pro definování nové instance kontejneru. Pojmenujte soubor container-instance.bicep. Nastavte tyto vlastnosti pro instanci kontejneru:
Hodnota name
Použití parametru s názvem instanceName
location
Nastavení umístění skupiny prostředků identity.type
SystemAssigned
properties.osType
Linux
properties.containers[0].name
aspnet-sample
properties.containers[0].properties.image
mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled
properties.containers[0].properties.resources.requests.cpu
1
properties.containers[0].properties.resources.requests.memoryInGB
2
metadata description = 'Create Azure Container Instance resource with system-assigned managed identity.' @description('Name of the Azure Container Instances resource.') param instanceName string resource instance 'Microsoft.ContainerInstance/containerGroups@2023-05-01' = { name: instanceName location: resourceGroup().location identity: { type: 'SystemAssigned' } properties: { osType: 'Linux' containers: [ { name: 'aspnet-sample' properties: { image: 'mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled' resources: { requests: { cpu: 1 memoryInGB: 2 } } } } ] } } output systemAssignedIdentity object = instance.identity
Vytvořte nový soubor parametrů Bicep s názvem container-instance.
bicepparam
. V tomto souboru parametrů vytvořte jedinečný název instance kontejneru pomocí parametruinstanceName
.using './container-instance.bicep' param instanceName = '<name-of-new-container-instance>'
Nasaďte šablonu Bicep pomocí
az deployment group create
. Zadejte název šablony Bicep, souboru parametrů a skupiny prostředků Azure.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters "container-instance.bicepparam" \ --template-file "container-instance.bicep"
Zkontrolujte výstup z nasazení. Výstup obsahuje objekt identity z instance kontejneru
properties.outputs.systemAssignedIdentity.value
ve vlastnosti.{ "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned" }
Přihlaste se k webu Azure Portal (https://portal.azure.com).
Do globálního vyhledávacího panelu zadejte Azure Container Instances .
V rámci služeb vyberte instance kontejneru.
V podokně Instances kontejneru vyberte Vytvořit.
V podokně Základy nakonfigurujte následující možnosti a pak vyberte Zkontrolovat a vytvořit:
Hodnota Předplatné Vybrat předplatné Azure Skupina prostředků Vytvoření nové skupiny prostředků nebo výběr existující skupiny prostředků Název kontejneru Zadejte globálně jedinečný název. Oblast Vyberte podporovanou oblast Azure pro vaše předplatné. Tip
U výchozích hodnot můžete ponechat všechny nezadané možnosti.
V podokně Zkontrolovat a vytvořit počkejte na úspěšné ověření účtu a pak vyberte Vytvořit.
Portál automaticky přejde do podokna Nasazení . Počkejte, až se nasazení dokončí.
Po dokončení nasazení vyberte Přejít k prostředku a přejděte k novému prostředku Azure Container Instances.
V podokně pro novou instanci kontejneru vyberte v části Nastavení nabídky služby možnost Identita.
V podokně Identita povolte spravovanou identitu přiřazenou systémem nastavením možnosti Stav na Zapnuto. Pak vyberte Uložit a vyřešte všechny výzvy k potvrzení změny.
Jakmile je spravovaná identita přiřazená systémem připravená, zkontrolujte hodnotu vlastnosti ID objektu (objektu zabezpečení). Hodnota této vlastnosti je jedinečný identifikátor identity.
Tip
Na tomto příkladu snímku obrazovky je jedinečný identifikátor spravované identity
bbbbbbbb-1111-2222-3333-cccccccccccc
přiřazené systémem .
Vytvořte objekt představující kontejner, který používáte
New-AzContainerInstanceObject
, a uložte ho do proměnné s názvem$container
. Pak pomocí objektu kontejneru vytvořte novou instanci kontejneru sNew-AzContainerGroup
. Nakonfigurujte účet tak, aby používal spravovanou identitu přiřazenou systémem nastavením parametruIdentityType
naSystemAssigned
.$parameters = @{ Name = "aspnet-sample" Image = "mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled" RequestCpu = 1 RequestMemoryInGb = 2 } $container = New-AzContainerInstanceObject @parameters $parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-new-container>" Container = $container OsType = "Linux" Location = "<azure-region>" IdentityType = "SystemAssigned" } New-AzContainerGroup @parameters
Získejte podrobnosti o spravované identitě přiřazené systémem a
Get-AzContainerGroup
Format-List
vyberte pouzeIdentity
vlastnost.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-container>" } Get-AzContainerGroup @parameters | Format-List Identity
Zkontrolujte výstup příkazu. Měl by obsahovat jedinečné identifikátory identity a tenanta.
Identity : { "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned" }
Vytvoření spravované identity přiřazené uživatelem
Vytvořte spravovanou identitu přiřazenou uživatelem, kterou lze použít s jednou nebo více službami Azure přenositelným způsobem.
Slouží
az identity create
k vytvoření nové spravované identity přiřazené uživatelem ve skupině prostředků Azure.az identity create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-new-managed-identity>"
Získání seznamu spravovaných identit přiřazených uživatelem ve skupině prostředků pomocí
az identity list
az identity list \ --resource-group "<name-of-existing-resource-group>"
Zkontrolujte výstup příkazu. Poznamenejte si hodnotu
id
pole jako tento plně kvalifikovaný identifikátor prostředku, který slouží k přiřazení spravované identity přiřazené uživatelem k prostředku Azure.{ "clientId": "11112222-bbbb-3333-cccc-4444dddd5555", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned", "location": "<azure-location>", "name": "msdocs-identity-example-user-assigned", "principalId": "cccccccc-dddd-eeee-3333-444444444444", "resourceGroup": "msdocs-identity-example", "systemData": null, "tags": {}, "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }
Poznámka:
V tomto příkladu
id
by hodnota byla/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
. Tento příklad používá fiktivní data a váš identifikátor by se od tohoto příkladu odlišil.
Vytvořte soubor Bicep pro definování spravované identity přiřazené uživatelem a pojmenujte soubor přiřazený uživatelem-managed-identity.bicep. Nastavte tyto minimální vlastnosti:
Hodnota name
Použití volitelného parametru s názvem identityName
a vygenerování jedinečné výchozí hodnotylocation
Nastavení umístění skupiny prostředků metadata description = 'Create a user-assigned managed identity.' param identityName string = uniqueString(subscription().id, resourceGroup().id) resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = { name: identityName location: resourceGroup().location } output id string = identity.id output name string = identity.name
Nasaďte šablonu Bicep pomocí
az deployment group create
. Zadejte název šablony Bicep a skupiny prostředků Azure.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file "user-assigned-managed-identity.bicep"
Zkontrolujte výstup z nasazení. Výstup obsahuje jedinečný identifikátor spravované identity ve
properties.outputs.name.value
vlastnosti. Tuto hodnotu si poznamenejte, protože je potřeba ji použít při vytváření nového prostředku Azure dále v tomto průvodci.{ "type": "String", "value": "msdocs-identity-example-user-assigned" }
Poznámka:
V tomto příkladu by to
name.value
bylomsdocs-identity-example-user-assigned
. Tento příklad používá fiktivní data a váš identifikátor by se od tohoto příkladu odlišil.
Zadejte spravovanou identitu do globálního panelu hledání.
V rámci služeb vyberte Spravované identity.
V podokně Instances kontejneru vyberte Vytvořit.
V podokně Základy nakonfigurujte následující možnosti a pak vyberte Zkontrolovat a vytvořit:
Hodnota Předplatné Vybrat předplatné Azure Skupina prostředků Vytvoření nové skupiny prostředků nebo výběr existující skupiny prostředků Oblast Vyberte podporovanou oblast Azure pro vaše předplatné. Název Zadejte globálně jedinečný název. V podokně Zkontrolovat a vytvořit počkejte na úspěšné ověření účtu a pak vyberte Vytvořit.
Portál automaticky přejde do podokna Nasazení . Počkejte, až se nasazení dokončí.
Počkejte na dokončení nasazení spravované identity.
Vytvořte novou spravovanou identitu přiřazenou uživatelem pomocí
New-AzUserAssignedIdentity
ve vaší skupině prostředků Azure.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-new-managed-identity>" Location = "<azure-region>" } New-AzUserAssignedIdentity @parameters
Umožňuje
Get-AzUserAssignedIdentity
získat seznam spravovaných identit přiřazených uživatelem ve vaší skupině prostředků.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" } Get-AzUserAssignedIdentity @parameters | Format-List Name, Id
Zkontrolujte výstup příkazu. Poznamenejte si hodnotu
Id
pole jako tento plně kvalifikovaný identifikátor prostředku, který slouží k přiřazení spravované identity přiřazené uživatelem k prostředku Azure.Name : msdocs-identity-example-user-assigned Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
Poznámka:
V tomto příkladu
Id
by hodnota byla/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
. Tento příklad používá fiktivní data a váš identifikátor by se od tohoto příkladu odlišil.
Vytvoření služby Azure se spravovanou identitou přiřazenou uživatelem
Přiřaďte dříve vytvořenou spravovanou identitu přiřazenou uživatelem k nové hostitelské službě Azure. Tato část vytvoří prostředek webové aplikace Aplikace Azure Services.
Vytvořte nový plán služby App Service pomocí
az appservice plan create
.az appservice plan create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-new-plan>"
Přiřaďte spravovanou identitu přiřazenou uživatelem k nové webové aplikaci pomocí
az webapp create
.id
Jako hodnotu parametru použijte pole zaznamenané dříve v tomto průvodcissign-identity
.az webapp create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-web-app>" \ --plan "<name-of-existing-plan>" \ --assign-identity "<resource-id-recorded-earlier>"
Získejte podrobnosti o všech identitách přiřazených k tomuto účtu pomocí
az webapp show
dotazu JMESPath.az webapp show \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-account>" \ --query "identity"
Zkontrolujte výstup příkazu. Měla by obsahovat spravovanou identitu přiřazenou uživatelem.
{ "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": { "clientId": "11112222-bbbb-3333-cccc-4444dddd5555", "principalId": "cccccccc-dddd-eeee-3333-444444444444" } } }
Vytvořte další soubor Bicep s názvem app-service-web-app.bicep a definujte plán služby Aplikace Azure a webovou aplikaci. Nastavte pro tyto prostředky tyto vlastnosti:
Prostředek Hodnota name
Existující spravovaná identita Použití parametru s názvem identityName
name
Plán služby App Service Použití parametru s názvem planName
location
Plán služby App Service Nastavení umístění skupiny prostředků name
Webová aplikace Použití parametru s názvem webAppName
location
Webová aplikace Nastavení umístění skupiny prostředků identity.type
UserAssigned
identity.userAssignedIdentities.{identity.id}
{}
properties.serverFarmId
plan.id
metadata description = 'Creates an Azure App Service plan and web app with a user-assigned managed identity.' @description('The name of the app service plan.') param planName string @description('The name of the web app.') param webAppName string @description('The name of the user-assigned managed identity.') param identityName string resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = { name: identityName } resource plan 'Microsoft.Web/serverfarms@2023-12-01' = { name: planName location: resourceGroup().location } resource webApp 'Microsoft.Web/sites@2023-12-01' = { name: webAppName location: resourceGroup().location identity: { type: 'UserAssigned' userAssignedIdentities: { '${identity.id}': {} } } properties: { serverFarmId: plan.id } } output userAssignedIdentity object = webApp.identity
Vytvořte soubor parametrů Bicep s názvem app-service-web-app.
bicepparam
. V tomto souboruparametrůchplanName
webAppName
Potom jako hodnotu parametru zadejte název spravované identity přiřazené uživatelemidentityName
.using './app-service-web-app.bicep' param planName = '<name-of-new-app-service-plan>' param webAppName = '<name-of-new-web-app>' param identityName = '<name-of-existing-managed-identity>'
Nasaďte šablonu Bicep pomocí
az deployment group create
. Zadejte název šablony Bicep, souboru parametrů a skupiny prostředků Azure.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters "app-service-web-app.bicepparam" \ --template-file "app-service-web-app.bicep"
Zkontrolujte výstup z nasazení. Výstup obsahuje objekt identity z instance kontejneru
properties.outputs.userAssignedIdentity.value
ve vlastnosti.{ "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": { "clientId": "11112222-bbbb-3333-cccc-4444dddd5555", "principalId": "cccccccc-dddd-eeee-3333-444444444444" } } }
Na panelu globálního vyhledávání zadejte webovou aplikaci .
V rámci služeb vyberte App Services.
V podokně App Services vyberte Vytvořit a pak Web App.
V podokně Základy nakonfigurujte následující možnosti a pak vyberte Zkontrolovat a vytvořit:
Hodnota Předplatné Vybrat předplatné Azure Skupina prostředků Vytvoření nové skupiny prostředků nebo výběr existující skupiny prostředků Název Zadejte globálně jedinečný název. Plán Vytvoření nového plánu nebo výběr existujícího plánu V podokně Zkontrolovat a vytvořit počkejte na úspěšné ověření účtu a pak vyberte Vytvořit.
Portál automaticky přejde do podokna Nasazení . Počkejte, až se nasazení dokončí.
Po dokončení nasazení vyberte Přejít k prostředku a přejděte k novému prostředku Azure Container Instances.
V podokně pro novou instanci kontejneru vyberte v části Nastavení nabídky služby možnost Identita.
V podokně Identita vyberte možnost Přiřazený uživatelem.
Výběrem možnosti Přidat otevřete dialogové okno pro přiřazení existujících spravovaných identit přiřazených uživatelem. V dialogovém okně vyberte existující spravovanou identitu přiřazenou uživatelem a pak vyberte Přidat.
Nakonec zkontrolujte seznam spravovaných identit přiřazených uživatelem přidružených k vaší webové aplikaci. Měl by obsahovat název identity, název skupiny prostředků a identifikátor předplatného.
Slouží
New-AzWebApp
k vytvoření nové webové aplikace Aplikace Azure Service.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-new-web-app>" Location = "<azure-region>" } New-AzWebApp @parameters
Opravte nově vytvořenou
identity.type
webovou aplikaci, abyste nastavili vlastnostUserAssigned
, a přidejte do vlastnosti existující spravovanou identitu přiřazenou uživatelemidentity.userAssignedIdentities
. Pokud chcete tuto úlohu provést, nejprve zadejteid
pole zaznamenané dříve v tomto průvodci jako hodnotuidentityId
proměnné prostředí. Pak vytvořte objekt datové části a převeďte ho na JSON. Nakonec pomocíInvoke-AzRestMethod
PATCH
příkazu HTTP aktualizujte existující webovou aplikaci.$identityId = "<resource-id-recorded-earlier>" $payload = @{ identity = @{ type = "UserAssigned" userAssignedIdentities = @{ "$identityId" = @{} } } } | ConvertTo-Json -Depth 3 $parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-web-app>" ResourceProviderName = 'Microsoft.Web' ResourceType = 'sites' ApiVersion = '2023-12-01' Method = 'PATCH' Payload = $payload } Invoke-AzRestMethod @parameters
Získejte podrobnosti o všech identitách přiřazených k webové aplikaci pomocí
Get-AzWebApp
Select-Object
ConvertTo-Json
a vyberte pouzeIdentity
vlastnost.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-web-app>" } Get-AzWebApp @parameters | Select-Object Identity | ConvertTo-Json -Depth 3
Zkontrolujte výstup příkazu. Měl by obsahovat jedinečné identifikátory identity a tenanta.
{ "Identity": { "Type": "UserAssigned", "TenantId": null, "PrincipalId": null, "UserAssignedIdentities": { "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": { "PrincipalId": "cccccccc-dddd-eeee-3333-444444444444", "ClientId": "11112222-bbbb-3333-cccc-4444dddd5555" } } } }