New-AzRoleDefinition

Crea un rol personalizado en Azure RBAC. Proporcione un archivo de definición de roles JSON o un objeto PSRoleDefinition como entrada. En primer lugar, use el comando Get-AzRoleDefinition para generar un objeto de definición de roles de línea base. A continuación, modifique sus propiedades según sea necesario. Por último, use este comando para crear un rol personalizado mediante la definición de roles.

Sintaxis

InputFileParameterSet

New-AzRoleDefinition
    [-InputFile] <String>
    [-SkipClientSideScopeValidation]
    [-DefaultProfile <IAzureContextContainer>]
    [<CommonParameters>]

RoleDefinitionParameterSet

New-AzRoleDefinition
    [-Role] <PSRoleDefinition>
    [-SkipClientSideScopeValidation]
    [-DefaultProfile <IAzureContextContainer>]
    [<CommonParameters>]

Description

El cmdlet New-AzRoleDefinition crea un rol personalizado en Azure Role-Based Access Control. Proporcione una definición de rol como entrada al comando como un archivo JSON o un objeto PSRoleDefinition.

La definición del rol de entrada DEBE contener las siguientes propiedades:

  1. Nombre: el nombre del rol personalizado.
  2. Descripción: una breve descripción del rol que resume el acceso que concede el rol.
  3. Permisos: una matriz de objetos de permiso, cada uno que contiene Acciones o DataActions. Use Get-AzProviderOperation para obtener la operación de Azure proveedores de recursos que se pueden proteger mediante Azure RBAC. A continuación se muestran algunas cadenas de operación válidas:
    • "*/read" concede acceso a las operaciones de lectura de todos los proveedores de recursos de Azure.
    • "Microsoft. Network/*/read" concede acceso a las operaciones de lectura para todos los tipos de recursos de la Microsoft. Proveedor de recursos de red de Azure.
    • "Microsoft. Compute/virtualMachines/*" concede acceso a todas las operaciones de máquinas virtuales y sus tipos de recursos secundarios.
  4. AssignableScopes: el conjunto de ámbitos (Azure suscripciones o grupos de recursos) en el que el rol personalizado estará disponible para la asignación. A continuación se muestran algunos ámbitos asignables válidos:
    • "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e", "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624": pone el rol disponible para la asignación en dos suscripciones.
    • "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e": hace que el rol esté disponible para la asignación en una sola suscripción.
    • "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network": hace que el rol esté disponible solo para la asignación en el grupo de recursos de red.

Cada objeto de permiso de la matriz Permissions PUEDE contener:

  1. Acciones: conjunto de operaciones del plano de control a las que el rol personalizado concede acceso.
  2. NotActions: conjunto de operaciones que se deben excluir de las acciones para determinar las acciones efectivas.
  3. DataActions: el conjunto de operaciones del plano de datos a las que el rol personalizado concede acceso.
  4. NotDataActions: conjunto de operaciones que se deben excluir de DataActions.
  5. Condición: una condición Attribute-Based Access Control (ABAC) que restringe los permisos.
  6. ConditionVersion: la versión de la sintaxis de la condición, por ejemplo, "2.0" (necesaria si se especifica Condition).

Note

Actualmente, la API de RBAC de Azure solo admite un único elemento de la matriz Permissions al crear roles personalizados. Aunque el modelo de datos admite varias entradas de permisos, las operaciones de creación deben usar exactamente un objeto de permiso.

A continuación se muestra una definición de rol JSON de ejemplo que se puede proporcionar como entrada: { "Name": "Custom VM Operator", "Description": "Can monitor all resources and start and restart virtual machines", "Permissions": [ { "Actions": [ "/read", "Microsoft. Compute/virtualMachines/restart/action", "Microsoft. Compute/virtualMachines/start/action" ], "NotActions": [ "/write" ], "DataActions": [ "Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read" ], "NotDataActions": [ "Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write" ] } ], "AssignableScopes": ["/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"] }

Ejemplos

Ejemplo 1: Crear un rol personalizado mediante el objeto PSRoleDefinition

$role = New-Object -TypeName Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition
$role.Name = 'Virtual Machine Operator'
$role.Description = 'Can monitor, start, and restart virtual machines.'
$role.IsCustom = $true
$role.AssignableScopes = @("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
$permission = New-Object -TypeName Microsoft.Azure.Commands.Resources.Models.Authorization.PSPermission
$permission.Actions = @(
    "Microsoft.Compute/*/read"
    "Microsoft.Compute/virtualMachines/start/action"
    "Microsoft.Compute/virtualMachines/restart/action"
    "Microsoft.Network/*/read"
    "Microsoft.Storage/*/read"
    "Microsoft.Authorization/*/read"
    "Microsoft.Resources/subscriptions/resourceGroups/read"
    "Microsoft.Resources/subscriptions/resourceGroups/resources/read"
    "Microsoft.Insights/alertRules/*"
    "Microsoft.Support/*"
)
$role.Permissions = @($permission)

New-AzRoleDefinition -Role $role

Crea un rol personalizado denominado "Operador de máquina virtual" con las acciones especificadas.

Ejemplo 2: Creación de un rol personalizado mediante un archivo JSON

New-AzRoleDefinition -InputFile C:\Temp\roleDefinition.json

Crea un rol personalizado a partir de un archivo de definición JSON.

Parámetros

-DefaultProfile

Las credenciales, la cuenta, el inquilino y la suscripción que se usan para la comunicación con Azure

Propiedades de parámetro

Tipo:IAzureContextContainer
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:AzContext, AzureRmContext, AzureCredential

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-InputFile

Nombre de archivo que contiene una única definición de rol json.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

InputFileParameterSet
Posición:0
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Role

Objeto de definición de roles.

Propiedades de parámetro

Tipo:PSRoleDefinition
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

RoleDefinitionParameterSet
Posición:0
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-SkipClientSideScopeValidation

Si se especifica, omita la validación del ámbito del lado cliente.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

None

Salidas

PSRoleDefinition

Notas

Palabras clave: azure, azurerm, arm, resource, management, manager, resource, group, template, deployment