Yönetim kiracınızdaki temsilci değişikliklerini izleme

Hizmet sağlayıcısı olarak, müşteri aboneliklerinin veya kaynak gruplarının Azure Lighthouse aracılığıyla kiracınıza ne zaman temsilci seçilebileceğini veya daha önce temsilci olarak atanan kaynakların ne zaman kaldırıldığını bilmek isteyebilirsiniz.

Yönetici kiracısında Azure etkinlik günlüğü, temsilci etkinliğini kiracı düzeyinde izler. Bu günlüğe kaydedilen etkinlik, müşteri kiracılarından eklenen veya kaldırılan temsilciler içerir.

Bu konu başlığı altında, tüm müşterileriniz genelinde kiracınıza temsilci etkinliği izlemek için gereken izinler açıklanmaktadır. Ayrıca, bu verileri sorgulamak ve raporlamak için tek bir yöntemi gösteren örnek bir betik de içerir.

Önemli

Bu adımların tümü, tüm müşteri kiracıları yerine yönetim kiracınızda gerçekleştirilmelidir.

Bu konu başlığında hizmet sağlayıcılarına ve müşterilere başvursak da, birden çok kiracıyı yöneten kuruluşlar aynı işlemleri kullanabilir.

Kiracı düzeyinde verilere erişimi etkinleştirme

Kiracı düzeyinde Etkinlik Günlüğü verilerine erişmek için bir hesaba kök kapsamda (/) İzleme Okuyucusu Azure yerleşik rolü atanmalıdır. Bu atamanın, yükseltilmiş ek erişime sahip Genel Yönetici istrator rolüne sahip bir kullanıcı tarafından gerçekleştirilmesi gerekir.

Genel Yönetici istrator hesabı için erişimi yükseltme

Kök kapsamda (/) rol atamak için, yükseltilmiş erişime sahip Genel Yönetici istrator rolüne sahip olmanız gerekir. Bu yükseltilmiş erişim yalnızca rol ataması yapmanız gerektiğinde eklenmelidir ve işiniz bittiğinde kaldırılmalıdır.

Yükseltme ekleme ve kaldırma hakkında ayrıntılı yönergeler için bkz . Tüm Azure aboneliklerini ve yönetim gruplarını yönetmek için erişimi yükseltme.

Erişiminizi yükselttikte, hesabınız kök kapsamda Azure'da Kullanıcı Erişimi Yönetici istrator rolüne sahip olur. Bu rol ataması, tüm kaynakları görüntülemenize ve dizindeki herhangi bir abonelik veya yönetim grubuna erişim atamanın yanı sıra kök kapsamda rol atamaları yapmanıza olanak tanır.

Kök kapsamda İzleme Okuyucusu rolünü atama

Erişiminizi yükseltdikten sonra, kiracı düzeyinde etkinlik günlüğü verilerini sorgulaması için hesaba uygun izinleri atayabilirsiniz. Bu hesabın , yönetim kiracınızın kök kapsamında İzleme Okuyucusu Azure yerleşik rolünün atanmış olması gerekir.

Önemli

Kök kapsamda rol ataması vermek, aynı izinlerin kiracıdaki her kaynağa uygulanacağı anlamına gelir. Bu geniş bir erişim düzeyi olduğundan, bu rolü bir hizmet sorumlusu hesabına atamanızı ve verileri sorgulamak için bu hesabı kullanmanızı öneririz.

Ayrıca, temsilci bilgilerini doğrudan Azure portalında görüntüleyebilmeleri için kök kapsamdaki İzleme Okuyucusu rolünü tek tek kullanıcılara veya kullanıcı gruplarına atayabilirsiniz. Bunu yaparsanız, bunun mümkün olan en az sayıda kullanıcıyla sınırlı olması gereken geniş bir erişim düzeyi olduğunu unutmayın.

Kök kapsam ataması yapmak için aşağıdaki yöntemlerden birini kullanın.

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 "/"

Genel Yönetici istrator hesabı için yükseltilmiş erişimi kaldırma

Kök kapsamdaki İzleme Okuyucusu rolünü istediğiniz hesaba atadıktan sonra, bu erişim düzeyine artık gerek kalmayacağı için Genel Yönetici istrator hesabı için yükseltilmiş erişimi kaldırdığınızdan emin olun.

Azure portalında temsilci değişikliklerini görüntüleme

Kök kapsamda İzleme Okuyucusu rolü atanmış kullanıcılar temsilci değişikliklerini doğrudan Azure portalında görüntüleyebilir.

  1. Müşterilerim sayfasına gidin ve sol gezinti menüsünden Etkinlik günlüğü'nü seçin.
  2. Ekranın üst kısmındaki filtrede Dizin Etkinliği'nin seçili olduğundan emin olun.

Temsilci değişikliklerinin listesi görüntülenir. Durum, Olay kategorisi, Zaman, Zaman damgası, Abonelik, Tarafından başlatılan olay, Kaynak grubu, Kaynak türü ve Kaynak değerlerini göstermek veya gizlemek için Sütunları düzenle'yi seçebilirsiniz.

Screenshot of delegation changes in the Azure portal.

Etkinlik günlüğünü sorgulamak için hizmet sorumlusu hesabı kullanma

Kök kapsamdaki İzleme Okuyucusu rolü çok geniş bir erişim düzeyi olduğundan, rolü bir hizmet sorumlusu hesabına atamak ve aşağıdaki betiği kullanarak verileri sorgulamak için bu hesabı kullanmak isteyebilirsiniz.

Önemli

Şu anda, büyük miktarda temsilci etkinliğine sahip kiracılar bu verileri sorgularken hatalarla karşılaşabilir.

Etkinlik günlüğünü sorgulamak için bir hizmet sorumlusu hesabı kullanırken aşağıdaki en iyi yöntemleri öneririz:

Yönetim kiracınızın kök kapsamına İzleme Okuyucusu erişimi olan yeni bir hizmet sorumlusu hesabı oluşturduktan sonra, kiracınızdaki temsilci etkinliğini sorgulamak ve raporlamak için bu hesabı kullanabilirsiniz.

Bu Azure PowerShell betiği , etkinliğin son gününü sorgulamak ve eklenen veya kaldırılan temsilci seçmeleri (veya başarılı olmayan girişimleri) raporlamak için kullanılabilir. Kiracı Etkinlik Günlüğü verilerini sorgular, ardından eklenen veya kaldırılan temsilci seçmeleri raporlamak için aşağıdaki değerleri oluşturur:

  • DelegatedResourceId: Temsilci atanan aboneliğin veya kaynak grubunun kimliği
  • CustomerTenantId: Müşteri kiracı kimliği
  • CustomerSubscriptionId: Temsilci olarak atanan veya temsilci olarak atanan kaynak grubunu içeren abonelik kimliği
  • CustomerDelegationStatus: Temsilci atanan kaynağın durum değişikliği (başarılı veya başarısız)
  • EventTimeStamp: Temsilci değişikliğinin günlüğe kaydedildiği tarih ve saat

Bu verileri sorgularken şunları aklınızda bulundurun:

  • Tek bir dağıtımda birden çok kaynak grubuna temsilci atanırsa, her kaynak grubu için ayrı girdiler döndürülür.
  • Önceki bir temsilcide yapılan değişiklikler (izin yapısını güncelleştirme gibi) eklenen temsilci olarak günlüğe kaydedilir.
  • Yukarıda belirtildiği gibi, bir hesabın bu kiracı düzeyindeki verilere erişebilmesi için kök kapsamda (/) İzleme Okuyucusu Azure yerleşik rolüne sahip olması gerekir.
  • Bu verileri kendi iş akışlarınızda ve raporlamanızda kullanabilirsiniz. Örneğin, HTTP Veri Toplayıcı API'sini (önizleme) kullanarak rest API istemcisinden Azure İzleyici'ye veri kaydedebilir ve ardından bildirim veya uyarı oluşturmak için eylem gruplarını kullanabilirsiniz.
# 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 = $registerOutput.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)"
}

Sonraki adımlar