Delegálási változások monitorozása a felügyelt bérlőben
Szolgáltatóként érdemes lehet tisztában lenni azzal, hogy az ügyfél-előfizetések vagy erőforráscsoportok az Azure Lighthouse-on keresztül delegálódnak a bérlőhöz, vagy ha a korábban delegált erőforrások el lesznek távolítva.
A bérlő kezelésekor az Azure-tevékenységnapló a bérlő szintjén követi nyomon a delegálási tevékenységet. Ez a naplózott tevékenység tartalmazza az ügyfélbérlésekből hozzáadott vagy eltávolított delegálásokat.
Ez a témakör az összes ügyfél bérlői delegálási tevékenységének figyeléséhez szükséges engedélyeket ismerteti. Emellett tartalmaz egy példaszkriptet is, amely az adatok lekérdezésére és jelentésére szolgáló egyetlen módszert mutat be.
Fontos
Ezeket a lépéseket az ügyfélbérlők helyett a kezelő bérlőben kell végrehajtani.
Bár ebben a témakörben szolgáltatókra és ügyfelekre hivatkozunk, a több bérlőt kezelő vállalatok ugyanazokat a folyamatokat használhatják .
Bérlőszintű adatokhoz való hozzáférés engedélyezése
A bérlőszintű tevékenységnapló-adatok eléréséhez egy fiókot hozzá kell rendelni a Monitorozási olvasó Azure beépített szerepköréhez a gyökérhatókörben (/). Ezt a feladatot olyan felhasználónak kell elvégeznie, aki további emelt szintű hozzáféréssel rendelkezik a globális rendszergazdai szerepkörrel.
Globális rendszergazdai fiók hozzáférésének emelása
Ha szerepkört szeretne hozzárendelni a gyökérhatókörhöz (/), emelt szintű hozzáféréssel kell rendelkeznie a globális rendszergazdai szerepkörrel. Ezt az emelt szintű hozzáférést csak akkor szabad engedélyezni, ha a szerepkör-hozzárendelést el kell végeznie, majd el kell távolítania a művelet befejezése után.
A jogosultságszint-emelés hozzáadására és eltávolítására vonatkozó részletes utasításokért lásd : Hozzáférés emelése az összes Azure-előfizetés és felügyeleti csoport kezeléséhez.
A hozzáférés emelése után a fiók a felhasználói hozzáférés-rendszergazdai szerepkörrel fog rendelkezni az Azure-ban a gyökérhatókörben. Ez a szerepkör-hozzárendelés lehetővé teszi az összes erőforrás megtekintését és hozzáférés hozzárendelését a címtár bármely előfizetésében vagy felügyeleti csoportjában, valamint szerepkör-hozzárendeléseket végezhet a gyökértartományban.
A Monitorozási olvasó szerepkör hozzárendelése a gyökérhatókörhöz
A hozzáférés emelése után hozzárendelheti a megfelelő engedélyeket egy fiókhoz, hogy lekérdezhesse a bérlőszintű tevékenységnapló adatait. Ennek a fióknak rendelkeznie kell az Azure Monitorozási olvasó beépített szerepkörével a felügyeleti bérlő gyökér hatókörében.
Fontos
A szerepkör-hozzárendelés gyökértartományban való megadása azt jelenti, hogy ugyanazok az engedélyek vonatkoznak a bérlő minden erőforrására. Mivel ilyen széles körű hozzáférésről van szó, javasoljuk , hogy rendelje hozzá ezt a szerepkört egy egyszerű szolgáltatásfiókhoz, és használja ezt a fiókot az adatok lekérdezéséhez.
A Monitorozási olvasó szerepkört a gyökértartományban is hozzárendelheti az egyes felhasználókhoz vagy felhasználói csoportokhoz, hogy közvetlenül az Azure Portalon tekinthetik meg a delegálási információkat. Ha így tesz, vegye figyelembe, hogy ez a hozzáférés széles szintje, amelyet a lehető legkevesebb felhasználóra kell korlátozni.
Használja az alábbi módszerek egyikét a gyökérhatókör-hozzárendelés végrehajtásához.
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 "/"
A globális rendszergazdai fiók emelt szintű hozzáférésének eltávolítása
Miután hozzárendelte a Monitorozási olvasó szerepkört a gyökérhatókörhöz a kívánt fiókhoz, mindenképpen távolítsa el a globális rendszergazdai fiók emelt szintű hozzáférését , mivel erre a magas szintű hozzáférésre már nincs szükség.
Delegálási módosítások megtekintése az Azure Portalon
Azok a felhasználók, akik a gyökérhatókör figyelési olvasó szerepkörével rendelkeznek, közvetlenül az Azure Portalon tekinthetik meg a delegálás módosításait.
- Lépjen a Saját ügyfelek lapra, majd válassza a tevékenységnaplót a bal oldali navigációs menüből.
- Győződjön meg arról, hogy a címtártevékenység ki van jelölve a szűrőben a képernyő tetején.
- Válassza ki azt az időbélyeget, amelyhez meg szeretné tekinteni a delegálás módosításait.
Szolgáltatásnév-fiók használata a tevékenységnapló lekérdezéséhez
Mivel a Gyökér hatókörben a Figyelési olvasó szerepkör ilyen széles körű hozzáféréssel rendelkezik, javasoljuk, hogy rendelje hozzá a szerepkört egy egyszerű szolgáltatásfiókhoz, és használja ezt a fiókot az adatok szkripten keresztüli lekérdezéséhez.
Fontos
A nagy mennyiségű delegálási tevékenységgel rendelkező bérlők jelenleg hibákba ütközhetnek az adatok lekérdezése során.
Amikor egyszerű szolgáltatásfiókot használ a tevékenységnapló lekérdezéséhez, az alábbi ajánlott eljárásokat javasoljuk:
- Hozzon létre egy új egyszerű szolgáltatásfiókot , amelyet csak ehhez a függvényhez használhat, ahelyett, hogy ezt a szerepkört egy más automatizáláshoz használt meglévő szolgáltatásnévhez rendeli.
- Győződjön meg arról, hogy ez a szolgáltatásnév nem rendelkezik hozzáféréssel a delegált ügyfélerőforrásokhoz.
- Tanúsítvány használatával hitelesítheti és biztonságosan tárolhatja azt az Azure Key Vaultban.
- Korlátozza azokat a felhasználókat, akiknek hozzáférésük van a szolgáltatásnév nevében való cselekvéshez.
Miután létrehozott egy egyszerű szolgáltatásfiókot, amely figyelési olvasó hozzáféréssel rendelkezik a felügyeleti bérlő gyökér hatókörében, lekérdezheti és jelentést készíthet a delegálási tevékenységről.
Ez az Azure PowerShell-szkript a tevékenység elmúlt napjának lekérdezésére és a hozzáadott vagy eltávolított delegálások (vagy sikertelen kísérletek) jelentésére használható. Lekérdezi a bérlői tevékenységnapló adatait, majd a következő értékeket hozza létre a hozzáadott vagy eltávolított delegálások jelentéséhez:
- DelegatedResourceId: A delegált előfizetés vagy erőforráscsoport azonosítója
- CustomerTenantId: Az ügyfél bérlőazonosítója
- CustomerSubscriptionId: A delegált vagy a delegált erőforráscsoportot tartalmazó előfizetés-azonosító
- CustomerDelegationStatus: A delegált erőforrás állapotváltozása (sikeres vagy sikertelen)
- EventTimeStamp: A delegálási módosítás naplózásának dátuma és időpontja
Az adatok lekérdezésekor vegye figyelembe a következőket:
- Ha több erőforráscsoport delegálva van egyetlen üzemelő példányban, a rendszer minden erőforráscsoporthoz külön bejegyzéseket ad vissza.
- Egy korábbi delegálás módosításait (például az engedélystruktúra frissítését) a rendszer hozzáadott delegálásként naplózza.
- Ahogy korábban már említettük, a fióknak beépített Azure monitorozási szerepkörrel kell rendelkeznie a bérlőszintű adatok eléréséhez a gyökérhatókörben (/).
- Ezeket az adatokat saját munkafolyamataiban és jelentéseiben is használhatja. A Logs Ingestion API használatával például adatokat naplózhat az Azure Monitorba EGY REST API-ügyfélről, majd műveletcsoportokkal hozhat létre értesítéseket vagy riasztásokat.
# 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)"
}
Következő lépések
- Megtudhatja, hogyan hozhatja be az ügyfeleket az Azure Lighthouse-ba.
- További információ az Azure Monitorról és az Azure-tevékenységnaplóról.
- Tekintse át a Tevékenységnaplók tartomány szerint mintamunkafüzetet, amelyből megtudhatja, hogyan jelenítheti meg az Azure-tevékenységnaplókat előfizetések között, és hogyan szűrheti őket tartománynév alapján.