Monitorování změn delegování ve správě tenanta
Jako poskytovatel služeb můžete chtít vědět, kdy se předplatná zákazníků nebo skupiny prostředků delegují do vašeho tenanta prostřednictvím služby Azure Lighthouse nebo když se dříve delegované prostředky odeberou.
Protokol aktivit Azure ve správě tenanta sleduje aktivitu delegování na úrovni tenanta. Tato protokolovaná aktivita zahrnuje všechny přidané nebo odebrané delegování z tenantů zákazníků.
Toto téma vysvětluje oprávnění potřebná k monitorování aktivity delegování pro vašeho tenanta ve všech vašich zákaznících. Obsahuje také ukázkový skript, který ukazuje jednu metodu pro dotazování a vytváření sestav těchto dat.
Důležité
Všechny tyto kroky musí být provedeny ve vašem tenantovi pro správu, nikoli v žádném tenantovi zákazníka.
Přestože v tomto tématu odkazujeme na poskytovatele služeb a zákazníky, podniky spravující více tenantů můžou používat stejné procesy.
Povolení přístupu k datům na úrovni tenanta
Pokud chcete získat přístup k datům protokolu aktivit na úrovni tenanta, musí mít účet přiřazenou integrovanou roli Čtenář monitorování Azure v kořenovém oboru (/). Toto přiřazení musí provést uživatel, který má roli globálního správce s dalším zvýšeným přístupem.
Zvýšení úrovně přístupu pro účet globálního správce
Pokud chcete přiřadit roli v kořenovém oboru (/), musíte mít roli globálního správce se zvýšeným přístupem. Tento přístup se zvýšenými oprávněními by se měl povolit jenom v případě, že potřebujete přiřazení role a po dokončení se odebere.
Podrobné pokyny k přidání a odebrání zvýšení oprávnění najdete v tématu Zvýšení úrovně přístupu ke správě všech předplatných a skupin pro správu Azure.
Po zvýšení úrovně přístupu bude mít váš účet roli Správce uživatelských přístupů v Azure v kořenovém oboru. Toto přiřazení role umožňuje zobrazit všechny prostředky a přiřadit přístup v libovolném předplatném nebo skupině pro správu v adresáři a také přiřazovat role v kořenovém oboru.
Přiřazení role Čtenář monitorování v kořenovém oboru
Po zvýšení úrovně přístupu můžete účtu přiřadit příslušná oprávnění, aby mohl dotazovat data protokolu aktivit na úrovni tenanta. Tento účet musí mít integrovanou roli Čtenář monitorování Azure přiřazenou v kořenovém oboru vašeho tenanta pro správu.
Důležité
Udělení přiřazení role v kořenovém oboru znamená, že stejná oprávnění platí pro každý prostředek v tenantovi. Vzhledem k tomu, že se jedná o takovou širokou úroveň přístupu, doporučujeme přiřadit tuto roli k účtu instančního objektu a použít ho k dotazování na data.
Roli Čtenář monitorování můžete také přiřadit v kořenovém oboru jednotlivým uživatelům nebo skupinám uživatelů, aby mohli zobrazovat informace o delegování přímo na webu Azure Portal. Pokud to uděláte, mějte na paměti, že se jedná o širokou úroveň přístupu, která by měla být omezena na nejmenší možný počet uživatelů.
K přiřazení kořenového oboru použijte jednu z následujících metod.
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 "/"
Odebrání zvýšeného přístupu pro účet globálního správce
Po přiřazení role Čtenář monitorování v kořenovém oboru k požadovanému účtu nezapomeňte odebrat zvýšený přístup pro účet globálního správce, protože tato vysoká úroveň přístupu už není nutná.
Zobrazení změn delegování na webu Azure Portal
Uživatelé, kteří mají přiřazenou roli Čtenář monitorování v kořenovém oboru, můžou zobrazit změny delegování přímo na webu Azure Portal.
- Přejděte na stránku Moji zákazníci a v levé navigační nabídce vyberte Protokol aktivit.
- Ujistěte se, že je ve filtru v horní části obrazovky vybraná aktivita adresáře.
- Vyberte časový rozsah, pro který chcete zobrazit změny delegování.
Použití účtu instančního objektu k dotazování protokolu aktivit
Vzhledem k tomu, že role Čtenář monitorování v kořenovém oboru je taková široká úroveň přístupu, doporučujeme přiřadit tuto roli k účtu instančního objektu a použít ho k dotazování dat pomocí skriptu.
Důležité
V současné době můžou tenanti s velkým množstvím aktivit delegování narazit na chyby při dotazování na tato data.
Při použití účtu instančního objektu k dotazování protokolu aktivit doporučujeme následující osvědčené postupy:
- Vytvořte nový účet instančního objektu, který se použije jenom pro tuto funkci, a ne k přiřazení této role existujícímu instančnímu objektu použitému pro jinou automatizaci.
- Ujistěte se, že tento instanční objekt nemá přístup k delegovaným prostředkům zákazníků.
- Certifikát můžete použít k bezpečnému ověření a uložení ve službě Azure Key Vault.
- Omezte uživatele, kteří mají přístup k jednání jménem instančního objektu.
Po vytvoření účtu instančního objektu, který má přístup čtenáře monitorování v kořenovém oboru vašeho tenanta pro správu, můžete ho použít k dotazování a hlášení aktivit delegování.
Tento skript Azure PowerShellu se dá použít k dotazování na poslední den aktivity a nahlásit všechny přidané nebo odebrané delegování (nebo pokusy, které nebyly úspěšné). Dotazuje se na data protokolu aktivit tenanta a pak vytvoří následující hodnoty pro hlášení o delegování, které jsou přidány nebo odebrány:
- DelegatedResourceId: ID delegovaného předplatného nebo skupiny prostředků
- CustomerTenantId: ID tenanta zákazníka
- CustomerSubscriptionId: ID předplatného, které bylo delegováno nebo které obsahuje delegovanou skupinu prostředků
- CustomerDelegationStatus: Změna stavu delegovaného prostředku (úspěšné nebo neúspěšné)
- EventTimeStamp: Datum a čas, kdy byla změna delegování zaznamenána.
Při dotazování na tato data mějte na paměti:
- Pokud je v jednom nasazení delegováno více skupin prostředků, vrátí se pro každou skupinu prostředků samostatné položky.
- Změny provedené v předchozím delegování (například aktualizace struktury oprávnění) se zaprotokolují jako přidané delegování.
- Jak už jsme uvedli dříve, účet musí mít předdefinované role Čtenář monitorování Azure v kořenovém oboru (/), aby bylo možné získat přístup k datům na úrovni tenanta.
- Tato data můžete použít ve vlastních pracovních postupech a vytváření sestav. Pomocí rozhraní API pro příjem protokolů můžete například protokolovat data do služby Azure Monitor z klienta REST API a pak pomocí skupin akcí vytvářet oznámení nebo upozornění.
# 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)"
}
Další kroky
- Zjistěte, jak připojit zákazníky ke službě Azure Lighthouse.
- Seznamte se se službou Azure Monitor a protokolem aktivit Azure.
- V ukázkovém sešitu Protokoly aktivit podle domény se dozvíte, jak zobrazit protokoly aktivit Azure napříč předplatnými s možností jejich filtrování podle názvu domény.