Megosztás a következőn keresztül:


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.

  1. Lépjen a Saját ügyfelek lapra, majd válassza a tevékenységnaplót a bal oldali navigációs menüből.
  2. 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.
  3. Válassza ki azt az időbélyeget, amelyhez meg szeretné tekinteni a delegálás módosításait.

Képernyőkép az Azure Portal delegálási változásairól.

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:

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