你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

New-AzureRmRoleDefinition

在 Azure RBAC 中创建自定义角色。 提供 JSON 角色定义文件或 PSRoleDefinition 对象作为输入。 首先,使用 Get-AzureRmRoleDefinition 命令生成基线角色定义对象。 然后,根据需要修改其属性。 最后,使用此命令使用角色定义创建自定义角色。

警告

截至 2024 年 2 月 29 日,AzureRM PowerShell 模块已正式弃用。 为了确保持续获得支持和更新,建议用户从 AzureRM 迁移到 Az PowerShell 模块。

尽管 AzureRM 模块仍可能正常运行,但它不再维护或受支持,但会根据用户的自由裁量权和风险继续使用任何继续使用模块。 有关过渡到 Az 模块的指导,请参阅我们的迁移资源

语法

New-AzureRmRoleDefinition
   [-InputFile] <String>
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzureRmRoleDefinition
   [-Role] <PSRoleDefinition>
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

说明

New-AzureRmRoleDefinition cmdlet 在 Azure 基于角色访问控制创建自定义角色。 将角色定义作为命令的输入作为 JSON 文件或 PSRoleDefinition 对象提供。 输入角色定义必须包含以下属性:

  1. DisplayName:自定义角色的名称
  2. 说明:总结角色授予的访问权限的角色的简短说明。
  3. 操作:自定义角色向其授予访问权限的操作集。 使用 Get-AzureRmProviderOperation 获取可以使用 Azure RBAC 保护的 Azure 资源提供程序的操作。 下面是一些有效的操作字符串:
  • “*/read”授予对所有 Azure 资源提供程序读取操作的访问权限。
  • “Microsoft.Network/*/read”授予对 Azure Microsoft.Network 资源提供程序中所有资源类型的读取操作的访问权限。
  • “Microsoft.Compute/virtualMachines/*”授予对虚拟机及其子资源类型的所有操作的访问权限。
  1. AssignableScopes:可在其中分配自定义角色的作用域(Azure 订阅或资源组)集。 使用 AssignableScopes,可以让自定义角色仅在需要它的订阅或资源组中分配,并且不会使其余订阅或资源组的用户体验混乱。 下面是一些有效的可分配范围:
  • “/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e”, “/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624”:使角色可用于在两个订阅中分配。
  • “/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e”:使角色可用于在单个订阅中分配。
  • “/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network”:使角色仅适用于网络资源组中的分配。 输入角色定义 MAY 包含以下属性:
  1. NotActions:必须从操作中排除的操作集,以确定自定义角色的有效操作。 如果某个特定操作不希望在自定义角色中授予访问权限,则使用 NotActions 将其排除是很方便的,而不是在操作中指定除该特定操作以外的所有操作。
  2. DataActions:自定义角色向其授予访问权限的数据操作集。
  3. NotDataActions:必须从 DataActions 中排除的操作集,以确定自定义角色的有效数据操作。 如果某个特定数据操作不希望在自定义角色中授予访问权限,则使用 NotDataActions 排除该操作会很方便,而不是在 Actions 中指定除该特定操作以外的所有操作。 注意:如果用户分配了一个角色,该角色指定 NotActions 中的操作,并且还分配了另一个角色授予对同一操作的访问权限,则用户将能够执行该操作。 NotActions 不是拒绝规则 - 在需要排除特定操作时创建一组允许的操作只是一种便捷的方法。 下面是一个示例 json 角色定义,可以作为输入 { “Name”: “Updated Role”提供, “Description”: “Can monitor all resources and restart virtual machines”, “Actions”: [ “/read”, “Microsoft.ClassicCompute/virtualmachines/restart/action”, “Microsoft.ClassicCompute/virtualmachines/start/action” ], “NotActions”: [ “/write” ], “DataActions”: [ “Microsoft.存储/storageAccounts/blobServices/containers/blobs/read“ ], ”NotDataActions“: [ ”Microsoft.存储/storageAccounts/blobServices/containers/blobs/write“ ], ”AssignableScopes“: [”/subscriptions/xxxxxxxx-xxxx-xxxxxx“] }

示例

使用 PSRoleDefinitionObject 创建

PS C:\> $role = Get-AzureRmRoleDefinition -Name "Virtual Machine Contributor"
          PS C:\> $role.Id = $null
          PS C:\> $role.Name = "Virtual Machine Operator"
          PS C:\> $role.Description = "Can monitor, start, and restart virtual machines."
          PS C:\> $role.Actions.RemoveRange(0,$role.Actions.Count)
          PS C:\> $role.Actions.Add("Microsoft.Compute/*/read")
          PS C:\> $role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")
          PS C:\> $role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")
          PS C:\> $role.Actions.Add("Microsoft.Compute/virtualMachines/downloadRemoteDesktopConnectionFile/action")
          PS C:\> $role.Actions.Add("Microsoft.Network/*/read")
          PS C:\> $role.Actions.Add("Microsoft.Storage/*/read")
          PS C:\> $role.Actions.Add("Microsoft.Authorization/*/read")
          PS C:\> $role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
          PS C:\> $role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/resources/read")
          PS C:\> $role.Actions.Add("Microsoft.Insights/alertRules/*")
          PS C:\> $role.Actions.Add("Microsoft.Support/*")
          PS C:\> $role.AssignableScopes.Clear()
          PS C:\> $role.AssignableScopes.Add("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")

          PS C:\> New-AzureRmRoleDefinition -Role $role

使用 JSON 文件创建

PS C:\> New-AzureRmRoleDefinition -InputFile C:\Temp\roleDefinition.json

参数

-DefaultProfile

用于与 azure 通信的凭据、帐户、租户和订阅

Type:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputFile

包含单个 json 角色定义的文件名。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Role

角色定义对象。

Type:PSRoleDefinition
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

输入

None

输出

PSRoleDefinition

备注

关键字:azure, azurerm, arm, 资源, 管理, 经理, 资源组, 模板, 部署