我们有一个 AzureGroup,例如 CMR
,它有 > 400 名成员
。我想为该组的每个成员授予 cosmosDB 权限
。 CMR
的 Azure AD 身份(可以是用户、安全组、服务主体或托管身份)
可用于向组中的每个成员授予访问权限。
为此,我使用了 AzCosmosDBSqlRoleAssignment
并针对其 principlaid
的 CMR
的 principalID
运行了以下命令是9f58c295-efa6-4513-84c6-9c84d4033396
$resourceGroupName = "test"
$accountName = "test7782"
$contributorRoleDefinitionId = "00000000-0000-0000-0000-000000000001"
$principalId = "9f58c295-efa6-4513-84c6-9c84d4033396"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
-ResourceGroupName $resourceGroupName `
-RoleDefinitionId $contributorRoleDefinitionId `
-Scope "/" `
-PrincipalId $principalId
请注意,我使用 contributorRoleDefinitionId
作为具有 readMetadata
权限的 00000000-0000-0000-0000-000000000001
。
https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-setup-rbac :
该命令运行良好。但后来我使用Python API与数据库建立连接并得到权限错误。
# Azure Identity library provides Azure Active Directory (Azure AD) token authentication support across the Azure SDK.
# https://learn.microsoft.com/en-us/dotnet/api/azure.identity.azureclicredential?view=azure-dotnet
from azure.identity.aio import AzureCliCredential
azure_credential = AzureCliCredential()
我收到以下错误:
Request is blocked because principal [9f58c295-efa6-4513-84c6-9c84d4033396] does not have required RBAC permissions to perform action [Microsoft.DocumentDB/databaseAccounts/readMetadata] on resource [dbs/].
当我切换到为 CMR
的组中的每个成员
及其 principalid
授予权限时,效果非常好。但这对我来说很麻烦而且更难管理。关于如何在获得组许可的情况下使其工作有任何帮助/建议吗?
最佳答案
我的方法是正确的,但我授予了 principalid
的访问权限的M365
组,而不是 Mail-enabeled security groups
。 M365 group
似乎永远无法给予bulk access to CosmosDB RBAC
。而Windows Server AD
这是成功的,因为这是通过 Microsoft Identify Manager (MIM)
完成的https://idweb.microsoft.com/IdentityManagement/default.aspx :
进一步研究:
组建团体的方式有很多种:
微软 M365 组
M365
小组似乎用于公司内部和外部之间的协作。出于安全原因,M365
需要为组的每个成员提供对较低级别资源的访问权限,例如 CosmosDB read permission
.
Microsoft 识别管理器 (MIM)
Microsoft Identity Manager (MIM) 是一项允许您管理组织的用户、凭据和设备的服务。我的笔记本电脑需要位于 my company VPN
甚至可以访问 MIM 组。为了实现这种额外的安全性,个人用户不需要进一步的低级别访问。
关于python - 组的 AzCosmosDBSqlRoleAssignment 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77070355/