Incorporación o edición de condiciones de asignación de roles de Azure mediante Azure PowerShell
Artículo
Una condición de asignación de roles de Azure es una comprobación adicional que puede agregar opcionalmente a la asignación de roles para proporcionar un control de acceso más preciso. Por ejemplo, puede agregar una condición que requiera que un objeto tenga una etiqueta específica para leer el objeto. En este artículo se describe cómo agregar, editar, ver o eliminar condiciones para las asignaciones de roles mediante Azure PowerShell.
Requisitos previos
Para obtener información sobre los requisitos previos para agregar o editar condiciones de asignación de roles, consulte Requisitos previos de las condiciones.
Agregar una condición
Para agregar una asignación de roles, use el comando New-AzRoleAssignment. El comando New-AzRoleAssignment incluye los siguientes parámetros relacionados con las condiciones.
Parámetro
Tipo
Description
Condition
Cadena
Condición bajo la que se puede conceder permiso al usuario.
ConditionVersion
Cadena
Versión de la sintaxis de la condición. Se debe establecer en 2.0. Si se especifica Condition, se debe especificar también ConditionVersion.
En el ejemplo siguiente se muestra cómo inicializar las variables para asignar el rol Lector de datos de Storage Blob con una condición. La condición comprueba si el nombre del contenedor es igual a "blobs-example-container".
Azure PowerShell
$subscriptionId = "<subscriptionId>"$resourceGroup = "<resourceGroup>"$roleDefinitionName = "Storage Blob Data Reader"$roleDefinitionId = "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1"$userObjectId = "<userObjectId>"$scope = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup"$description = "Read access if container name equals blobs-example-container"$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))"$conditionVersion = "2.0"
A continuación, presentamos un ejemplo de la salida:
Azure PowerShell
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
Scope : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>
DisplayName : User1
SignInName : user1@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
ObjectId : <userObjectId>
ObjectType : User
CanDelegate : False
Description : Read access if container name equals blobs-example-container
ConditionVersion : 2.0
Condition : ((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))
En PowerShell, si la condición incluye un signo de dólar ($), debe agregarle un carácter de acento grave (`) como prefijo. Por ejemplo, esta condición usa signos de dólar para delinear el nombre de la clave de etiqueta. Para obtener más información sobre las reglas de comillas en PowerShell, vea Acerca de las reglas de las comillas.
Azure PowerShell
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"
Edición de una condición
Para editar una condición de asignación de roles existente, use Set-AzRoleAssignment. Solo se pueden editar las propiedades Condition, ConditionVersion y Description. El parámetro -PassThru hace que Set-AzRoleAssignment devuelva la asignación de roles actualizada, lo que permite la visualización o el almacenamiento en una variable para su uso posterior.
Hay dos maneras de editar una condición. Puede usar el objeto PSRoleAssignment o un archivo JSON.
Edición de una condición mediante el objeto PSRoleAssignment
Use Get-AzRoleAssignment para obtener la asignación de roles existente con una condición como objeto PSRoleAssignment.
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
Scope : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>
DisplayName : User1
SignInName : user1@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
ObjectId : <userObjectId>
ObjectType : User
CanDelegate : False
Description : Read access if container name equals blobs-example-container or blobs-example-container2
ConditionVersion : 2.0
Condition : ((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))
Edición de una condición mediante un archivo JSON
Para editar una condición, también puede proporcionar un archivo JSON como entrada. A continuación se muestra un archivo JSON de ejemplo donde se actualizan Condition y Description. Debe especificar todas las propiedades del archivo JSON para actualizar una condición.
JSON
{
"RoleDefinitionId": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
"ObjectId": "<userObjectId>",
"ObjectType": "User",
"Scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>",
"Condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
"ConditionVersion": "2.0",
"CanDelegate": false,
"Description": "Read access if container name equals blobs-example-container or blobs-example-container2",
"RoleAssignmentId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>"
}
Use Set-AzRoleAssignment para actualizar la condición de la asignación de roles.
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
Scope : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>
DisplayName : User1
SignInName : user1@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
ObjectId : <userObjectId>
ObjectType : User
CanDelegate : False
Description : Read access if container name equals blobs-example-container or blobs-example-container2
ConditionVersion : 2.0
Condition : ((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))
Editar condiciones en varias asignaciones de roles
Si necesita realizar la misma actualización a varias asignaciones de roles, puede usar un bucle. Los siguientes comandos ejecutan las siguientes tareas:
Busca asignaciones de roles en una suscripción con cadenas <find-condition-string-1> o <find-condition-string-2> en la condición.
Para eliminar una condición de asignación de roles, edítela y establezca las propiedades Condition y ConditionVersion en una cadena vacía ("") o $null.
Use construcciones avanzadas de Azure Resource Manager para administrar escenarios complejos, como el orden de implementación, las implementaciones condicionales y los secretos.
Aprenda a conceder acceso a recursos de Azure para usuarios, grupos, entidades de servicio e identidades administradas mediante el control de acceso basado en rol (RBAC) de Azure y Azure PowerShell.
Aprenda a quitar acceso a recursos de Azure para usuarios, grupos, entidades de servicio e identidades administradas mediante Azure Portal, Azure PowerShell, la CLI de Azure o API REST.
En este tutorial aprenderá a conceder acceso de usuario a recursos de Azure mediante Azure PowerShell y el control de acceso basado en rol (Azure RBAC).
Aprenda a enumerar, crear, actualizar o eliminar roles personalizados mediante Azure PowerShell y el control de acceso basado en roles de Azure (RBAC de Azure).
Obtenga información sobre cómo agregar, editar, ver o eliminar condiciones de control de acceso basado en atributos (ABAC) en las asignaciones de roles de Azure mediante Azure Portal y el control de acceso basado en rol de Azure (Azure RBAC).