Použití řízení přístupu na základě role ve 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í Řízení přístupu na základě role je aktuálně zvýrazněné.
Tento článek vás provede postupem udělení přístupu identit ke správě účtu Azure Cosmos DB for NoSQL a jeho prostředků.
Důležité
Kroky v tomto článku se týkají pouze přístupu řídicí roviny k provádění operací na samotném účtu všech prostředků v hierarchii účtu. Informace o správě rolí, definic a přiřazení řídicí roviny najdete v tématu udělení přístupu na základě role roviny dat.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Existující účet služby Azure Cosmos DB.
- Jedna nebo více existujících identit v Microsoft Entra ID.
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 .
Příprava definice role
Nejprve musíte připravit definici role se seznamem actions
pro udělení přístupu ke správě prostředků účtu ve službě Azure Cosmos DB.
Zobrazí seznam všech definic rolí přidružených k vašemu účtu služby Azure Cosmos DB pomocí az role definition list
. Zkontrolujte výstup a vyhledejte definici role s názvem Předdefinovaný přispěvatel dat Cosmos DB. Výstup obsahuje jedinečný identifikátor definice role ve id
vlastnosti. Tuto hodnotu si poznamenejte, protože je potřeba ji použít v kroku přiřazení dále v tomto průvodci.
az role definition list \
--name "Cosmos DB Operator"
[
{
"assignableScopes": [
"/"
],
"description": "Lets you manage Azure Cosmos DB accounts, but not access data in them. Prevents access to account keys and connection strings.",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa",
"name": "230815da-be43-4aae-9cb4-875f7bd000aa",
"permissions": [
{
"actions": [
"Microsoft.DocumentDb/databaseAccounts/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Support/*",
"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action"
],
"condition": null,
"conditionVersion": null,
"dataActions": [],
"notActions": [
"Microsoft.DocumentDB/databaseAccounts/dataTransferJobs/*",
"Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*",
"Microsoft.DocumentDB/databaseAccounts/regenerateKey/*",
"Microsoft.DocumentDB/databaseAccounts/listKeys/*",
"Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/*",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/delete",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/delete",
"Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/delete",
"Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/delete"
],
"notDataActions": []
}
],
"roleName": "Cosmos DB Operator",
"roleType": "BuiltInRole",
"type": "Microsoft.Authorization/roleDefinitions",
}
]
Poznámka:
V tomto příkladu id
by hodnota byla /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa
. Tento příklad používá fiktivní data a váš identifikátor by se od tohoto příkladu odlišil. Identifikátor (230815da-be43-4aae-9cb4-875f7bd000aa
) je však globálně jedinečný napříč všemi definicemi rolí v Azure.
Přihlaste se k webu Azure Portal (https://portal.azure.com).
Do globálního panelu hledání zadejte skupinu prostředků.
V rámci služeb vyberte skupiny prostředků.
V podokně Skupiny prostředků vyberte existující skupinu prostředků.
Poznámka:
Tento ukázkový snímek obrazovky obsahuje
msdocs-identity-example
skupinu prostředků. Váš skutečný název skupiny prostředků se může lišit.V podokně skupiny prostředků vyberte v nabídce služby řízení přístupu (IAM ).
V podokně Řízení přístupu (IAM) vyberte Role.
V části Role použijte hledanou frázi Cosmos DB a vyhledejte definici role Operátor služby Cosmos DB. Pak vyberte možnost Zobrazit přidruženou k této definici.
V dialogovém okně Definice role operátora služby Cosmos DB sledujte akce přiřazené jako součást této definice role.
Zavřete dialogové okno definice role operátora služby Cosmos DB.
Slouží Get-AzRoleDefinition
k výpisu všech definic rolí přidružených k vašemu účtu služby Azure Cosmos DB. Zkontrolujte výstup a vyhledejte definici role s názvem Předdefinovaný přispěvatel dat Cosmos DB. Výstup obsahuje jedinečný identifikátor definice role ve Id
vlastnosti. Tuto hodnotu si poznamenejte, protože je potřeba ji použít v kroku přiřazení dále v tomto průvodci.
$parameters = @{
Name = "Cosmos DB Operator"
}
Get-AzRoleDefinition @parameters
Name : Cosmos DB Operator
Id : 230815da-be43-4aae-9cb4-875f7bd000aa
IsCustom : False
Description : Lets you manage Azure Cosmos DB accounts, but not access data in them. Prevents access to account keys and connection strings.
Actions : {Microsoft.DocumentDb/databaseAccounts/*, Microsoft.Insights/alertRules/*, Microsoft.Authorization/*/read, Microsoft.ResourceHealth/availabilityStatuses/read…}
NotActions : {Microsoft.DocumentDB/databaseAccounts/dataTransferJobs/*, Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*, Microsoft.DocumentDB/databaseAccounts/regenerateKey/*, Microsoft.DocumentDB/databaseAccounts/listKeys/*…}
DataActions : {}
NotDataActions : {}
AssignableScopes : {/}
Poznámka:
V tomto příkladu Id
by hodnota byla 230815da-be43-4aae-9cb4-875f7bd000aa
. Identifikátor je globálně jedinečný napříč všemi definicemi rolí v Azure.
Přiřazení role identitě
Teď přiřaďte nově definovanou roli identitě, aby vaše aplikace mohly přistupovat k prostředkům ve službě Azure Cosmos DB.
Důležité
Tento úkol přiřazení vyžaduje, abyste již měli jedinečný identifikátor jakékoli identity, kterou chcete udělit oprávnění řízení přístupu na základě role.
Slouží
az group show
k opětovnému získání metadat pro aktuální skupinu prostředků.az group show \ --name "<name-of-existing-resource-group>"
Prohlédněte si výstup předchozího příkazu. Poznamenejte si hodnotu
id
vlastnosti pro tuto skupinu prostředků, protože je nutné ji použít v dalším kroku.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }
Poznámka:
V tomto příkladu
id
by hodnota byla/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example
. Tento příklad používá fiktivní data a váš identifikátor by se od tohoto příkladu odlišil. Toto je zkrácený příklad výstupu.Přiřaďte novou roli pomocí
az role assignment create
. Pro argument použijte identifikátor--scope
vaší skupiny prostředků, identifikátor role pro-role
argument a jedinečný identifikátor vaší identity pro--assignee
argument.az role assignment create \ --assignee "<your-principal-identifier>" \ --role "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0" \ --scope "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
Poznámka:
V tomto ukázkovém příkazu
scope
byl nastaven na fiktivní příklad/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example
z příkladu předchozího kroku. Identifikátor vaší skupiny prostředků by se od tohoto příkladu odlišil. Bylarole
také nastavena na fiktivní/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
. Identifikátor vaší role by byl opět odlišný.Podívejte se na výstup příkazu. Výstup obsahuje jedinečný identifikátor přiřazení ve
id
vlastnosti.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "name": "ffffffff-5555-6666-7777-aaaaaaaaaaaa", "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "resourceGroup": "msdocs-identity-example", "roleDefinitionId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "scope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "type": "Microsoft.Authorization/roleAssignments" }
Poznámka:
V tomto příkladu
id
je/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
vlastnost, která je dalším fiktivním příkladem.Pokud chcete udělit přístup k účtu z jiných identit, které chcete použít, opakujte tyto kroky.
Tip
Tento postup můžete opakovat pro tolik identit, kolik chcete. Tyto kroky se obvykle opakují, aby vývojáři měli přístup k účtu pomocí své lidské identity a povolili aplikacím přístup pomocí spravované identity.
Vytvořte nový soubor Bicep, který definuje přiřazení role. Pojmenujte soubor control-plane-role-assignment.bicep.
metadata description = 'Assign RBAC role for control plane access to Azure Cosmos DB.' @description('Id of the role definition to assign to the targeted principal in the context of the account.') param roleDefinitionId string @description('Id of the identity/principal to assign this role in the context of the account.') param identityId string resource assignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: guid(subscription().id, resourceGroup().id, roleDefinitionId, identityId) scope: resourceGroup() properties: { roleDefinitionId: roleDefinitionId principalId: identityId } }
Vytvořte nový soubor parametrů Bicep s názvem control-plane-role-assignment.
bicepparam
. V tomto souboru parametrů; přiřaďte parametru dříve zaznamenané identifikátoryroleDefinitionId
definic rolí a jedinečný identifikátor vaší identity k parametruidentityId
.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'
Nasaďte tuto šablonu Bicep pomocí
az deployment group create
.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters control-plane-role-assignment.bicepparam \ --template-file control-plane-role-assignment.bicep
Pokud chcete udělit přístup k účtu z jiných identit, které chcete použít, opakujte tyto kroky.
Tip
Tento postup můžete opakovat pro tolik identit, kolik chcete. Tyto kroky se obvykle opakují, aby vývojáři měli přístup k účtu pomocí své lidské identity a povolili aplikacím přístup pomocí spravované identity.
V podokně Řízení přístupu (IAM) vyberte Přidat a potom přidat přiřazení role.
V podokně Role vyhledejte
Azure Cosmos DB
a pak vyberte roli Vlastník řídicí roviny služby Azure Cosmos DB, kterou jste vytvořili dříve v této příručce. Pak vyberte Další.Tip
Volitelně můžete seznam rolí filtrovat tak, aby zahrnoval pouze vlastní role.
V podokně Členové vyberte možnost Vybrat členy . V dialogovém okně Členové vyberte identitu, kterou chcete udělit této úrovni přístupu k účtu služby Azure Cosmos DB, a pak pomocí možnosti Vybrat potvrďte svou volbu.
Poznámka:
Tento snímek obrazovky znázorňuje příklad uživatele s názvem Kai Carter s objektem zabezpečení
kai@adventure-works.com
.Zpět v podokně Členové zkontrolujte vybrané členy a pak vyberte Zkontrolovat a přiřadit.
V podokně Zkontrolovat a přiřadit zkontrolujte zadané možnosti pro nové přiřazení role. Nakonec vyberte Zkontrolovat a přiřadit.
Počkejte, až portál dokončí vytvoření přiřazení role.
Přiřaďte novou roli pomocí
New-AzRoleAssignment
. Použijte název role proRoleDefinitionName
parametr a jedinečný identifikátor vaší identity proObjectId
parametr.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" ObjectId = "<your-principal-identifier>" RoleDefinitionName = "Azure Cosmos DB Control Plane Owner" } New-AzRoleAssignment @parameters
Podívejte se na výstup příkazu. Výstup obsahuje jedinečný identifikátor přiřazení ve
RoleAssignmentId
vlastnosti.RoleAssignmentName : ffffffff-5555-6666-7777-aaaaaaaaaaaa RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example DisplayName : Kai Carter SignInName : <kai@adventure-works.com> RoleDefinitionName : Azure Cosmos DB Control Plane Owner RoleDefinitionId : e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5
Poznámka:
V tomto příkladu
RoleAssignmentId
je/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
vlastnost, která je dalším fiktivním příkladem. Toto je podmnožina typického výstupu nasazení, aby bylo jasné.Pokud chcete udělit přístup k účtu z jiných identit, které chcete použít, opakujte tyto kroky.
Tip
Tento postup můžete opakovat pro tolik identit, kolik chcete. Tyto kroky se obvykle opakují, aby vývojáři měli přístup k účtu pomocí své lidské identity a povolili aplikacím přístup pomocí spravované identity.
Ověření přístupu k řídicí rovině v kódu
Nakonec ověřte, že jste správně udělili přístup pomocí kódu aplikace a sady Azure Management SDK ve vašem preferovaném programovacím jazyce.
using Azure.Identity;
using Azure.ResourceManager;
DefaultAzureCredential credential = new();
ArmClient client = new(credential);
Důležité
Tento vzorový kód používá knihovny Azure.ResourceManager.CosmosDB
z Azure.Identity
NuGetu.