Aracılığıyla paylaş


Azure İlkesi tanımlarının etkisini değiştirir

Bu modify etki, oluşturma veya güncelleştirme sırasında bir abonelikte veya kaynakta özellik veya etiket eklemek, güncelleştirmek veya kaldırmak için kullanılır. Mevcut uyumlu olmayan kaynaklar da bir düzeltme göreviyle düzeltilebilir. Efekti "Değiştir" olarak ayarlanmış ilke atamaları, düzeltme yapmak için bir yönetilen kimlik gerektirir. Etkiyi kullanan modify yaygın bir örnek, 'costCenter' gibi kaynaklardaki etiketleri güncelleştirmektir.

Kaynak özellikleri için değişiklik davranışında bazı nüanslar vardır. Değişiklik atlandığında senaryolar hakkında daha fazla bilgi edinin.

Tek modify bir kuralın herhangi bir sayıda işlemi olabilir. Desteklenen işlemler şunlardır:

  • Kaynak etiketlerini ekleyin, değiştirin veya kaldırın . Yalnızca etiketler kaldırılabilir. Etiketler için, hedef kaynak bir kaynak grubu olmadığı sürece, Değiştir ilkesinin moduindexed olarak ayarlanmalıdır.
  • Yönetilen kimlik türünün () değerini ekleyin veya identity.type - sanal makineler ve Sanal Makine Ölçek Kümeleri için. yalnızca sanal makineler veya Sanal Makine Ölçek Kümeleri için öğesini değiştirebilirsinizidentity.type.
  • Belirli diğer adların değerlerini ekleyin veya değiştirin .
    • ile Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }kullanılabilecek diğer adların listesini almak için Azure PowerShell 4.6.0 veya üzeri sürümlerde kullanınmodify.

Important

Etiketleri yönetiyorsanız, daha fazla işlem türü ve mevcut kaynakları düzeltme olanağı sağladığı için Ekle yerine Değiştir'i kullanmanız önerilir. Ancak, yönetilen bir kimlik oluşturamıyorsanız veya Değiştir henüz kaynak özelliği için takma adını desteklemiyorsa Eklemek önerilir.

Değerlendirmeyi değiştirme

Değişiklik, bir kaynağın oluşturulması veya güncelleştirilmesi sırasında bir Kaynak Sağlayıcısı tarafından istek işlenmeden önce değerlendirilir. modify işlemleri, ilke kuralının if koşulu karşılandığında istek içeriğine uygulanır. Her modify işlem, ne zaman uygulanacağını belirleyen bir koşul belirtebilir.

Takma ad belirtildiğinde, işlemin istek içeriğini kaynak sağlayıcısının reddetmesine neden olmadan değiştirmediğinden emin olmak için daha fazla denetim yapılır.

  • Diğer adın eşleneceği özellik, isteğin API sürümünde Değiştirilebilir olarak işaretlenir.
  • İşlemdeki modify belirteç türü, isteğin API sürümündeki özelliği için beklenen belirteç türüyle eşleşir.

Bu denetimlerden biri başarısız olursa, ilke değerlendirmesi belirtilen conflictEffectöğesine geri döner.

Important

Tanımlar içinde diğer adlar kullanıldığında, eşlenen özelliğin 'Değiştirilebilir' olmadığı API sürümlerinde isteklerin başarısız olmasını önlemek amacıyla denetimçekişme etkisinin kullanılması önerilir. Aynı takma ad, API sürümleri arasında farklı davranırsa, her API sürümü için kullanılan modify işlemini tanımlamak için koşullu değiştirme işlemleri kullanılabilir.

Değişiklik atlandı

Değerlendirme sırasında değiştirme işlemlerinin atlandığı bazı durumlar vardır:

  • Mevcut kaynaklar: Efekti kullanan modify bir ilke tanımı bir değerlendirme döngüsünün parçası olarak çalıştırıldığında, zaten var olan kaynaklarda değişiklik yapmaz. Bunun yerine, koşulu karşılayan if tüm kaynakları uyumlu değil olarak işaretler, böylece bir düzeltme görevi aracılığıyla düzeltilebilirler.
  • Uygulanamaz: Dizideki operations bir işlemin koşulu false olarak değerlendirildiğinde, bu işlem atlanır.
  • Özellik değiştirilemez: Bir işlem için belirtilen diğer ad, isteğin API sürümünde değiştirilemiyorsa, değerlendirme çakışma etkisini kullanır. Çakışma etkisi reddet olarak ayarlanırsa istek engellenir. Çakışma etkisi audit şeklinde ayarlanmışsa, isteğe izin verilir, ancak modify işlem atlanır.
  • Özellik yok: İsteğin kaynak yükünde bir özellik yoksa, değişiklik atlanabilir. Bazı durumlarda, değiştirilebilir özellikler diğer özelliklerin içinde yer alabilir ve Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled gibi bir diğer adı olabilir. Bu örnekte "ebeveyn" özelliği deleteRetentionPolicy istekte yoksa, bu özelliğin kasıtlı olarak atlandığı varsayıldığından değişiklik yapılmaz. Pratik bir örnek için "Özellik örneği yok" bölümüne gidin.
  • VM veya VMSS dışı kimlik işlemi: Değiştirme işlemi, sanal makine veya sanal makine ölçek kümesi dışındaki bir kaynakta alanı eklemeye veya değiştirmeye identity.type çalıştığında, ilke değerlendirmesi tamamen atlanır ve böylece değişiklik yapılmaz. Bu durumda, kaynak politika için uygulanabilir olarak kabul edilmez.

Özelliğin mevcut olmadığı örnek

Kaynak özelliklerinin değiştirilmesi API isteğine ve güncelleştirilmiş kaynak yüküne bağlıdır. Yük, Azure portalı gibi kullanılan istemciye ve kaynak sağlayıcısı gibi diğer faktörlere bağlı olabilir.

Bir sanal makinede (VM) etiketleri değiştiren bir ilke uyguladığınızı düşünün. Yeniden boyutlandırma veya disk değişiklikleri gibi VM her güncelleştirildiğinde, vm yükünün içeriği ne olursa olsun etiketler buna göre güncelleştirilir. Bunun nedeni etiketlerin VM özelliklerinden bağımsız olmasıdır.

Ancak, bir VM'de özellikleri değiştiren bir ilke uygularsanız, değişiklik kaynak yüküne bağlıdır. Güncelleştirme yüküne dahil olmayan özellikleri değiştirmeye çalışırsanız, değişiklik gerçekleşmez. Örneğin, bir VM'nin assessmentMode özelliği (diğer ad Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode) güncellenirken bu durum oluşabilir. Özellik "iç içe geçmiş" olduğundan, üst özellikleri isteğe dahil edilmezse, bu eksikliğin kasıtlı olduğu varsayılır ve değişiklik atlanır. Değişikliklerin gerçekleşmesi için kaynak yükü bu bağlamı içermelidir.

Özellikleri değiştirme

details efektinin modify özelliği, düzeltme için gereken izinleri tanımlayan ve operations etiket değerlerini eklemek, güncelleştirmek veya kaldırmak için kullanılan tüm alt özelliklere sahiptir.

  • roleDefinitionIds (gerekli)
  • conflictEffect (isteğe bağlı)
    • Birden fazla ilke tanımı aynı özelliği değiştirdiğinde veya belirli bir takma ad üzerinde modify işlemi çalışmadığında, hangi ilke tanımının "kazandığını" belirler.
      • Yeni veya güncelleştirilmiş kaynaklar için reddetme içeren ilke tanımı önceliklidir. Denetim ilke tanımları tüm operations öğeleri atlar. Birden fazla ilke tanımı reddetme etkisine sahipse, istek çakışma olarak reddedilir. Tüm ilke tanımlarında denetim varsa, çakışan ilke tanımlarından hiçbiri operations işlenmez.
      • Mevcut kaynaklar için, birden fazla ilke tanımının etki reddetmesi varsa, uyumluluk durumu Çakışmadır. Etki reddeden bir veya daha az ilke tanımı varsa, her atama Uyumlu değil uyumluluk durumunu döndürür.
    • Kullanılabilir değerler: denetim, reddetme, devre dışı.
    • Varsayılan değer reddet'tir.
  • operations (gerekli)
    • Eşleşen kaynaklarda tamamlanacak tüm etiket işlemlerinin dizisi.
    • Properties:
      • operation (gerekli)
        • Eşleşen bir kaynakta hangi eylemin gerçekleştireceklerini tanımlar. Seçenekler şunlardır: addOrReplace, Addve Remove.
        • Addekleme efektine benzer şekilde davranır.
        • Remove yalnızca kaynak etiketleri için desteklenir.
      • field (gerekli)
        • Eklenecek, değiştirilecek veya kaldırılacak etiket. Etiket adları, diğer alanlar için aynı adlandırma kuralına uymalıdır.
      • value (isteğe bağlı)
        • Etiketin ayarlanacağı değer.
        • addOrReplace veya operation ise bu özellik gereklidir.
      • condition (isteğe bağlı)
        • true veya false olarak değerlendirilen İlke işlevlerine sahip bir Azure İlkesi dil ifadesi içeren dize.
        • Aşağıdaki Politika işlevlerini desteklemez: field(), resourceGroup(), subscription().

İşlemleri değiştirme

operations özellik dizisi, tek bir ilke tanımından farklı şekillerde çeşitli etiketlerin değiştirilmesini mümkün kılar. Her işlem , operationve field özelliklerinden oluşurvalue. operation, düzeltme görevinin etiketlere ne yaptığını belirler, field hangi etiketin değiştirildiğini belirler ve value bu etiket için yeni ayarı tanımlar. Aşağıdaki örnek aşağıdaki etiket değişikliklerini yapar:

  • environment Farklı bir değerle zaten mevcut olsa bile etiketi "Test" olarak ayarlar.
  • etiketini TempResourcekaldırır.
  • Etiketi, Dept ilke ataması üzerinde yapılandırılan DeptName ilke parametresine ayarlar.
"details": {
  ...
  "operations": [
    {
      "operation": "addOrReplace",
      "field": "tags['environment']",
      "value": "Test"
    },
    {
      "operation": "Remove",
      "field": "tags['TempResource']",
    },
    {
      "operation": "addOrReplace",
      "field": "tags['Dept']",
      "value": "[parameters('DeptName')]"
    }
  ]
}

operation özelliği aşağıdaki seçeneklere sahiptir:

Operation Description
addOrReplace Özellik veya etiket farklı bir değerle zaten mevcut olsa bile tanımlı özelliği veya etiketi ve değeri kaynağa ekler.
add Tanımlı özelliği veya etiketi ve değeri kaynağa ekler.
remove Tanımlı etiketi kaynaktan kaldırır. Yalnızca etiketler için desteklenir.

Örnekleri değiştirme

Örnek 1: Etiketi ekleyin environment ve mevcut environment etiketleri "Test" ile değiştirin:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
    ],
    "operations": [
      {
        "operation": "addOrReplace",
        "field": "tags['environment']",
        "value": "Test"
      }
    ]
  }
}

Örnek 2: Etiketi kaldırın env ve etiketi ekleyin environment veya mevcut environment etiketleri parametreli bir değerle değiştirin:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
    ],
    "conflictEffect": "deny",
    "operations": [
      {
        "operation": "Remove",
        "field": "tags['env']"
      },
      {
        "operation": "addOrReplace",
        "field": "tags['environment']",
        "value": "[parameters('tagValue')]"
      }
    ]
  }
}

Örnek 3: Depolama hesabının blob genel erişimine izin vermediğinden emin olun, modify işlem yalnızca API sürümü daha büyük veya değerine eşit olan istekler 2019-04-01değerlendirilirken uygulanır:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
    ],
    "conflictEffect": "audit",
    "operations": [
      {
        "condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
        "operation": "addOrReplace",
        "field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
        "value": false
      }
    ]
  }
}

Sonraki Adımlar