0

我正在尝试允许 Azure 中的服务主体从 Azure Active Directory 中读取数据,以便在使用 Terraform 时对 AAD 执行查找。

我很确定所需的角色是安全读取者角色,但是,我不确定将服务主体添加到角色所需的上下文是什么。我假设它在tenantId上,但不确定该az role assignment命令需要的格式?

我目前使用的代码如下:-

sp=$(az ad sp list --query "[?displayName=='[my app]'].appId" --output tsv)
tenantId=$(az account show --query tenantId --output tsv)
az role assignment create --role "Secuity Reader" --assignee $sp --scope $tenantId

但这并不能正确验证范围,因此显然不仅仅是租户 ID。我知道订阅级别范围会是/subscriptions/[subscription id]...等,但我不知道租赁级别权限的格式是什么?

4

2 回答 2

1

az role assignment命令是基于订阅的命令,使用它您只能将分配添加到特定订阅,即所谓的 RBAC(基于资源的访问控制)分配。

您正在搜索的是将角色添加到 Azure AD。

为了向您展示添加一个,这是您如何使用 PowerShell 向用户添加 AAD 角色:https ://docs.microsoft.com/en-us/powershell/module/azuread/add-azureaddirectoryrolemember?view=azureadps-2.0

Add-AzureADDirectoryRoleMember
   -ObjectId <String>
   -RefObjectId <String>
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]

这是使用 PowerShell 添加 RBAC 角色的方法:https ://docs.microsoft.com/en-us/powershell/module/az.resources/new-azroleassignment?view=azps-4.4.0

New-AzRoleAssignment
   -ObjectId <String>
   [-Scope <String>]
   -RoleDefinitionName <String>
   [-AllowDelegation]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

使用两个不同的模块是两件完全不同的事情。我不知道 CLI 是否有支持 AzureAD 模块的插件。

于 2020-01-10T14:51:41.690 回答
0

使用az restcurl遵循文档以获取更多详细信息 分配 Azure 角色

像这样的东西,

az rest --method PUT --resource "https://management.azure.com/" --uri "https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2015-07-01" --headers 'Content-Type=application/json' --body $jsonBody

根据文档链接,使用 jsonBody 变量构建 json 对象。

于 2022-02-22T15:41:49.743 回答