在az cli中将安全读取器角色授予Azure服务主体

在az cli中将安全读取器角色授予Azure服务主体,azure,azure-active-directory,azure-cli,terraform-provider-azure,service-principal,Azure,Azure Active Directory,Azure Cli,Terraform Provider Azure,Service Principal,我正在尝试允许Azure中的服务主体从Azure Active Directory读取,以便在使用Terraform时对AAD执行查找 我非常确定所需的角色是安全读取器角色,但是,我不确定要将服务主体添加到角色中,上下文需要是什么。我假设它位于tenantId上,但不确定az角色分配命令需要的格式 我目前使用的代码如下:- sp=$(az ad sp list --query "[?displayName=='[my app]'].appId" --output tsv) tenantId=$(

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

我非常确定所需的角色是安全读取器角色,但是,我不确定要将服务主体添加到角色中,上下文需要是什么。我假设它位于tenantId上,但不确定az角色分配命令需要的格式

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

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]。。。等等,但我不知道租赁级别权限的格式是什么?

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

您正在搜索的是将角色添加到Azure广告中

要向您显示如何添加AAD角色,请使用PowerShell向用户添加AAD角色:

以下是如何使用PowerShell添加RBAC角色:


这是两个完全不同的东西,使用两个不同的模块。我不知道CLI中是否有支持AzureAD模块的插件。

好的,谢谢powershell链接。不幸的是,我们目前正在linux上运行此功能,并且没有安装powershell。此外,az角色分配的错误消息有点令人困惑,因为它确实提到了无效的订阅或基于租赁的资源。哦,好吧!然后,您可以使用云通过门户使用它Shell@MatthewDarwin这就像你试图把车钥匙给别人,然后用它来开门一样。它有两个不同的位置,一个键对另一个不起作用。az角色分配用于授予RBAC汽车权限,而您希望授予Azure AD房屋权限。@MatthewDarwin在订阅中,您有一个名为Security Reader的角色,在AAD中,您有另一个名为Security Reader的角色,这两个角色是不同的,可以访问不同的资源。虽然我理解您的类似地,考虑到您可以在门户或powershell中完成所有这些工作,这是没有意义的。AZCLI应该具有与这两种语言完全相同的功能:实际上是同一种功能,只是访问方式略有不同。
Add-AzureADDirectoryRoleMember
   -ObjectId <String>
   -RefObjectId <String>
   [-InformationAction <ActionPreference>]
   [-InformationVariable <String>]
   [<CommonParameters>]
New-AzRoleAssignment
   -ObjectId <String>
   [-Scope <String>]
   -RoleDefinitionName <String>
   [-AllowDelegation]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]