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 globális Rendszergazda istrator szerepkörrel rendelkezik további emelt szintű hozzáféréssel.

Globális Rendszergazda istrator-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 Rendszergazda istrator szerepkörrel. Ezt az emelt szintű hozzáférést csak akkor szabad hozzáadni, ha el kell végeznie a szerepkör-hozzárendelést, majd el kell távolítania, amikor elkészült.

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ókja a felhasználói hozzáférés Rendszergazda istrator 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

Miután megemelte a hozzáférést, hozzárendelheti a megfelelő engedélyeket egy fiókhoz, hogy lekérdezhesse a bérlői szintű tevékenységnapló adatait. Ehhez a fiókhoz hozzá kell rendelnie a monitorozási olvasó Azure beépített szerepkörét a felügyeleti bérlő gyökér hatókörében.

Fontos

Ha szerepkör-hozzárendelést ad a gyökérhatókörhöz, az azt jelenti, hogy ugyanezek az engedélyek a bérlő minden erőforrására érvényesek lesznek. Mivel ez a hozzáférés széles körű, 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 Rendszergazda istrator-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örben a kívánt fiókhoz, mindenképpen távolítsa el a globális Rendszergazda istrator-fiók emelt szintű hozzáférését, mivel erre a hozzáférési szintre 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.

Megjelenik a delegálási módosítások listája. Az Oszlopok szerkesztése lehetőséget választva megjelenítheti vagy elrejtheti az állapotot, az eseménykategóriát, az időpontot, az időbélyeget, az előfizetést, a kezdeményező eseményt, az erőforráscsoportot, az erőforrástípust és az erőforrás-értékeket.

Screenshot of delegation changes in the Azure portal.

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, érdemes lehet hozzárendelni a szerepkört egy egyszerű szolgáltatásfiókhoz, és az alábbi szkript használatával lekérdezni az adatokat.

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 új egyszerű szolgáltatásfiókot, amely a Figyelési olvasó hozzáféréssel rendelkezik a felügyeleti bérlő gyökér hatóköréhez, azzal lekérdezheti és jelentést készíthet a bérlő delegálási tevékenységérő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 fentebb említettük, a fióknak a bérlői szintű adatok eléréséhez rendelkeznie kell az Azure Monitorozási olvasó beépített szerepkörével a legfelső szintű hatókörben (/).
  • Ezeket az adatokat saját munkafolyamataiban és jelentéseiben is használhatja. A HTTP Data Collector API (előzetes verzió) használatával például egy REST API-ügyfélről naplózhatja az adatokat az Azure Monitorba, 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