Просмотр журналов действий на предмет изменений в Azure RBAC

Иногда могут потребоваться сведения об изменении доступа на основе ролей (Azure RBAC), например для аудита и устранения неполадок. Каждый раз, когда кто-либо вносит изменения в определения ролей или назначения ролей в ваших подписках, изменения регистрируются в журнале действий Azure. Вы можете просматривать журналы действий, чтобы увидеть все изменения в управлении доступом на основе ролей (Azure RBAC) за последние 90 дней.

Операции, которые регистрируются в журнале

Ниже указаны операции, связанные с Azure RBAC, которые регистрируются в журнале действий:

  • Создание назначения роли
  • Удаление назначения роли
  • Создание или изменение определения пользовательской роли
  • Удаление определения пользовательской роли

Портал Azure

Самый простой способ заключается в просмотре журналов действий на портале Azure. На следующем снимке экрана показан пример — операции назначения ролей в журнале действий. В журнале также имеется ссылка на скачивание журналов в виде CSV-файлов.

Activity logs using the portal - screenshot

Для получения дополнительных сведений щелкните нужную запись, чтобы открыть панель сводки. Откройте вкладку JSON, чтобы получить подробный журнал.

Activity logs using the portal with summary pane open - screenshot

Журнал действий на портале имеет несколько фильтров. Ниже приведены фильтры, связанные с Azure RBAC:

Фильтр Значение
Категория событий
  • Административный
Операция
  • Создание назначения роли
  • Удаление назначения роли
  • Создание или изменение определения пользовательской роли
  • Удаление определения пользовательской роли

Дополнительные сведения о журналах действий см . в журнале действий Azure.

Интерпретация записей журнала

Выходные данные журналов на вкладке JSON, в Azure PowerShell или Azure CLI могут содержать много информации. Ниже приведены некоторые основные свойства, на которые следует обращать внимание при интерпретации записей журнала. Способы фильтрации выходных данных журналов с помощью Azure PowerShell или Azure CLI описаны в следующих разделах.

Свойство Пример значений Description
authorization:action Microsoft.Authorization/roleAssignments/write. Создание назначения роли
Microsoft.Authorization/roleAssignments/delete Удаление назначения роли
Microsoft.Authorization/roleDefinitions/write Создание или изменение определения роли
Microsoft.Authorization/roleDefinitions/delete Удаление определения роли
authorization:scope /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
Область действия
caller admin@example.com
{objectId}
Сторона, инициировавшая действие
eventTimestamp 2021-03-01T22:07:41.126243Z Время, когда произошло действие
status:value Начато
Выполнено
Не удалось отправить
Состояние действия

Azure PowerShell

Чтобы просмотреть журналы действий с помощью Azure PowerShell, используйте команду Get-AzLog.

Эта команда выводит список всех изменений назначений ролей в подписке за последние семь дней.

Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleAssignments/*'}

Эта команда выводит список всех изменений определений ролей в подписке за последние семь дней.

Get-AzLog -ResourceGroupName pharma-sales -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleDefinitions/*'}

Фильтрация выходных данных журнала

Выходные данные журнала могут содержать много информации. Эта команда выводит список всех изменений в назначениях и определениях ролей в подписке за последние семь дней с фильтрацией выводимых данных:

Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/role*'} | Format-List Caller,EventTimestamp,{$_.Authorization.Action},Properties

Ниже приведен пример выходных данных журнала, отфильтрованных при создании назначения роли:

Caller                  : admin@example.com
EventTimestamp          : 3/1/2021 10:07:42 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties              :
                          statusCode     : Created
                          serviceRequestId: {serviceRequestId}
                          eventCategory  : Administrative
                          entity         : /subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
                          message        : Microsoft.Authorization/roleAssignments/write
                          hierarchy      : {tenantId}/{subscriptionId}

Caller                  : admin@example.com
EventTimestamp          : 3/1/2021 10:07:41 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties              :
                          requestbody    : {"Id":"{roleAssignmentId}","Properties":{"PrincipalId":"{principalId}","PrincipalType":"User","RoleDefinitionId":"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64","Scope":"/subscriptions/
                          {subscriptionId}/resourceGroups/example-group"}}
                          eventCategory  : Administrative
                          entity         : /subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
                          message        : Microsoft.Authorization/roleAssignments/write
                          hierarchy      : {tenantId}/{subscriptionId}

Если для создания назначений ролей вы используете субъект-службу, свойство Caller будет являться идентификатором объекта субъекта-службы. Для получения сведений о субъекте-службе можно использовать команду Get-AzADServicePrincipal.

Caller                  : {objectId}
EventTimestamp          : 3/1/2021 9:43:08 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties              : 
                          statusCode     : Created
                          serviceRequestId: {serviceRequestId}
                          eventCategory  : Administrative

Azure CLI

Чтобы просмотреть журналы действий с помощью Azure CLI, используйте команду az monitor activity-log list.

Эта команда выводит журналы действий в группе ресурсов за семь дней, начиная с 1 марта:

az monitor activity-log list --resource-group example-group --start-time 2021-03-01 --offset 7d

Эта команда выводит журналы действий для поставщика ресурсов авторизации за семь дней, начиная с 1 марта:

az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d

Фильтрация выходных данных журнала

Выходные данные журнала могут содержать много информации. Эта команда выводит список всех изменений в назначениях и определениях ролей в подписке за семь дней с фильтрацией выводимых данных:

az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d --query '[].{authorization:authorization, caller:caller, eventTimestamp:eventTimestamp, properties:properties}'

Ниже приведен пример выходных данных журнала, отфильтрованных при создании назначения роли:

[
 {
    "authorization": {
      "action": "Microsoft.Authorization/roleAssignments/write",
      "role": null,
      "scope": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}"
    },
    "caller": "admin@example.com",
    "eventTimestamp": "2021-03-01T22:07:42.456241+00:00",
    "properties": {
      "entity": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
      "eventCategory": "Administrative",
      "hierarchy": "{tenantId}/{subscriptionId}",
      "message": "Microsoft.Authorization/roleAssignments/write",
      "serviceRequestId": "{serviceRequestId}",
      "statusCode": "Created"
    }
  },
  {
    "authorization": {
      "action": "Microsoft.Authorization/roleAssignments/write",
      "role": null,
      "scope": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}"
    },
    "caller": "admin@example.com",
    "eventTimestamp": "2021-03-01T22:07:41.126243+00:00",
    "properties": {
      "entity": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
      "eventCategory": "Administrative",
      "hierarchy": "{tenantId}/{subscriptionId}",
      "message": "Microsoft.Authorization/roleAssignments/write",
      "requestbody": "{\"Id\":\"{roleAssignmentId}\",\"Properties\":{\"PrincipalId\":\"{principalId}\",\"PrincipalType\":\"User\",\"RoleDefinitionId\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"Scope\":\"/subscriptions/{subscriptionId}/resourceGroups/example-group\"}}"
    }
  }
]

Журналы Azure Monitor

Журналы Azure Monitor можно использовать для сбора и анализа изменений управления доступом на основе ролей (Azure RBAC) для всех ресурсов Azure. Журналы Azure Monitor обеспечивают следующие преимущества:

  • создание сложных запросов и логики;
  • интеграция с оповещениями, Power BI и другими средствами;
  • хранение данных в течение более длительного срока;
  • поддержка перекрестных ссылок с другими журналами, такими как журналы безопасности, журналы виртуальных машин и настраиваемые журналы.

Ниже приведены основные шаги, позволяющие приступить к работе.

  1. Создание рабочей области Log Analytics.

  2. Настройте действие для рабочей области.

  3. Просмотр журналов действий Аналитика. Быстрый способ перехода на страницу обзора журнала действий — выбрать параметр "Журналы ".

    Azure Monitor logs option in portal

  4. При необходимости вы можете использовать службу Log Analytics в Azure Monitor для обращения с запросами к журналам и просмотра журналов. Дополнительные сведения см. в статье Начало работы с запросами журнала в Azure Monitor.

Ниже приведен запрос, возвращающий новые назначения ролей, упорядоченные по целевому поставщику ресурсов.

AzureActivity
| where TimeGenerated > ago(60d) and Authorization contains "Microsoft.Authorization/roleAssignments/write" and ActivityStatus == "Succeeded"
| parse ResourceId with * "/providers/" TargetResourceAuthProvider "/" *
| summarize count(), makeset(Caller) by TargetResourceAuthProvider

Ниже приведен запрос, возвращающий изменения назначения ролей, отображаемые на схеме.

AzureActivity
| where TimeGenerated > ago(60d) and Authorization contains "Microsoft.Authorization/roleAssignments"
| summarize count() by bin(TimeGenerated, 1d), OperationName
| render timechart

Activity logs using the Advanced Analytics portal - screenshot

Следующие шаги