Kaynak değişikliklerini alma

Kaynaklar günlük kullanım, yeniden yapılandırma ve hatta yeniden uygulama aracılığıyla değiştirilebilir. Değişiklik bireyden veya otomatik bir işlemden gelebilir. Çoğu değişiklik tasarıma göredir, ancak bazen öyle değil. Son 14 günlük değişiklik geçmişiyle Azure Resource Graph şunları sağlar:

  • Bir Azure Resource Manager özelliğinde değişikliklerin ne zaman algılandığında bulma
  • Her kaynak değişikliği için özellik değişikliği ayrıntılarına bakın
  • Algılanan değişiklik öncesinde ve sonrasında kaynağın tam karşılaştırması

Değişiklik algılama ve ayrıntılar aşağıdaki örnek senaryolar için değerlidir:

  • İlgili olabilecek değişiklikleri anlamak için olay yönetimi sırasında. Belirli bir zaman penceresi sırasında değişiklik olaylarını sorgular ve değişiklik ayrıntılarını değerlendirir.
  • CMDB olarak bilinen Bir Yapılandırma Yönetimi Veritabanını güncel tutma. Tüm kaynakları ve bunların tam özellik kümelerini zamanlanmış bir sıklıkta yenilemek yerine yalnızca değişenleri elde etmek.
  • Bir kaynağın uyumluluk durumu değiştiriken başka hangi özelliklerin değiştirilmiş olduğunu anlama. Bu ek özelliklerin değerlendirilmesi, bir Azure İlkesi tanımı aracılığıyla yönetimi gerektirilen diğer özellikler hakkında içgörüler sağlar.

Bu makalede Bu bilgilerin Resource Graph SDK'sı aracılığıyla nasıl toplanacakları açıklanmıştır. Bu bilgileri Azure portal için bkz. Azure İlkesi geçmişi veya Azure Etkinlik Günlüğü Değişiklik geçmişi. Altyapı katmanından uygulama dağıtımına kadar olan tüm uygulamalarda yapılan değişiklikler hakkında ayrıntılı bilgi için bkz. Uygulama katmanında Uygulama Değişiklikleri Analizi (önizleme) Azure İzleyici.

Not

Kaynak Grubu'Graph ayrıntıları, Resource Manager için kullanılır. Sanal makine içindeki değişiklikleri izlemek için bkz. Azure Otomasyonu'nin Değişiklik izleme veya vm'Azure İlkesi Konuk Yapılandırması.

Önemli

Azure Kaynak Yönetimi'nin Graph Genel Önizleme'dedir.

Algılanan değişiklik olaylarını bulma ve değişiklik ayrıntılarını görüntüleme

Bir kaynakta nelerin değiştiğini görmenin ilk adımı, bir süre içinde bu kaynakla ilgili değişiklik olaylarını bulmaktır. Her değişiklik olayı, kaynakta yapılan değişikliğin ayrıntılarını da içerir. Bu adım resourceChanges REST uç noktası aracılığıyla yapılır.

resourceChanges uç noktası, istek gövdesinde aşağıdaki parametreleri kabul eder:

  • resourceId [ gerekli: ] Üzerinde değişiklik yapılan Azure kaynağı.
  • aralık [ gerekli: ] Zulu Saat Dilimini (Z) kullanarak bir değişiklik olayı için ne zaman kontrol etmek üzere başlangıç ve bitiş tarihlerine sahip bir özellik.
  • fetchPropertyChanges (isteğe bağlı): Yanıt nesnesi özellik değişikliklerine sahipse bunu ayar alan Boole özelliği.

Örnek istek gövdesi:

{
    "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/MyResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
    "interval": {
        "start": "2019-09-28T00:00:00.000Z",
        "end": "2019-09-29T00:00:00.000Z"
    },
    "fetchPropertyChanges": true
}

Yukarıdaki istek gövdesiyle, resourceChanges REST API URI'sı şu şekildedir:

POST https://management.azure.com/providers/Microsoft.ResourceGraph/resourceChanges?api-version=2018-09-01-preview

Yanıt şu örnekteki gibi görünüyor:

{
    "changes": [
        {
            "changeId": "{\"beforeId\":\"3262e382-9f73-4866-a2e9-9d9dbee6a796\",\"beforeTime\":\"2019-09-28T00:45:35.012Z\",\"afterId\":\"6178968e-981e-4dac-ac37-340ee73eb577\",\"afterTime\":\"2019-09-28T00:52:53.371Z\"}",
            "beforeSnapshot": {
                "snapshotId": "3262e382-9f73-4866-a2e9-9d9dbee6a796",
                "timestamp": "2019-09-28T00:45:35.012Z"
            },
            "afterSnapshot": {
                "snapshotId": "6178968e-981e-4dac-ac37-340ee73eb577",
                "timestamp": "2019-09-28T00:52:53.371Z"
            },
            "changeType": "Create"
        },
        {
            "changeId": "{\"beforeId\":\"a00f5dac-86a1-4d86-a1c5-a9f7c8147b7c\",\"beforeTime\":\"2019-09-28T00:43:38.366Z\",\"afterId\":\"3262e382-9f73-4866-a2e9-9d9dbee6a796\",\"afterTime\":\"2019-09-28T00:45:35.012Z\"}",
            "beforeSnapshot": {
                "snapshotId": "a00f5dac-86a1-4d86-a1c5-a9f7c8147b7c",
                "timestamp": "2019-09-28T00:43:38.366Z"
            },
            "afterSnapshot": {
                "snapshotId": "3262e382-9f73-4866-a2e9-9d9dbee6a796",
                "timestamp": "2019-09-28T00:45:35.012Z"
            },
            "changeType": "Delete"
        },
        {
            "changeId": "{\"beforeId\":\"b37a90d1-7ebf-41cd-8766-eb95e7ee4f1c\",\"beforeTime\":\"2019-09-28T00:43:15.518Z\",\"afterId\":\"a00f5dac-86a1-4d86-a1c5-a9f7c8147b7c\",\"afterTime\":\"2019-09-28T00:43:38.366Z\"}",
            "beforeSnapshot": {
                "snapshotId": "b37a90d1-7ebf-41cd-8766-eb95e7ee4f1c",
                "timestamp": "2019-09-28T00:43:15.518Z"
            },
            "afterSnapshot": {
                "snapshotId": "a00f5dac-86a1-4d86-a1c5-a9f7c8147b7c",
                "timestamp": "2019-09-28T00:43:38.366Z"
            },
            "propertyChanges": [
                {
                    "propertyName": "tags.org",
                    "afterValue": "compute",
                    "changeCategory": "User",
                    "changeType": "Insert"
                },
                {
                    "propertyName": "tags.team",
                    "afterValue": "ARG",
                    "changeCategory": "User",
                    "changeType": "Insert"
                }
            ],
            "changeType": "Update"
        },
        {
            "changeId": "{\"beforeId\":\"19d12ab1-6ac6-4cd7-a2fe-d453a8e5b268\",\"beforeTime\":\"2019-09-28T00:42:46.839Z\",\"afterId\":\"b37a90d1-7ebf-41cd-8766-eb95e7ee4f1c\",\"afterTime\":\"2019-09-28T00:43:15.518Z\"}",
            "beforeSnapshot": {
                "snapshotId": "19d12ab1-6ac6-4cd7-a2fe-d453a8e5b268",
                "timestamp": "2019-09-28T00:42:46.839Z"
            },
            "afterSnapshot": {
                "snapshotId": "b37a90d1-7ebf-41cd-8766-eb95e7ee4f1c",
                "timestamp": "2019-09-28T00:43:15.518Z"
            },
            "propertyChanges": [{
                "propertyName": "tags.cgtest",
                "afterValue": "hello",
                "changeCategory": "User",
                "changeType": "Insert"
            }],
            "changeType": "Update"
        }
    ]
}

resourceId için algılanan her değişiklik olayı aşağıdaki özelliklere sahiptir:

  • changeId - Bu değer bu kaynak için benzersizdir. changeId dizesi bazen başka özellikler içerse de, yalnızca benzersiz olması garantidir.

  • beforeSnapshot - Bir değişiklik algılanmadan önce alınan kaynak anlık görüntüsünün snapshotId ve zaman damgasını içerir.

  • afterSnapshot - Bir değişiklik algılandığında alınan kaynak anlık görüntüsünün snapshotId ve zaman damgasını içerir.

  • changeType - beforeSnapshot ile afterSnapshot arasındaki tüm değişiklik kaydı için algılanan değişiklik türünü açıklar. Değerler: Oluşturma, Güncelleştirme ve Silme. propertyChanges özellik dizisi yalnızca changeType Update olduğunda dahil edilir.

    Önemli

    Oluşturma yalnızca daha önce var olan ve son 14 gün içinde silinmiş olan kaynaklarda kullanılabilir.

  • propertyChanges - Bu özellik dizisi, beforeSnapshot ile afterSnapshot arasında güncelleştirilen tüm kaynak özelliklerinin ayrıntılarını içerir:

    • propertyName - Değiştirilmiş kaynak özelliğinin adı.
    • changeCategory - Değişikliği neyin yaptığını açıklar. Değerler: Sistem ve Kullanıcı.
    • changeType - Tek tek kaynak özelliği için algılanan değişikliğin türünü açıklar. Değerler: Ekle, Güncelleştir, Kaldır.
    • beforeValue - beforeSnapshot öğesinde kaynak özelliğinin değeri. changeType Ekle olduğunda görüntülenmez.
    • afterValue - afterSnapshot öğesinde kaynak özelliğinin değeri. changeType Kaldır olduğunda görüntülenmez.

Kaynak değişikliklerini karşılaştırma

resourceChanges uç noktasının changeId'sinde resourceChangeDetails REST uç noktası, değiştirilen kaynağın önce ve sonra anlık görüntülerini almak için kullanılır.

resourceChangeDetails uç noktası, istek gövdesinde iki parametre gerektirir:

  • resourceId: Değişiklikleri karşılaştıran Azure kaynağı.
  • changeId: resourceChanges kaynağından toplanan resourceId için benzersiz değişiklik olayı.

Örnek istek gövdesi:

{
    "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/MyResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
    "changeId": "{\"beforeId\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"beforeTime\":'2019-05-09T00:00:00.000Z\",\"afterId\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"afterTime\":'2019-05-10T00:00:00.000Z\"}"
}

Yukarıdaki istek gövdesinde resourceChangeDetails için REST API URI'sı şu şekildedir:

POST https://management.azure.com/providers/Microsoft.ResourceGraph/resourceChangeDetails?api-version=2018-09-01-preview

Yanıt şu örnekteki gibi görünüyor:

{
    "changeId": "{\"beforeId\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"beforeTime\":'2019-05-09T00:00:00.000Z\",\"afterId\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"beforeTime\":'2019-05-10T00:00:00.000Z\"}",
    "beforeSnapshot": {
        "timestamp": "2019-03-29T01:32:05.993Z",
        "content": {
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "kind": "Storage",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/MyResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
            "name": "mystorageaccount",
            "type": "Microsoft.Storage/storageAccounts",
            "location": "westus",
            "tags": {},
            "properties": {
                "networkAcls": {
                    "bypass": "AzureServices",
                    "virtualNetworkRules": [],
                    "ipRules": [],
                    "defaultAction": "Allow"
                },
                "supportsHttpsTrafficOnly": false,
                "encryption": {
                    "services": {
                        "file": {
                            "enabled": true,
                            "lastEnabledTime": "2018-07-27T18:37:21.8333895Z"
                        },
                        "blob": {
                            "enabled": true,
                            "lastEnabledTime": "2018-07-27T18:37:21.8333895Z"
                        }
                    },
                    "keySource": "Microsoft.Storage"
                },
                "provisioningState": "Succeeded",
                "creationTime": "2018-07-27T18:37:21.7708872Z",
                "primaryEndpoints": {
                    "blob": "https://mystorageaccount.blob.core.windows.net/",
                    "queue": "https://mystorageaccount.queue.core.windows.net/",
                    "table": "https://mystorageaccount.table.core.windows.net/",
                    "file": "https://mystorageaccount.file.core.windows.net/"
                },
                "primaryLocation": "westus",
                "statusOfPrimary": "available"
            }
        }
    },
    "afterSnapshot": {
        "timestamp": "2019-03-29T01:54:24.42Z",
        "content": {
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "kind": "Storage",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/MyResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
            "name": "mystorageaccount",
            "type": "Microsoft.Storage/storageAccounts",
            "location": "westus",
            "tags": {},
            "properties": {
                "networkAcls": {
                    "bypass": "AzureServices",
                    "virtualNetworkRules": [],
                    "ipRules": [],
                    "defaultAction": "Allow"
                },
                "supportsHttpsTrafficOnly": true,
                "encryption": {
                    "services": {
                        "file": {
                            "enabled": true,
                            "lastEnabledTime": "2018-07-27T18:37:21.8333895Z"
                        },
                        "blob": {
                            "enabled": true,
                            "lastEnabledTime": "2018-07-27T18:37:21.8333895Z"
                        }
                    },
                    "keySource": "Microsoft.Storage"
                },
                "provisioningState": "Succeeded",
                "creationTime": "2018-07-27T18:37:21.7708872Z",
                "primaryEndpoints": {
                    "blob": "https://mystorageaccount.blob.core.windows.net/",
                    "queue": "https://mystorageaccount.queue.core.windows.net/",
                    "table": "https://mystorageaccount.table.core.windows.net/",
                    "file": "https://mystorageaccount.file.core.windows.net/"
                },
                "primaryLocation": "westus",
                "statusOfPrimary": "available"
            }
        }
    }
}

beforeSnapshot ve afterSnapshot her biri anlık görüntü alma zamanlarını ve o anda özellikleri sağlar. Bu değişiklik, bu anlık görüntüler arasında bir noktada gerçekleşti. Önceki örnekte, değiştirilen özelliğin supportsHttpsTrafficOnly olduğunu görebiliriz.

Sonuçları karşılaştırmak için resourceChanges'te changes özelliğini kullanın veya farkı belirlemek için resourceChangeDetails'te her anlık görüntüye ilişkin içerik bölümünü değerlendirin. Anlık görüntüleri karşılaştırıyorsanız, zaman damgası beklenene rağmen her zaman bir fark olarak gösterir.

Sonraki adımlar