python - 组的 AzCosmosDBSqlRoleAssignment 问题

标签 python azure azure-cosmosdb azure-identity

我们有一个 AzureGroup,例如 CMR,它有 > 400 名成员。我想为该组的每个成员授予 cosmosDB 权限CMRAzure AD 身份(可以是用户、安全组、服务主体或托管身份) 可用于向组中的每个成员授予访问权限。

为此,我使用了 AzCosmosDBSqlRoleAssignment 并针对其 principlaidCMRprincipalID 运行了以下命令是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-000000000001https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-setup-rbac :

enter image description here

该命令运行良好。但后来我使用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 groupsM365 group似乎永远无法给予bulk access to CosmosDB RBAC 。而Windows Server AD这是成功的,因为这是通过 Microsoft Identify Manager (MIM) 完成的https://idweb.microsoft.com/IdentityManagement/default.aspx :

进一步研究:

组建团体的方式有很多种:

enter image description here

微软 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/

相关文章:

python - `pipwheel`命令可以创建*通用*轮子吗?

python - Peewee MySQL 服务器已消失错误

azure - 将 Azure 设置为在服务器崩溃时自动重新启动

azure-cosmosdb - Cosmos DB 在本地的一致性保证

azure - Cosmos DB SQL API 的架构迁移。说得通?

python - 用相似的列值填充数据框中的缺失值Python

python - Pandas 使用 DataFrame.query 根据字符串长度过滤字符串数据

销毁/重新创建 VM 后出现 Azure DNS 问题

azure - 仅允许在启用 Azure RBAC 的情况下对 Azure Key Vault 中的 key 进行加密访问

c# - 如何将文件上传到 blob 存储并从附件中的 cosmosdb 文档引用它