Roles, permisos y seguridad en Azure Monitor

En este artículo se muestra cómo aplicar roles de supervisión del Control de acceso basado en roles (RBAC) para conceder o limitar el acceso y se describen las consideraciones de seguridad para los recursos relacionados con Azure Monitor.

Roles de supervisión integrados

El Control de acceso basado en roles de Azure (Azure RBAC) proporciona roles integrados de Azure que se pueden asignar a usuarios, grupos, entidades de servicio e identidades administradas. Los roles más comunes son Lector de supervisión y Colaborador de supervisión para permisos de lectura y escritura, respectivamente.

Para obtener información más detallada sobre los roles de supervisión, consulte Roles de supervisión de RBAC.

Lector de supervisión

Las personas asignadas al rol Lector de supervisión pueden ver todos los datos de supervisión en una suscripción, pero no pueden modificar ningún recurso ni editar ninguna configuración relacionada con la supervisión de recursos. Este rol es adecuado para los usuarios de una organización, como los ingenieros de soporte técnico u operaciones que necesitan tener la capacidad de:

  • Ver los paneles de supervisión de Azure Portal.
  • Ver las reglas de alerta definidas en Alertas de Azure.
  • Consultar las métricas de Azure Monitor mediante la API REST de Azure Monitor, los cmdlets de PowerShell o la CLI multiplataforma.
  • Consultar el registro de actividades a través del portal, la API REST de Azure Monitor, los cmdlets de PowerShell o la CLI multiplataforma.
  • Ver la configuración de diagnóstico de un recurso.
  • Ver el perfil de registro de una suscripción.
  • Consultar la configuración de escalado automático.
  • Consultar la configuración y actividad de alertas.
  • Buscar datos del área de trabajo de Log Analytics, incluidos los datos de uso del área de trabajo.
  • Recuperar esquemas de tabla en un área de trabajo de Log Analytics.
  • Recuperar y ejecutar las consultas de registros en un área de trabajo de Log Analytics.
  • Acceda a los datos de Application Insights.

Nota:

Este rol no otorga acceso de lectura a los datos de registro que se han transmitido a un centro de eventos o que están almacenados en una cuenta de almacenamiento. Para obtener información sobre cómo configurar el acceso a estos recursos, consulte la sección Consideraciones de seguridad para datos de supervisión más adelante en este artículo.

Colaborador de supervisión

Las personas que tienen asignado el rol Colaborador de supervisión pueden ver todos los datos de supervisión de una suscripción. También pueden crear o modificar la configuración de supervisión, pero no pueden modificar ningún otro recurso.

Este rol es un superconjunto del rol Lector de supervisión. Es adecuado para los miembros del equipo de supervisión de una organización o los proveedores de servicios administrados que, además de los permisos mencionados anteriormente, deben poder:

  • Ver paneles de supervisión en el portal y crear sus propios paneles de supervisión privados.
  • Crear y editar la configuración de diagnóstico de un recurso. 1
  • Establecer la configuración y la actividad de las reglas de alertas mediante Alertas de Azure.
  • Enumerar las claves compartidas de un área de trabajo de Log Analytics.
  • Crear, eliminar y ejecutar las búsquedas guardadas en el área de trabajo de Log Analytics.
  • Crear y eliminar la configuración de almacenamiento del área de trabajo de Log Analytics.
  • Crear componentes y pruebas web de Application Insights.

1 Para crear o editar una configuración del diagnóstico, al usuario también se le debe conceder el permiso ListKeys por separado en el recurso de destino (cuenta de almacenamiento o espacio de nombres del centro de eventos).

Nota:

Este rol no otorga acceso de lectura a los datos de registro que se han transmitido a un centro de eventos o que están almacenados en una cuenta de almacenamiento. Para obtener información sobre cómo configurar el acceso a estos recursos, consulte la sección Consideraciones de seguridad para datos de supervisión más adelante en este artículo.

Permisos de supervisión y roles de Azure personalizados

Si los roles integrados no satisfacen las necesidades de su equipo, puede crear un rol personalizado de Azure con permisos granulares.

Por ejemplo, puede usar permisos pormenorizados para crear un rol personalizado de Azure para un lector de registro de actividad con el siguiente script de PowerShell.

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Activity Log Reader"
$role.Description = "Can view activity logs."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Insights/eventtypes/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription")
New-AzRoleDefinition -Role $role 

Nota:

El acceso a las alertas, la configuración de diagnóstico y las métricas de un recurso requiere que el usuario tenga acceso de lectura al tipo de recurso y el ámbito de ese recurso. La creación de una configuración de diagnóstico que envía datos a una cuenta de almacenamiento o transmite a centros de eventos requiere que el usuario tenga también el permiso ListKeys en el recurso de destino.

Asignar un rol

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Para asignar un rol, consulte Asignación de roles de Azure mediante Azure PowerShell.

Por ejemplo, el siguiente script de PowerShell asigna un rol a un usuario especificado.

Reemplace <RoleId> por el Id. Rol de supervisión de RBAC que desea asignar.

Reemplace <SubscriptionID>, <ResourceGroupName> y <UserPrincipalName> por los valores adecuados para su entorno.

# Define variables
$SubscriptionId = "<SubscriptionID>"
$ResourceGroupName = "<ResourceGroupName>"
$UserPrincipalName = "<UserPrincipalName>"  # The UPN of the user to whom you want to assign the role
$RoleId = "<RoleId>"  # The ID of the role

# Get the user object
$User = Get-AzADUser -UserPrincipalName $UserPrincipalName

# Define the scope (e.g., subscription or resource group level)
$Scope = "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName"

# Assign the role
New-AzRoleAssignment -ObjectId $User.Id -RoleDefinitionId $RoleId -Scope $Scope

También puede Asignar roles de Azure mediante Azure Portal.

Importante

  • Asegúrese de que tiene los permisos necesarios para asignar roles en el ámbito especificado. Debe tener derechos de Propietario a la suscripción o al grupo de recursos.
  • Asigne acceso en el grupo de recursos o la suscripción a los que pertenece el recurso, no en el propio recurso.

Consulta de PowerShell para determinar la pertenencia a roles

Puede resultar útil generar listas de usuarios que pertenecen a un rol determinado. Para ayudar con la generación de estos tipos de listas, las siguientes consultas de ejemplo pueden adaptarse a sus necesidades específicas.

Suscripción completa a consultas para roles de administradores y roles de colaborador

(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Consulta en el contexto de un recurso específico de Application Insights para propietarios y colaboradores

$resourceGroup = "ResourceGroupName"
$resourceName = "AppInsightsName"
$resourceType = "microsoft.insights/components"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup -ResourceType $resourceType -ResourceName $resourceName | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Consulta en el contexto de un grupo de recursos específico para propietarios y colaboradores

$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Consideraciones de seguridad para datos de supervisión

Los Datos en Azure Monitorse pueden almacenar en una cuenta de almacenamiento o transmitirse a un centro de eventos, y ambos son recursos de Azure de uso general. Al ser recursos de uso general, su creación, eliminación o el acceso a ellos constituye una operación privilegiada reservada a un administrador. Dado que estos datos pueden contener información confidencial, como direcciones IP o nombres de usuario, use los procedimientos siguientes para supervisar los recursos relacionados con la supervisión para evitar el uso indebido:

  • Utilizar una cuenta de almacenamiento dedicada a datos de supervisión. Si necesita separar los datos de supervisión en varias cuentas de almacenamiento, use siempre cuentas de almacenamiento diferentes para supervisar datos y otros tipos de datos. Si comparte cuentas de almacenamiento para la supervisión y otros tipos de datos, puede conceder acceso accidentalmente a otros datos a organizaciones que solo deben acceder a los datos de supervisión. Por ejemplo, una organización que no es de Microsoft para la información de seguridad y la administración de eventos solo debe tener acceso a los datos de supervisión.
  • Utilice un único espacio de nombres dedicado de un bus de servicio o un centro de eventos en todas las configuraciones de diagnóstico por la misma razón descrita en el punto anterior.
  • Limite el acceso a las cuentas de almacenamiento o los centros de eventos relacionados con la supervisión manteniéndolos en un grupo de recursos separado. Use el ámbito en los roles de supervisión para limitar el acceso solo a ese grupo de recursos.
  • Nunca debe conceder el permiso ListKeys para cuentas de almacenamiento o centros de eventos en el ámbito de la suscripción cuando un usuario solo necesita acceso a los datos de supervisión. En su lugar, conceda estos permisos al usuario en un ámbito de recurso o grupo de recursos (si tiene un grupo de recursos de supervisión dedicado).

Cuando un usuario o aplicación necesita acceso a datos de supervisión en una cuenta de almacenamiento, debe generar una firma de acceso compartido (SAS) en la cuenta de almacenamiento que contenga los datos de supervisión con acceso de solo lectura de nivel de servicio a Blob Storage. En PowerShell, la SAS de la cuenta podría ser como el código siguiente:

$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context

A continuación, puede proporcionar el token a la entidad que necesita leer de esa cuenta de almacenamiento. La entidad puede enumerar y leer todos los blobs de esa cuenta de almacenamiento.

O bien, si necesita controlar este permiso con Azure RBAC, puede conceder a dicha entidad el permiso Microsoft.Storage/storageAccounts/listkeys/action para esa cuenta de almacenamiento determinada. Este permiso es necesario para los usuarios que necesitan definir una configuración de diagnóstico para enviar datos a una cuenta de almacenamiento. Por ejemplo, puede crear el siguiente rol de Azure personalizado para un usuario o una aplicación que solo necesita leer desde una cuenta de almacenamiento:

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Monitoring Storage Account Reader"
$role.Description = "Can get the storage account keys for a monitoring storage account."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/storageAccounts/listkeys/action")
$role.Actions.Add("Microsoft.Storage/storageAccounts/Read")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myMonitoringStorageAccount")
New-AzRoleDefinition -Role $role 

Advertencia

El permiso ListKeys permite al usuario enumerar las claves de la cuenta de almacenamiento principal y secundaria. Estas claves conceden al usuario todos los permisos firmados (como leer, escribir, crear blobs y eliminar blobs) en todos los servicios suscritos (blob, cola, tabla y archivo) en esa cuenta de almacenamiento. Se recomienda usar una SAS de cuenta cuando sea posible.

Puede seguir un patrón similar con los centros de eventos, pero primero debe crear una regla de autorización dedicada para la escucha. Si quiere conceder acceso a una aplicación que solo necesita escuchar a centros de eventos relacionados con la supervisión, haga lo siguiente:

  1. En el portal, cree una directiva de acceso compartido en los centros de eventos que se crearon para la transmisión de datos de supervisión con notificaciones de escucha exclusivamente. Por ejemplo, podría llamarlo "monitoringReadOnly". Si es posible, dé esa clave directamente al consumidor y omita el paso siguiente.

  2. Si el consumidor necesita obtener la clave a petición, conceda al usuario la acción ListKeys para ese centro de eventos. Este paso es necesario para los usuarios que necesitan definir una configuración de diagnóstico o un perfil de registro para realizar transmisiones a los centros de eventos. Por ejemplo, podría crear una regla de Azure RBAC:

    $role = Get-AzRoleDefinition "Reader"
    $role.Id = $null
    $role.Name = "Monitoring Event Hub Listener"
    $role.Description = "Can get the key to listen to an event hub streaming monitoring data."
    $role.Actions.Clear()
    $role.Actions.Add("Microsoft.EventHub/namespaces/authorizationrules/listkeys/action")
    $role.Actions.Add("Microsoft.EventHub/namespaces/Read")
    $role.AssignableScopes.Clear()
    $role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.ServiceBus/namespaces/mySBNameSpace")
    New-AzRoleDefinition -Role $role 
    

Pasos siguientes