Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Как поставщик услуг, может потребоваться отслеживать подписки клиентов или группы ресурсов, делегированные клиенту через Azure Lighthouse, или при удалении ранее делегированных ресурсов.
В управляющем клиенте журнал действий Azure отслеживает действия делегирования на уровне клиента. Эти регистрируемые действия включают в себя все добавленные или удаленные делегирования от клиентов заказчиков.
В этой статье описываются разрешения, необходимые для отслеживания активности делегирования клиенту для всех клиентов. Также он содержит пример скрипта, который показывает один метод для создания запросов и составления отчетов по этим данным.
Внимание
Выполните все эти действия в арендаторе, которым вы управляете, а не в арендаторах клиентов.
Хотя эта статья относится к поставщикам услуг и клиентам, предприятия, управляющие несколькими клиентами , могут использовать одни и те же процессы.
Разрешение доступа к данным уровня клиента
Чтобы получить доступ к данным журнала действий на уровне клиента, учетная запись должна иметь встроенную роль средства чтения мониторинга Azure в корневой области (/). Это назначение должно выполняться глобальным администратором с дополнительным повышенным доступом.
Повышение прав доступа учетной записи глобального администратора
Чтобы назначить роль в корневой области (/), необходимо иметь роль глобального администратора с повышенным уровнем доступа. Включайте этот повышенный доступ только тогда, когда необходимо назначить роль, и отключайте его после завершения.
Подробные инструкции по добавлению и удалению повышения прав см. в статье Повышение прав доступа для управления всеми подписками Azure и группами управления.
После повышения уровня доступа ваша учетная запись имеет роль администратора доступа пользователей в Azure в корневой области. Это назначение роли позволяет просматривать все ресурсы и назначать доступ в любой подписке или группе управления в каталоге. Он также позволяет выполнять назначения ролей на уровне корня.
Назначение роли читателя данных служб мониторинга в корневой области
После повышения уровня доступа вы можете назначить соответствующие разрешения учетной записи, чтобы она могла запрашивать данные журнала действий на уровне клиента. Назначьте встроенную роль средства чтения мониторинга Azure в корневой области управляющего клиента этой учетной записи.
Внимание
Предоставление назначения ролей в корневой области означает, что те же разрешения применяются к каждому ресурсу в клиенте. Так как этот доступ очень широкий, мы рекомендуем назначить эту роль учетной записи субъекта-службы и использовать эту учетную запись для запроса данных.
Вы также можете назначить роль Читателя мониторинга на уровне корневого объёма отдельным пользователям или группам пользователей, чтобы они могли просматривать сведения о делегировании непосредственно на портале Azure. Если выбрать этот параметр, ограничьте этот широкий доступ к наименьшему количеству пользователей.
Используйте один из следующих методов для создания назначения в корневой области.
PowerShell
# Log in first with Connect-AzAccount if you're not using Cloud Shell
New-AzRoleAssignment -SignInName <yourLoginName> -Scope "/" -RoleDefinitionName "Monitoring Reader" -ObjectId <objectId>
Azure CLI
# Log in first with az login if you're not using Cloud Shell
az role assignment create --assignee 00000000-0000-0000-0000-000000000000 --role "Monitoring Reader" --scope "/"
Удаление повышенного права доступа для учетной записи глобального администратора
После назначения роли средства чтения мониторинга в корневой области нужной учетной записи обязательно удалите повышенный доступ для учетной записи глобального администратора, так как этот высокий уровень доступа больше не нужен.
Просмотр изменений делегирования на портале Microsoft Azure
Пользователи, которым назначена роль читателя мониторинга на уровне корня, могут просматривать изменения делегирования непосредственно на портале Azure.
- Перейдите на страницу "Мои клиенты" и выберите "Журнал действий " в меню навигации слева.
- Убедитесь, что в фильтре в верхней части экрана выбрана Активность каталога.
- Выберите интервал времени, для которого требуется просмотреть изменения делегирования.
Использование учетной записи субъекта-службы для запроса журнала действий
Поскольку роль средства чтения мониторинга в корневой области является таким широким уровнем доступа, назначьте роль учетной записи субъекта-службы и используйте эту учетную запись для запроса данных с помощью скрипта.
Внимание
В настоящее время арендаторы с большим количеством делегированных действий могут столкнуться с ошибками при запросе этих данных.
При использовании учетной записи субъекта-службы для запроса журнала действий выполните следующие рекомендации.
- Создайте новую учетную запись субъекта-службы , которая будет использоваться только для этой функции, а не назначение этой роли существующему субъекту-службе, используемому для другой автоматизации.
- Убедитесь, что этот субъект-служба не имеет доступа к делегированным ресурсам клиента.
- Используйте сертификат для проверки подлинности и безопасно храните его в Azure Key Vault.
- Ограничьте количество пользователей, имеющих доступ к действиям от имени субъекта-службы.
После создания учетной записи главного пользователя службы с доступом уровня 'Чтение мониторинга' на уровне корня управляемого клиента используйте ее для сбора данных и составления отчетов о действиях делегирования.
Этот скрипт Azure PowerShell может запрашивать прошлый день действия и сообщать о любых добавленных или удаленных делегированиях (или попытках, которые не были успешными). Он запрашивает данные журнала действий клиента, затем конструирует следующие значения, чтобы сообщить о добавлении или удалении делегирований.
- DelegatedResourceId: идентификатор делегированной подписки или группы ресурсов
- CustomerTenantId: идентификатор клиента заказчика
- CustomerSubscriptionId: идентификатор подписки, который был делегирован или содержит группу делегированных ресурсов
- CustomerDelegationStatus: изменение состояния делегированного ресурса (успешно или неудачно)
- EventTimeStamp: Дата и время записи в журнал изменения делегирования
При запросе этих данных учитывайте следующее.
- Если несколько групп ресурсов делегированы в одном развертывании, для каждой группы ресурсов возвращаются отдельные записи.
- Изменения, внесенные в предыдущее делегирование (например, обновление структуры разрешений), регистрируются как добавленное делегирование.
- Как отмечалось ранее, учетная запись должна иметь встроенную роль средства чтения мониторинга Azure в корневой области (/) для доступа к данным на уровне клиента.
- Эти данные можно использовать в собственных рабочих процессах и отчетах. Например, можно использовать API приема журналов для записи данных в Azure Monitor из клиента REST API, а затем использовать группы действий для создания уведомлений или оповещений.
# Log in first with Connect-AzAccount if you're not using Cloud Shell
# Azure Lighthouse: Query Tenant Activity Log for registered/unregistered delegations for the last 1 day
$GetDate = (Get-Date).AddDays((-1))
$dateFormatForQuery = $GetDate.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
# Getting Azure context for the API call
$currentContext = Get-AzContext
# Fetching new token
$azureRmProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = [Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient]::new($azureRmProfile)
$token = $profileClient.AcquireAccessToken($currentContext.Tenant.Id)
$listOperations = @{
Uri = "https://management.azure.com/providers/microsoft.insights/eventtypes/management/values?api-version=2015-04-01&`$filter=eventTimestamp ge '$($dateFormatForQuery)'"
Headers = @{
Authorization = "Bearer $($token.AccessToken)"
'Content-Type' = 'application/json'
}
Method = 'GET'
}
$list = Invoke-RestMethod @listOperations
# First link can be empty - and point to a next link (or potentially multiple pages)
# While you get more data - continue fetching and add result
while($list.nextLink){
$list2 = Invoke-RestMethod $list.nextLink -Headers $listOperations.Headers -Method Get
$data+=$list2.value;
$list.nextLink = $list2.nextlink;
}
$showOperations = $data;
if ($showOperations.operationName.value -eq "Microsoft.Resources/tenants/register/action") {
$registerOutputs = $showOperations | Where-Object -FilterScript { $_.eventName.value -eq "EndRequest" -and $_.resourceType.value -and $_.operationName.value -eq "Microsoft.Resources/tenants/register/action" }
foreach ($registerOutput in $registerOutputs) {
$eventDescription = $registerOutput.description | ConvertFrom-Json;
$registerOutputdata = [pscustomobject]@{
Event = "An Azure customer has registered delegated resources to your Azure tenant";
DelegatedResourceId = $eventDescription.delegationResourceId;
CustomerTenantId = $eventDescription.subscriptionTenantId;
CustomerSubscriptionId = $eventDescription.subscriptionId;
CustomerDelegationStatus = $registerOutput.status.value;
EventTimeStamp = $registerOutput.eventTimestamp;
}
$registerOutputdata | Format-List
}
}
if ($showOperations.operationName.value -eq "Microsoft.Resources/tenants/unregister/action") {
$unregisterOutputs = $showOperations | Where-Object -FilterScript { $_.eventName.value -eq "EndRequest" -and $_.resourceType.value -and $_.operationName.value -eq "Microsoft.Resources/tenants/unregister/action" }
foreach ($unregisterOutput in $unregisterOutputs) {
$eventDescription = $unregisterOutput.description | ConvertFrom-Json;
$unregisterOutputdata = [pscustomobject]@{
Event = "An Azure customer has unregistered delegated resources from your Azure tenant";
DelegatedResourceId = $eventDescription.delegationResourceId;
CustomerTenantId = $eventDescription.subscriptionTenantId;
CustomerSubscriptionId = $eventDescription.subscriptionId;
CustomerDelegationStatus = $unregisterOutput.status.value;
EventTimeStamp = $unregisterOutput.eventTimestamp;
}
$unregisterOutputdata | Format-List
}
}
else {
Write-Output "No new delegation events for tenant: $($currentContext.Tenant.TenantId)"
}
Следующие шаги
- Узнайте о том, как подключать клиентов к Azure Lighthouse.
- Изучите сведения об Azure Monitor и о журнале действий Azure.
- Ознакомьтесь с примером книги журналов действий по домену , чтобы узнать, как отображать журналы действий Azure в подписках с возможностью фильтрации по имени домена.