Azure kaynaklarının uyumluluk verilerini alma

Azure İlkesi en büyük avantajlarından biri, bir abonelikteki veya abonelik yönetim grubundaki kaynaklar üzerinde sağladığı içgörü ve denetimlerdir. Bu denetim, kaynakların yanlış konumda oluşturulmasını önlemek, ortak ve tutarlı etiket kullanımını zorlamak veya mevcut kaynakları uygun yapılandırmalar ve ayarlar için denetlemek için kullanılabilir. Her durumda veriler, ortamınızın uyumluluk durumunu anlamanıza olanak tanımak için Azure İlkesi tarafından oluşturulur.

Uyumluluk verilerini gözden geçirmeden önce, Azure İlkesi uyumluluk durumlarını anlamak önemlidir.

İlkeniz ve girişim atamalarınız tarafından oluşturulan uyumluluk bilgilerine erişmenin çeşitli yolları vardır:

Uyumlulukla ilgili raporlama yöntemlerine bakmadan önce, uyumluluk bilgilerinin ne zaman güncelleştirildiğini ve değerlendirme döngüsünü tetikleyen sıklık ve olayları inceleyelim.

Değerlendirme tetikleyicileri

Tamamlanmış bir değerlendirme döngüsünün sonuçları, ve PolicyEvents işlemleri aracılığıyla PolicyStates Kaynak Sağlayıcısı'nda Microsoft.PolicyInsights kullanılabilir. Azure İlkesi Insights REST API'sinin işlemleri hakkında daha fazla bilgi için bkz. Azure İlkesi İçgörüler.

Atanan ilkelerin ve girişimlerin değerlendirilmesi çeşitli olayların sonucu olarak gerçekleşir:

  • Kapsama yeni bir ilke veya girişim atanır. Atamanın tanımlanan kapsama uygulanması yaklaşık beş dakika sürer, ardından değerlendirme döngüsü yeni atanan ilkeye veya girişime karşı geçerli kaynaklar için başlar. Kullanılan etkilere bağlı olarak, kaynaklar uyumlu, uyumlu değil, muaf veya bilinmiyor olarak işaretlenir. Büyük bir kaynak kapsamına göre değerlendirilen büyük bir ilke veya girişim zaman alabilir, bu nedenle değerlendirme döngüsünün ne zaman tamamlandığına ilişkin önceden tanımlanmış bir beklenti yoktur. İşlem tamamlandıktan sonra güncelleştirilmiş uyumluluk sonuçları portalda ve SDK'larda kullanılabilir.

  • Kapsama zaten atanmış bir ilke veya girişim güncelleştirilir. Bu senaryonun değerlendirme döngüsü ve zamanlaması, kapsama yeni atamayla aynıdır.

  • Bir kaynak Azure Resource Manager, REST API veya desteklenen bir SDK aracılığıyla bir atamayla bir kapsamda dağıtılır veya bu kapsamda güncelleştirilir. Bu senaryoda, tek tek kaynak için efekt olayı (ekleme, denetim, reddetme, dağıtma) ve uyumlu durum bilgileri yaklaşık 15 dakika sonra portalda ve SDK'larda kullanılabilir hale gelir. Bu olay diğer kaynakların değerlendirilmesine neden olmaz.

  • Abonelik (kaynak türü Microsoft.Resources/subscriptions), abonelik kaynak türünü hedefleyen atanmış bir ilke tanımıyla bir yönetim grubu hiyerarşisi içinde oluşturulur veya taşınır. Abonelik tarafından desteklenen etkilerin (audit, auditIfNotExist, deployIfNotExists, modify), günlüğe kaydedilmesi ve düzeltme eylemlerinin değerlendirilmesi yaklaşık 30 dakika sürer.

  • İlke muafiyeti oluşturulur, güncelleştirilir veya silinir. Bu senaryoda, karşılık gelen atama tanımlı muafiyet kapsamı için değerlendirilir.

  • Standart uyumluluk değerlendirme döngüsü. Her 24 saatte bir ödevler otomatik olarak yeniden değerlendirilir. Birçok kaynağın büyük bir ilkesi veya girişimi zaman alabilir, bu nedenle değerlendirme döngüsünün ne zaman tamamlandığına ilişkin önceden tanımlanmış bir beklenti yoktur. İşlem tamamlandıktan sonra güncelleştirilmiş uyumluluk sonuçları portalda ve SDK'larda kullanılabilir.

  • Makine yapılandırma kaynak sağlayıcısı, yönetilen bir kaynağın uyumluluk ayrıntılarıyla güncelleştirilir.

  • İsteğe bağlı tarama

Not

Tasarım gereği Azure İlkesi, kaynak sağlayıcısı (RP) kapsamındaki Microsoft.Resources tüm kaynakları, değerlendirilebilecek abonelikler ve kaynak grupları dışında ilke değerlendirmesinden muaf kılar.

İsteğe bağlı değerlendirme taraması

Azure CLI, Azure PowerShell, REST API çağrısı veya Azure İlkesi Uyumluluk Taraması GitHub Eylemi kullanılarak bir abonelik veya kaynak grubu için değerlendirme taraması başlatılabilir. Bu tarama zaman uyumsuz bir işlemdir.

Not

Tüm Azure kaynak sağlayıcıları isteğe bağlı değerlendirme taramalarını desteklemez. Örneğin, Azure Sanal Ağ Yöneticisi (AVNM) şu anda el ile tetikleyicileri veya standart ilke uyumluluğu değerlendirme döngüsünü (günlük taramalar) desteklemez.

İsteğe bağlı değerlendirme taraması - GitHub Action

GitHub iş akışınızdan bir veya birden çok kaynakta, kaynak grubunda veya abonelikte isteğe bağlı bir değerlendirme taraması tetikleyip kaynakların uyumluluk durumuna göre iş akışının geçişini yapmak için Azure İlkesi Uyumluluk Taraması eylemini kullanın. Ayrıca, en son uyumluluk durumunu uygun bir zamanda almak için iş akışını zamanlanmış bir zamanda çalışacak şekilde yapılandırabilirsiniz. İsteğe bağlı olarak, GitHub Actions daha fazla analiz veya arşivleme için taranan kaynakların uyumluluk durumuyla ilgili bir rapor oluşturabilir.

Aşağıdaki örnek bir abonelik için uyumluluk taraması çalıştırır.

on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Daha fazla bilgi ve iş akışı örnekleri için bkz. Azure İlkesi Uyumluluk Taraması deposu için GitHub Actions.

İsteğe bağlı değerlendirme taraması - Azure CLI

Uyumluluk taraması az policy state trigger-scan komutuyla başlatılır.

Varsayılan olarak, az policy state trigger-scan geçerli abonelikteki tüm kaynaklar için bir değerlendirme başlatır. Belirli bir kaynak grubunda değerlendirme başlatmak için kaynak grubu parametresini kullanın. Aşağıdaki örnek , MyRG kaynak grubu için geçerli abonelikte bir uyumluluk taraması başlatır:

az policy state trigger-scan --resource-group "MyRG"

Beklememe parametresiyle devam etmeden önce zaman uyumsuz işlemin tamamlanmasını beklememeyi seçebilirsiniz.

İsteğe bağlı değerlendirme taraması - Azure PowerShell

Uyumluluk taraması Start-AzPolicyComplianceScan cmdlet'iyle başlatılır.

Varsayılan olarak, Start-AzPolicyComplianceScan geçerli abonelikteki tüm kaynaklar için bir değerlendirme başlatır. Belirli bir kaynak grubunda değerlendirme başlatmak için ResourceGroupName parametresini kullanın. Aşağıdaki örnek , MyRG kaynak grubu için geçerli abonelikte bir uyumluluk taraması başlatır:

Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'

PowerShell'in sonuç çıktısını sağlamadan önce zaman uyumsuz çağrının tamamlanmasını beklemesini veya arka planda iş olarak çalışmasını sağlayabilirsiniz. Uyumluluk taramasını arka planda çalıştırmak üzere bir PowerShell işi kullanmak için AsJob parametresini kullanın ve değeri şu örnekte olduğu gibi bir nesne olarak $job ayarlayın:

$job = Start-AzPolicyComplianceScan -AsJob

Nesnesini denetleyerek işin durumunu de $job kontrol edebilirsiniz. İş türündedir Microsoft.Azure.Commands.Common.AzureLongRunningJob. Kullanılabilir özellikleri ve yöntemleri görmek için nesnesinde $job kullanınGet-Member.

Uyumluluk taraması çalışırken, nesne denetlenirken $job aşağıdaki gibi sonuçlar elde edilir:

$job

Id     Name              PSJobTypeName     State         HasMoreData     Location             Command
--     ----              -------------     -----         -----------     --------             -------
2      Long Running O... AzureLongRunni... Running       True            localhost            Start-AzPolicyCompliance...

Uyumluluk taraması tamamlandığında State özelliği Tamamlandı olarak değişir.

İsteğe bağlı değerlendirme taraması - REST

Zaman uyumsuz bir işlem olarak, taramayı başlatmak için REST uç noktası taramanın yanıt vermesini beklemez. Bunun yerine, istenen değerlendirmenin durumunu sorgulamak için bir URI sağlar.

Her bir REST API URI'sinde kendi değerlerinizle değiştirmeniz gereken değişkenler bulunur:

  • {YourRG} - değerini kaynak grubunuzun adıyla değiştirin
  • {subscriptionId} - Abonelik kimliğinizle değiştirin

Tarama, abonelikteki veya kaynak grubundaki kaynakların değerlendirilmesini destekler. Aşağıdaki URI yapılarını kullanarak REST API POST komutuyla kapsama göre tarama başlatın:

  • Abonelik

    POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
    
  • Kaynak grubu

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
    

Çağrı 202 Kabul Edildi durumunu döndürür. Yanıt üst bilgisinde aşağıdaki biçime sahip bir Location özelliği bulunur:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01

{ResourceContainerGUID} , istenen kapsam için statik olarak oluşturulur. Kapsam zaten isteğe bağlı bir tarama çalıştırıyorsa yeni bir tarama başlatılmaz. Bunun yerine, yeni istek durum için aynı {ResourceContainerGUID}konum URI'sini sağlar. Değerlendirme devam ederken Konum URI'sine bir REST API GET komutu 202 Accepted döndürür. Değerlendirme taraması tamamlandığında 200 Tamam durumu döndürür. Tamamlanan taramanın gövdesi, şu duruma sahip bir JSON yanıtıdır:

{
    "status": "Succeeded"
}

İsteğe bağlı değerlendirme taraması - Visual Studio Code

Visual Studio Code için Azure İlkesi uzantısı, belirli bir kaynak için değerlendirme taraması çalıştırabilen bir uzantıdır. Bu tarama, Azure PowerShell ve REST yöntemlerinden farklı olarak zaman uyumlu bir işlemdir. Ayrıntılar ve adımlar için bkz. VS Code uzantısıyla isteğe bağlı değerlendirme.

Portal

Azure portal, ortamınızdaki uyumluluk durumunu görselleştirme ve anlama konusunda grafiksel bir deneyim sunar. İlke sayfasında, Genel Bakış seçeneği hem ilkelerin hem de girişimlerin uyumluluğuyla ilgili kullanılabilir kapsamların ayrıntılarını sağlar. Uyumluluk durumu ve atama başına sayım ile birlikte, son yedi güne ilişkin uyumluluğu gösteren bir grafik içerir. Uyumluluk sayfası bu bilgilerin çoğunu (grafik dışında) içerir, ancak ek filtreleme ve sıralama seçenekleri sağlar.

Uyumluluk sayfasının, filtreleme seçeneklerinin ve ayrıntıların ekran görüntüsü.

İlke veya girişim farklı kapsamlara atanabildiğinden, tablo her atamanın kapsamını ve atanan tanım türünü içerir. Her atama için uyumlu olmayan kaynakların ve uyumlu olmayan ilkelerin sayısı da sağlanır. Tabloda bir ilkeyi veya girişimi seçmek, söz konusu atamanın uyumluluğuna daha ayrıntılı bir bakış sağlar.

Sayımlar ve kaynak uyumlu ayrıntıları da dahil olmak üzere Uyumluluk Ayrıntıları sayfasının ekran görüntüsü.

Kaynak uyumluluğu sekmesindeki kaynakların listesi, geçerli atama için mevcut kaynakların değerlendirme durumunu gösterir. Sekme varsayılan olarak Uyumlu değil olarak ayarlı ancak filtrelenebilir. Kaynak oluşturma isteği tarafından tetiklenen olaylar (ekleme, denetim, reddetme, dağıtma, değiştirme) Olaylar sekmesi altında gösterilir.

Uyumluluk Ayrıntıları sayfasındaki Olaylar sekmesinin ekran görüntüsü.

Kaynak Sağlayıcısı modu kaynakları için, Kaynak uyumluluğu sekmesinde kaynağı seçerek veya satıra sağ tıklayıp Uyumluluk ayrıntılarını görüntüle'yi seçtiğinizde bileşen uyumluluk ayrıntıları açılır. Bu sayfa ayrıca bu kaynağa atanan ilkeleri, olayları, bileşen olaylarını ve değişiklik geçmişini görmek için sekmeler sunar.

Kaynak Sağlayıcısı modu ataması için Bileşen Uyumluluğu sekmesinin ve uyumluluk ayrıntılarının ekran görüntüsü.

Kaynak uyumluluğu sayfasına geri döndüğünüzde, daha fazla ayrıntı toplamak istediğiniz olayın satırını seçin ve basılı tutun (veya sağ tıklayın) ve Etkinlik günlüklerini göster'i seçin. Etkinlik günlüğü sayfası açılır ve atamanın ve olayların ayrıntılarını gösteren aramaya önceden filtrelenmiştir. Etkinlik günlüğü, bu olaylar hakkında daha fazla bağlam ve bilgi sağlar.

Azure İlkesi etkinlikleri ve değerlendirmeleri için Etkinlik Günlüğü'nü ekran görüntüsü.

Not

Uyumluluk sonuçları Azure Kaynak Grafı sorguları aracılığıyla Portaldan dışarı aktarılabilir.

Komut satırı

Portalda sağlanan bilgilerin aynısı REST API (ARMClient ile birlikte), Azure PowerShell ve Azure CLI ile alınabilir. REST API ile ilgili tüm ayrıntılar için bkz. Azure İlkesi başvurusu. REST API başvuru sayfalarında, her işlemde doğrudan tarayıcıda denemenizi sağlayan yeşil bir 'Deneyin' düğmesi bulunur.

REST API örnekleri için Azure'da kimlik doğrulamasını işlemek için ARMClient veya benzer bir araç kullanın.

Sonuçları özetleme

REST API ile özetleme kapsayıcı, tanım veya atama ile gerçekleştirilebilir. Azure İlkesi Insight'ın Abonelik için Özetle'sini kullanarak abonelik düzeyinde özetleme örneği aşağıda verilmiştir:

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01

Çıkış, aboneliği özetler. Aşağıdaki örnek çıktıda, özetlenen uyumluluk value.results.nonCompliantResources ve value.results.nonCompliantPolicies altındadır. Bu istek, uyumlu olmayan sayıları oluşturan her atama ve her atama için tanım bilgileri de dahil olmak üzere daha fazla ayrıntı sağlar. Hiyerarşideki her ilke nesnesi, bu düzeyde daha fazla ayrıntı almak için kullanılabilecek bir queryResultsUri sağlar.

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary",
    "@odata.count": 1,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
        "results": {
            "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant'",
            "nonCompliantResources": 15,
            "nonCompliantPolicies": 1
        },
        "policyAssignments": [{
            "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77",
            "policySetDefinitionId": "",
            "results": {
                "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77'",
                "nonCompliantResources": 15,
                "nonCompliantPolicies": 1
            },
            "policyDefinitions": [{
                "policyDefinitionReferenceId": "",
                "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "effect": "deny",
                "results": {
                    "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'",
                    "nonCompliantResources": 15
                }
            }]
        }]
    }]
}

Kaynakları sorgulama

Yukarıdaki örnekte value.policyAssignments.policyDefinitions.results.queryResultsUri , belirli bir ilke tanımı için tüm uyumlu olmayan kaynaklar için örnek bir URI sağlar. $filter değerinde ComplianceState değeri 'NonCompliant' değerine eşittir (eq), ilke tanımı için PolicyAssignmentId belirtilir ve ardından PolicyDefinitionId'nin kendisi belirtilir. PolicyAssignmentId değerini filtreye eklemenin nedeni, PolicyDefinitionId değerinin farklı kapsamlara sahip çeşitli ilke veya girişim atamalarında mevcut olmasıdır. Hem PolicyAssignmentId hem de PolicyDefinitionId değerini belirterek, aradığımız sonuçlarda açık bir şekilde bulunabiliriz. Daha önce PolicyStates için son 24 saatin başlangıçve saat aralığını otomatik olarak ayarlayan en son sürümünü kullanıyorduk.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'

Aşağıdaki örnek yanıt kısa bir süre için uyumlu olmayan tek bir kaynağa kırpılmıştır. Ayrıntılı yanıtta kaynak, ilke veya girişim ve atamayla ilgili çeşitli veriler bulunur. İlke tanımına hangi atama parametrelerinin geçirildiğini de görebileceğinize dikkat edin.

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
    "@odata.count": 15,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
        "timestamp": "2018-05-19T04:41:09Z",
        "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Compute/virtualMachines/linux",
        "policyAssignmentId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Authorization/policyAssignments/37ce239ae4304622914f0c77",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
        "effectiveParameters": "",
        "ComplianceState": "NonCompliant",
        "subscriptionId": "{subscriptionId}",
        "resourceType": "/Microsoft.Compute/virtualMachines",
        "resourceLocation": "westus2",
        "resourceGroup": "RG-Tags",
        "resourceTags": "tbd",
        "policyAssignmentName": "37ce239ae4304622914f0c77",
        "policyAssignmentOwner": "tbd",
        "policyAssignmentParameters": "{\"tagName\":{\"value\":\"costCenter\"},\"tagValue\":{\"value\":\"Contoso-Test\"}}",
        "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags",
        "policyDefinitionName": "1e30110a-5ceb-460c-a204-c1c3969c6d62",
        "policyDefinitionAction": "deny",
        "policyDefinitionCategory": "tbd",
        "policySetDefinitionId": "",
        "policySetDefinitionName": "",
        "policySetDefinitionOwner": "",
        "policySetDefinitionCategory": "",
        "policySetDefinitionParameters": "",
        "managementGroupIds": "",
        "policyDefinitionReferenceId": ""
    }]
}

Etkinlikleri görüntüleme

Bir kaynak oluşturulduğunda veya güncelleştirildiğinde, bir ilke değerlendirme sonucu oluşturulur. Sonuçlar ilke olayları olarak adlandırılır. Abonelikle ilişkili son ilke olaylarını görüntülemek için aşağıdaki URI'yi kullanın.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01

Sonuçlarınız aşağıdaki örneğe benzer:

{
    "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default",
    "@odata.count": 1,
    "value": [{
        "@odata.id": null,
        "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default/$entity",
        "NumAuditEvents": 16
    }]
}

İlke olaylarını sorgulama hakkında daha fazla bilgi için Azure İlkesi Olayları başvuru makalesine bakın.

Azure CLI

Azure İlkesi için Azure CLI komut grubu, REST veya Azure PowerShell'da kullanılabilen çoğu işlemi kapsar. Kullanılabilir komutların tam listesi için bkz. Azure CLI - Azure İlkesi Genel Bakış.

Örnek: En fazla sayıda uyumlu olmayan kaynağa sahip en üstteki atanan ilkenin durum özetini alma.

az policy state summarize --top 1

Yanıtın üst kısmı şu örneğe benzer:

{
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
    "odataid": null,
    "policyAssignments": [{
            "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
            "policyDefinitions": [{
                "effect": "audit",
                "policyDefinitionGroupNames": [
                    ""
                ],
                "policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
                "policyDefinitionReferenceId": "",
                "results": {
                    "nonCompliantPolicies": null,
                    "nonCompliantResources": 398,
                    "policyDetails": [{
                        "complianceState": "noncompliant",
                        "count": 1
                    }],
                    "policyGroupDetails": [{
                        "complianceState": "noncompliant",
                        "count": 1
                    }],
                    "queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2020-07-14 14:01:22Z&$to=2020-07-15 14:01:22Z and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8' and PolicyDefinitionId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a'",
                    "resourceDetails": [{
                            "complianceState": "noncompliant",
                            "count": 398
                        },
                        {
                            "complianceState": "compliant",
                            "count": 4
                        }
                    ]
                }
            }],
    ...

Örnek: En son değerlendirilen kaynağın durum kaydını alma (varsayılan değer, azalan sırada zaman damgasıdır).

az policy state list --top 1
[
  {
    "complianceReasonCode": "",
    "complianceState": "Compliant",
    "effectiveParameters": "",
    "isCompliant": true,
    "managementGroupIds": "{managementgroupId}",
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
    "odataid": null,
    "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/securitycenterbuiltin",
    "policyAssignmentName": "SecurityCenterBuiltIn",
    "policyAssignmentOwner": "tbd",
    "policyAssignmentParameters": "",
    "policyAssignmentScope": "/subscriptions/{subscriptionId}",
    "policyAssignmentVersion": "",
    "policyDefinitionAction": "auditifnotexists",
    "policyDefinitionCategory": "tbd",
    "policyDefinitionGroupNames": [
      ""
    ],
    "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/aa633080-8b72-40c4-a2d7-d00c03e80bed",
    "policyDefinitionName": "aa633080-8b72-40c4-a2d7-d00c03e80bed",
    "policyDefinitionReferenceId": "identityenablemfaforownerpermissionsmonitoring",
    "policyDefinitionVersion": "",
    "policyEvaluationDetails": null,
    "policySetDefinitionCategory": "security center",
    "policySetDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
    "policySetDefinitionName": "1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
    "policySetDefinitionOwner": "",
    "policySetDefinitionParameters": "",
    "policySetDefinitionVersion": "",
    "resourceGroup": "",
    "resourceId": "/subscriptions/{subscriptionId}",
    "resourceLocation": "",
    "resourceTags": "tbd",
    "resourceType": "Microsoft.Resources/subscriptions",
    "subscriptionId": "{subscriptionId}",
    "timestamp": "2020-07-15T08:37:07.903433+00:00"
  }
]

Örnek: Tüm uyumlu olmayan sanal ağ kaynaklarının ayrıntılarını alma.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"
[
  {
    "complianceReasonCode": "",
    "complianceState": "NonCompliant",
    "effectiveParameters": "",
    "isCompliant": false,
    "managementGroupIds": "{managementgroupId}",
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
    "odataid": null,
    "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
    "policyAssignmentName": "e0704696df5e4c3c81c873e8",
    "policyAssignmentOwner": "tbd",
    "policyAssignmentParameters": "",
    "policyAssignmentScope": "/subscriptions/{subscriptionId}",
    "policyAssignmentVersion": "",
    "policyDefinitionAction": "audit",
    "policyDefinitionCategory": "tbd",
    "policyDefinitionGroupNames": [
      ""
    ],
    "policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionReferenceId": "",
    "policyDefinitionVersion": "",
    "policyEvaluationDetails": null,
    "policySetDefinitionCategory": "",
    "policySetDefinitionId": "",
    "policySetDefinitionName": "",
    "policySetDefinitionOwner": "",
    "policySetDefinitionParameters": "",
    "policySetDefinitionVersion": "",
    "resourceGroup": "RG-Tags",
    "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
    "resourceLocation": "westus2",
    "resourceTags": "tbd",
    "resourceType": "Microsoft.Network/virtualNetworks",
    "subscriptionId": "{subscriptionId}",
    "timestamp": "2020-07-15T08:37:07.901911+00:00"
  }
]

Örnek: Belirli bir tarihten sonra gerçekleşen uyumlu olmayan sanal ağ kaynaklarıyla ilgili olayları alma.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2020-07-14T00:00:00Z'
[
  {
    "complianceReasonCode": "",
    "complianceState": "NonCompliant",
    "effectiveParameters": "",
    "isCompliant": false,
    "managementGroupIds": "{managementgroupId}",
    "odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
    "odataid": null,
    "policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
    "policyAssignmentName": "e0704696df5e4c3c81c873e8",
    "policyAssignmentOwner": "tbd",
    "policyAssignmentParameters": "",
    "policyAssignmentScope": "/subscriptions/{subscriptionId}",
    "policyAssignmentVersion": "",
    "policyDefinitionAction": "audit",
    "policyDefinitionCategory": "tbd",
    "policyDefinitionGroupNames": [
      ""
    ],
    "policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
    "policyDefinitionReferenceId": "",
    "policyDefinitionVersion": "",
    "policyEvaluationDetails": null,
    "policySetDefinitionCategory": "",
    "policySetDefinitionId": "",
    "policySetDefinitionName": "",
    "policySetDefinitionOwner": "",
    "policySetDefinitionParameters": "",
    "policySetDefinitionVersion": "",
    "resourceGroup": "RG-Tags",
    "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
    "resourceLocation": "westus2",
    "resourceTags": "tbd",
    "resourceType": "Microsoft.Network/virtualNetworks",
    "subscriptionId": "{subscriptionId}",
    "timestamp": "2020-07-15T08:37:07.901911+00:00"
  }
]

Azure PowerShell

Azure İlkesi için Azure PowerShell modülü PowerShell Galerisi Az.PolicyInsights olarak kullanılabilir. PowerShellGet kullanarak modülü Install-Module -Name Az.PolicyInsights yükleyebilirsiniz (en son Azure PowerShell yüklü olduğundan emin olun):

# Install from PowerShell Gallery via PowerShellGet
Install-Module -Name Az.PolicyInsights

# Import the downloaded module
Import-Module Az.PolicyInsights

# Login with Connect-AzAccount if not using Cloud Shell
Connect-AzAccount

Modülde aşağıdaki cmdlet'ler bulunur:

  • Get-AzPolicyStateSummary
  • Get-AzPolicyState
  • Get-AzPolicyEvent
  • Get-AzPolicyRemediation
  • Remove-AzPolicyRemediation
  • Start-AzPolicyRemediation
  • Stop-AzPolicyRemediation

Örnek: En fazla sayıda uyumlu olmayan kaynağa sahip en üstteki atanan ilkenin durum özetini alma.

PS> Get-AzPolicyStateSummary -Top 1

NonCompliantResources : 15
NonCompliantPolicies  : 1
PolicyAssignments     : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
                        oft.authorization/policyassignments/37ce239ae4304622914f0c77}

Örnek: En son değerlendirilen kaynağın durum kaydını alma (varsayılan değer, azalan sırada zaman damgasıdır).

PS> Get-AzPolicyState -Top 1

Timestamp                  : 5/22/2018 3:47:34 PM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/networkInterfaces/linux316
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState            : NonCompliant
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/networkInterfaces
ResourceLocation           : westus2
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd

Örnek: Tüm uyumlu olmayan sanal ağ kaynaklarının ayrıntılarını alma.

PS> Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"

Timestamp                  : 5/22/2018 4:02:20 PM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState            : NonCompliant
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/virtualNetworks
ResourceLocation           : westus2
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd

Örnek: Belirli bir tarihten sonra gerçekleşen uyumlu olmayan sanal ağ kaynaklarıyla ilgili olayları alma, CSV nesnesine dönüştürme ve dosyaya aktarma.

$policyEvents = Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2020-09-19'
$policyEvents | ConvertTo-Csv | Out-File 'C:\temp\policyEvents.csv'

nesnesinin $policyEvents çıkışı aşağıdaki çıktıya benzer:

Timestamp                  : 9/19/2020 5:18:53 AM
ResourceId                 : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId         : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
                             crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId         : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState            : NonCompliant
SubscriptionId             : {subscriptionId}
ResourceType               : /Microsoft.Network/virtualNetworks
ResourceLocation           : eastus
ResourceGroup              : RG-Tags
ResourceTags               : tbd
PolicyAssignmentName       : 37ce239ae4304622914f0c77
PolicyAssignmentOwner      : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope      : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName       : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction     : deny
PolicyDefinitionCategory   : tbd
TenantId                   : {tenantId}
PrincipalOid               : {principalOid}

PrincipalOid alanı, Azure PowerShell cmdlet'ine Get-AzADUsersahip belirli bir kullanıcıyı almak için kullanılabilir. {principalOid} öğesini önceki örnekten aldığınız yanıtla değiştirin.

PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker

Azure İzleyici günlükleri

Aboneliğinize bağlı Etkinlik Log Analytics çözümündenAzureActivity bir Log Analytics çalışma alanınız varsa, basit Kusto sorgularını ve AzureActivity tablosunu kullanarak yeni ve güncelleştirilmiş kaynakların değerlendirilmesinden gelen uyumsuzluk sonuçlarını da görüntüleyebilirsiniz. Azure İzleyici günlüklerindeki ayrıntılarla, uyarılar uyumsuzluk watch için yapılandırılabilir.

AzureActivity tablosundaki Azure İlkesi eylemleri gösteren Azure İzleyici günlüklerinin ekran görüntüsü.

Azure Kaynak Grafı

Uyumluluk kayıtları Azure Kaynak Grafı(ARG) içinde depolanır. Veriler ARG sorgularından dışarı aktarılarak ilgilenilen kapsamlara ve ilkelere göre özelleştirilmiş panolar oluşturulabilir. Uyumluluk verilerini ARG aracılığıyla dışarı aktarmak için örnek sorgularımızı gözden geçirin.

Sonraki adımlar