Azure İlkesi etkilerini anlama

Azure İlkesi'ndeki her ilke tanımı tek bir etkiye sahiptir. Bu etki, ilke kuralı eşleşme için değerlendirildiğinde ne olacağını belirler. Yeni bir kaynak, güncelleştirilmiş kaynak veya mevcut bir kaynak için olan etkiler farklı davranır.

Bu etkiler şu anda bir ilke tanımında desteklenmektedir:

Değişim efektleri

Bazen belirli bir ilke tanımı için birden çok efekt geçerli olabilir. Parametreler genellikle tek bir tanımın daha çok yönlü olabilmesi için izin verilen efekt değerlerini belirtmek için kullanılır. Ancak, tüm etkilerin birbirinin yerine kullanılamadığını unutmayın. İlke kuralındaki kaynak özellikleri ve mantığı, ilke tanımında belirli bir efektin geçerli kabul edilip edilmeyeceğini belirleyebilir. Örneğin, AuditIfNotExists etkisine sahip ilke tanımları, ilke kuralında Denetim etkin ilkeler için gerekli olmayan ek ayrıntılar gerektirir. Etkiler de farklı davranır. Denetim ilkeleri bir kaynağın uyumluluğunu kendi özelliklerine göre değerlendirirken AuditIfNotExists ilkeleri, bir alt veya uzantı kaynağının özelliklerine göre kaynağın uyumluluğunu değerlendirir.

Aşağıda, değiştirilebilir efektlerle ilgili bazı genel yönergeler verilmiştir:

  • Denetim, Reddetme ve Değiştir veya Ekle genellikle birbirinin yerine kullanılabilir.
  • AuditIfNotExists ve DeployIfNotExists genellikle birbirinin yerine kullanılabilir.
  • El ile değiştirilemez.
  • Disabled , herhangi bir etkiyle değiştirilebilir.

Değerlendirme sırası

Kaynak oluşturma veya güncelleştirme istekleri önce Azure İlkesi tarafından değerlendirilir. Azure İlkesi kaynak için geçerli olan tüm atamaların listesini oluşturur ve ardından kaynağı her bir tanıma göre değerlendirir. Resource Manager modu için, Azure İlkesi isteği uygun Kaynak Sağlayıcısına teslim etmeden önce çeşitli etkileri işler. Bu sipariş, bir kaynak Azure İlkesi tasarlanmış idare denetimlerini karşılamadığında Kaynak Sağlayıcısı tarafından gereksiz işleme yapılmasını önler. Kaynak Sağlayıcısı moduyla, Kaynak Sağlayıcısı değerlendirmeyi ve sonucu yönetir ve sonuçları Azure İlkesi raporlar.

  • İlke kuralının değerlendirilip değerlendirilmeyeceğini saptamak için önce Disabled denetlenir.
  • Ardından Append ve Modify değerlendirilir. Bunlardan herhangi biri isteği değiştirebileceğinden, yapılan bir değişiklik denetimi önleyebilir veya etkinin tetiklenmesini engelleyebilir. Bu etkiler yalnızca Resource Manager modunda kullanılabilir.
  • Ardından Deny değerlendirilir. Reddetmenin denetimden önce değerlendirilmesi sayesinde istenmeyen bir kaynağın günlüğe iki kez kaydedilmesi önlenir.
  • En son Audit değerlendirilir.

Kaynak Sağlayıcısı Resource Manager modu isteğinde bir başarı kodu döndürdüğünde AuditIfNotExists ve DeployIfNotExists ek uyumluluk günlüğü veya eylemi gerekip gerekmediğini belirlemek için değerlendirmede bulunur.

Ayrıca, yalnızca ilgili alanları değiştiren tags istekler, PATCH ilke değerlendirmesini ilgili alanları inceleyen tags koşullar içeren ilkelerle kısıtlar.

Ekle

Ekleme, oluşturma veya güncelleştirme sırasında istenen kaynağa ek alanlar eklemek için kullanılır. Depolama kaynağı için izin verilen IP'lerin belirtilmesi yaygın bir örnektir.

Önemli

Ekleme, etiket olmayan özelliklerle kullanılmak üzere tasarlanmıştır. Ekleme, oluşturma veya güncelleştirme isteği sırasında kaynağa etiket ekleyebilir ancak bunun yerine etiketler için Değiştir efektinin kullanılması önerilir.

Ekleme değerlendirmesi

Ekleme, bir kaynağın oluşturulması veya güncelleştirilmesi sırasında istek bir Kaynak Sağlayıcısı tarafından işlenmeden önce değerlendirilir. İlke kuralının if koşulu karşılandığında Ekleme, kaynağa alanlar ekler. Ekleme efekti özgün istekteki bir değeri farklı bir değerle geçersiz kılarsa, reddetme efekti olarak davranır ve isteği reddeder. Varolan bir diziye yeni bir değer eklemek için diğer adın [*] sürümünü kullanın.

Ekleme efektini kullanan bir ilke tanımı değerlendirme döngüsünün bir parçası olarak çalıştırıldığında, zaten var olan kaynaklarda değişiklik yapmaz. Bunun yerine, if koşulunu karşılayan tüm kaynakları uyumsuz olarak işaretler.

Ekleme özellikleri

Ekleme efekti yalnızca gerekli olan bir details dizisine sahiptir. Ayrıntılar bir dizi olduğundan, tek bir alan/değer çifti veya katları alabilir. Kabul edilebilir alanlar listesi için tanım yapısına bakın.

Ekleme örnekleri

Örnek 1: Depolama hesabında IP kuralları ayarlamak için dizi değerine sahip[*]olmayan bir diğer ad kullanan tek alan/değer çifti. Non-[*] diğer adı bir dizi olduğunda, efekt değeri dizinin tamamı olarak ekler. Dizi zaten varsa, çakışmadan bir reddetme olayı gerçekleşir.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
        "value": [{
            "action": "Allow",
            "value": "134.5.0.0/21"
        }]
    }]
}

Örnek 2: Depolama hesabında IP kuralları ayarlamak için dizi değeriyle[*]diğer adı kullanan tek alan/değer çifti. [*] diğer adını kullanarak, efekt değeri önceden var olabilecek bir diziye ekler. Dizi henüz yoksa oluşturulur.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
        "value": {
            "value": "40.40.40.40",
            "action": "Allow"
        }
    }]
}

Denetim

Denetim, uyumlu olmayan bir kaynak değerlendirilirken etkinlik günlüğünde bir uyarı olayı oluşturmak için kullanılır, ancak isteği durdurmaz.

Denetim değerlendirmesi

Denetim, kaynağın oluşturulması veya güncelleştirildiği sırada Azure İlkesi tarafından denetlenen son etkidir. Resource Manager modu için Azure İlkesi kaynağı Kaynak Sağlayıcısı'na gönderir. Bir kaynak için oluşturma veya güncelleştirme isteğini değerlendirirken Azure İlkesi etkinlik günlüğüne bir Microsoft.Authorization/policies/audit/action işlem ekler ve kaynağı uyumsuz olarak işaretler. Standart uyumluluk değerlendirme döngüsü sırasında yalnızca kaynakta uyumluluk durumu güncelleştirilir.

Denetim özellikleri

bir Resource Manager modu için, denetim etkisi ilke tanımının o zaman koşulunda kullanılacak ek özelliklere sahip değildir.

bir Kaynak Sağlayıcısı modu Microsoft.Kubernetes.Dataiçin, denetim etkisi aşağıdaki ek ayrıntı alt özelliklerine sahiptir. kullanım dışı bırakıldığından templateInfo , yeni veya güncelleştirilmiş ilke tanımları constraintTemplate için kullanımı gereklidir.

  • templateInfo (gerekli)
    • ile constraintTemplatekullanılamaz.
    • sourceType (gerekli)
      • Kısıtlama şablonunun kaynak türünü tanımlar. İzin verilen değerler: PublicURL veya Base64Encoded.

      • PublicURL ise, kısıtlama şablonunun konumunu sağlamak için özelliğiyle url eşleştirilir. Konum herkese açık olmalıdır.

        Uyarı

        SAS URI'leri, URL belirteçleri veya gizli dizileri düz metin olarak kullanıma sunan başka bir şey kullanmayın.

      • Base64Encoded ise, base 64 kodlanmış kısıtlama şablonunu sağlamak için özelliğiyle content eşleştirilir. Var olan bir Açık İlke Aracısı (OPA) Gatekeeper v3 kısıtlama şablonundan özel bir tanım oluşturmak için bkz. Kısıtlama şablonundan ilke tanımı oluşturma.

  • constraint (kullanım dışı)
    • ile templateInfokullanılamaz.
    • Kısıtlama şablonunun CRD uygulaması. olarak{{ .Values.<valuename> }}değerler aracılığıyla geçirilen parametreleri kullanır. Aşağıdaki 2. örnekte bu değerler ve {{ .Values.allowedContainerImagesRegex }}değerleridir{{ .Values.excludedNamespaces }}.
  • ad alanları (isteğe bağlı)
    • İlke değerlendirmesini sınırlamak için kubernetes ad alanlarıdizisi.
    • Boş veya eksik bir değer, ilke değerlendirmesinin excludedNamespaces içinde tanımlanmamış tüm ad alanlarını içermesine neden olur.
  • excludedNamespaces (gerekli)
  • labelSelector (gerekli)
    • Sağlanan etiketler ve seçicilerle eşleşen ilke değerlendirmesi için hangi Kubernetes kaynaklarının dahil edileceğini belirtmek için matchLabels (nesne) ve matchExpression (dizi) özelliklerini içeren bir nesne.
    • Boş veya eksik bir değer, ilke değerlendirmesinin excludedNamespaces içinde tanımlanan ad alanları dışında tüm etiketleri ve seçicileri içermesine neden olur.
  • apiGroups ( templateInfo kullanılırken gereklidir)
    • Eşleşecek API gruplarını içeren bir dizi. Boş bir dizi ([""]), çekirdek API grubudur.
    • apiGroups için tanımlamaya ["*"] izin verilmiyor.
  • kinds ( templateInfo kullanılırken gereklidir)
    • Değerlendirmeyi sınırlamak için Kubernetes nesnesinin türünü içeren bir dizi.
    • Tür tanımlamaya ["*"] izin verilmiyor.
  • değerler (isteğe bağlı)
    • Kısıtlamaya geçirecek tüm parametreleri ve değerleri tanımlar. Her değer Kısıtlama şablonu CRD'sinde bulunmalıdır.
  • constraintTemplate (kullanım dışı)
    • ile templateInfokullanılamaz.
    • İlke tanımı oluşturulurken veya güncelleştirilirken ile templateInfo değiştirilmelidir.
    • Yeni Kısıtlamaları tanımlayan CustomResourceDefinition (CRD) Kısıtlama şablonu. Şablon, Azure İlkesi değerleri aracılığıyla geçirilen Rego mantığını, Kısıtlama şemasını ve Kısıtlama parametrelerini tanımlar.

Denetim örneği

Örnek 1: Resource Manager modları için denetim etkisini kullanma.

"then": {
    "effect": "audit"
}

Örnek 2: bir Kaynak Sağlayıcısı modu Microsoft.Kubernetes.Dataiçin denetim etkisini kullanma. details.templateInfo dosyasındaki ek bilgiler PublicURL kullanımını bildirir ve izin verilen kapsayıcı görüntülerini sınırlamak için Kubernetes'te kullanılacak Kısıtlama şablonunun konumuna ayarlarurl.

"then": {
    "effect": "audit",
    "details": {
        "templateInfo": {
            "sourceType": "PublicURL",
            "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
        },
        "values": {
            "imageRegex": "[parameters('allowedContainerImagesRegex')]"
        },
        "apiGroups": [""],
        "kinds": ["Pod"]
    }
}

AuditIfNotExists

AuditIfNotExists, if koşuluyla eşleşen, ancak sonra koşulun ayrıntılarında belirtilen özelliklere sahip olmayan kaynakla ilgili kaynakların denetlenip denetlenmediğini etkinleştirir.

AuditIfNotExists değerlendirmesi

AuditIfNotExists, bir Kaynak Sağlayıcısı kaynak oluşturma veya güncelleştirme isteğini işledikten ve bir başarı durum kodu döndürdükten sonra çalışır. Denetim, ilgili kaynak yoksa veya ExistenceCondition tarafından tanımlanan kaynaklar true olarak değerlendirilmezse gerçekleşir. Yeni ve güncelleştirilmiş kaynaklar için Azure İlkesi etkinlik günlüğüne bir Microsoft.Authorization/policies/audit/action işlem ekler ve kaynağı uyumsuz olarak işaretler. Tetiklendiğinde, if koşuluna uyan kaynak uyumsuz olarak işaretlenmiş kaynaktır.

AuditIfNotExists özellikleri

AuditIfNotExists efektlerinin details özelliği, eşleşecek ilgili kaynakları tanımlayan tüm alt özelliklere sahiptir.

  • Tür (gerekli)
    • Eşleşecek ilgili kaynağın türünü belirtir.
    • türif koşulu kaynağının altında bir kaynak türüyse, ilke değerlendirilen kaynak kapsamında bu türdeki kaynakları sorgular. Aksi takdirde, ilke sorguları, existenceScope'a bağlı olarak değerlendirilen kaynakla aynı kaynak grubu veya abonelik içinde sorgular.
  • Ad (isteğe bağlı)
    • Eşleşecek kaynağın tam adını belirtir ve ilkenin belirtilen türdeki tüm kaynaklar yerine belirli bir kaynağı getirmesine neden olur.
    • if.field.type ve sonra.details.type için koşul değerleri eşleştiğinde, Adgerekli olur ve bir alt kaynak için veya [field('fullName')] olmalıdır[field('name')]. Ancak bunun yerine bir denetim etkisi dikkate alınmalıdır.
  • ResourceGroupName (isteğe bağlı)
    • İlgili kaynağın eşleşmesinin farklı bir kaynak grubundan gelmesine izin verir.
    • Tür, if koşulu kaynağının altında yer alacak bir kaynaksa geçerli değildir.
    • Varsayılan, if koşulu kaynağının kaynak grubudur.
  • ExistenceScope (isteğe bağlı)
    • İzin verilen değerler Subscription ve ResourceGroup değerleridir.
    • Eşleşmesi gereken ilgili kaynağın getirileceği yerin kapsamını ayarlar.
    • Tür, if koşulu kaynağının altında yer alacak bir kaynaksa geçerli değildir.
    • ResourceGroup için, if koşulu kaynağının kaynak grubu veya ResourceGroupName içinde belirtilen kaynak grubu ile sınırlayabilir.
    • Abonelik için ilgili kaynağın tüm aboneliğini sorgular. Uygun değerlendirme için atama kapsamı abonelikte veya daha yüksek bir değerde ayarlanmalıdır.
    • Varsayılan olarak ResourceGroup kullanılır.
  • EvaluationDelay (isteğe bağlı)
    • İlgili kaynakların varlığının ne zaman değerlendirilmesi gerektiğini belirtir. Gecikme yalnızca kaynak oluşturma veya güncelleştirme isteğinin sonucu olan değerlendirmeler için kullanılır.
    • İzin verilen değerler , AfterProvisioningSuccess, AfterProvisioningFailureveya 0 ile 360 dakika arasında bir ISO 8601 süresidirAfterProvisioning.
    • AfterProvisioning değerleri, ilke kuralının IF koşulunda değerlendirilen kaynağın sağlama sonucunu inceler. AfterProvisioning sonuç ne olursa olsun sağlama tamamlandıktan sonra çalışır. Sağlama 6 saatten uzun sürüyorsa, Değerlendirme sonrası gecikmeleri belirlenirken hata olarak kabul edilir.
    • Varsayılan değer ( PT10M 10 dakika).
    • Uzun bir değerlendirme gecikmesi belirtmek, kaynağın kayıtlı uyumluluk durumunun bir sonraki değerlendirme tetikleyicisine kadar güncelleştirilmemesine neden olabilir.
  • ExistenceCondition (isteğe bağlı)
    • Belirtilmezse, ilgili türde herhangi bir kaynak etkiyi karşılar ve denetimi tetiklemez.
    • If koşulu için ilke kuralıyla aynı dili kullanır, ancak ilgili her kaynak için ayrı ayrı değerlendirilir.
    • Eşleşen ilgili herhangi bir kaynak true olarak değerlendirilirse, etki karşılanır ve denetimi tetiklemez.
    • If koşulundaki değerlerle denkliği denetlemek için [field()] kullanabilir.
    • Örneğin, üst kaynağın ( if koşulunda) eşleşen ilgili kaynakla aynı kaynak konumunda olduğunu doğrulamak için kullanılabilir.

AuditIfNotExists örneği

Örnek: Kötü amaçlı yazılımdan koruma uzantısının mevcut olup olmadığını belirlemek için Sanal Makineler değerlendirir ve eksik olduğunda denetler.

{
    "if": {
        "field": "type",
        "equals": "Microsoft.Compute/virtualMachines"
    },
    "then": {
        "effect": "auditIfNotExists",
        "details": {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "existenceCondition": {
                "allOf": [{
                        "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                        "equals": "Microsoft.Azure.Security"
                    },
                    {
                        "field": "Microsoft.Compute/virtualMachines/extensions/type",
                        "equals": "IaaSAntimalware"
                    }
                ]
            }
        }
    }
}

Reddet

Reddetme, bir ilke tanımı aracılığıyla tanımlı standartlara uymayan ve isteği başarısız olan bir kaynak isteğini önlemek için kullanılır.

Değerlendirmeyi reddet

eşleşen bir kaynağı Resource Manager modunda oluştururken veya güncelleştirirken reddetmek, kaynak sağlayıcısına gönderilmeden önce isteği engeller. İstek olarak 403 (Forbidden)döndürülür. Portalda Yasak, ilke ataması tarafından engellenen dağıtımda durum olarak görüntülenebilir. Kaynak Sağlayıcısı modu için kaynak sağlayıcısı, kaynağın değerlendirilmesini yönetir.

Mevcut kaynakların değerlendirmesi sırasında, reddetme ilkesi tanımıyla eşleşen kaynaklar uyumsuz olarak işaretlenir.

Reddetme özellikleri

Resource Manager modu için reddetme efekti, ilke tanımının o zaman koşulunda kullanılacak ek özelliklere sahip değildir.

bir Kaynak Sağlayıcısı modu Microsoft.Kubernetes.Dataiçin reddetme etkisi, aşağıdaki ek ayrıntılar alt özelliklerine sahiptir. templateInfo kullanım dışı bırakıldığından, yeni veya güncelleştirilmiş ilke tanımları constraintTemplate için kullanımı gereklidir.

  • templateInfo (gerekli)
    • ile constraintTemplatekullanılamaz.
    • sourceType (gerekli)
      • Kısıtlama şablonunun kaynak türünü tanımlar. İzin verilen değerler: PublicURL veya Base64Encoded.

      • PublicURL ise, kısıtlama şablonunun konumunu sağlamak için özelliğiyle url eşleştirilir. Konum herkese açık olmalıdır.

        Uyarı

        SAS URI'lerini veya belirteçlerini ya da url gizli diziyi açığa çıkarabilecek başka bir şeyi kullanmayın.

      • Base64Encoded ise, temel 64 kodlanmış kısıtlama şablonunu sağlamak için özelliğiyle content eşleştirilir. Mevcut bir Açık İlke Aracısı (OPA) Gatekeeper v3 kısıtlama şablonundan özel bir tanım oluşturmak için bkz. Kısıtlama şablonundan ilke tanımı oluşturma.

  • constraint (isteğe bağlı)
    • ile templateInfokullanılamaz.
    • Kısıtlama şablonunun CRD uygulaması. olarak{{ .Values.<valuename> }}değerler aracılığıyla geçirilen parametreleri kullanır. Aşağıdaki 2. örnekte, bu değerler ve {{ .Values.allowedContainerImagesRegex }}değerleridir{{ .Values.excludedNamespaces }}.
  • ad alanları (isteğe bağlı)
    • İlke değerlendirmesini sınırlamak için kubernetes ad alanlarıdizisi.
    • Boş veya eksik bir değer, ilke değerlendirmesinin excludedNamespaces içinde tanımlananlar dışında tüm ad alanlarını içermesine neden olur.
  • excludedNamespaces (gerekli)
  • labelSelector (gerekli)
    • Sağlanan etiketler ve seçicilerle eşleşen ilke değerlendirmesi için hangi Kubernetes kaynaklarının dahilleneceğini belirtmek için matchLabels (nesne) ve matchExpression (dizi) özelliklerini içeren bir nesne.
    • Boş veya eksik bir değer, ilke değerlendirmesinin excludedNamespaces içinde tanımlanan ad alanları dışında tüm etiketleri ve seçicileri içermesine neden olur.
  • apiGroups ( templateInfo kullanılırken gereklidir)
    • Eşleşecek API gruplarını içeren bir dizi. Boş bir dizi ([""]), çekirdek API grubudur.
    • apiGroups için tanımlamaya ["*"] izin verilmiyor.
  • kinds ( templateInfo kullanılırken gereklidir)
    • Değerlendirmeyi sınırlamak için Kubernetes nesnesinin türünü içeren bir dizi.
    • Tür tanımlamaya ["*"] izin verilmiyor.
  • değerler (isteğe bağlı)
    • Kısıtlamaya geçirecek tüm parametreleri ve değerleri tanımlar. Her değer Kısıtlama şablonu CRD'sinde bulunmalıdır.
  • constraintTemplate (kullanım dışı)
    • ile templateInfokullanılamaz.
    • İlke tanımı oluşturulurken veya güncelleştirilirken ile templateInfo değiştirilmelidir.
    • Yeni Kısıtlamaları tanımlayan CustomResourceDefinition (CRD) Kısıtlama şablonu. Şablon, Azure İlkesi değerleri aracılığıyla geçirilen Rego mantığını, Kısıtlama şemasını ve Constraint parametrelerini tanımlar. öğesini değiştirmek constraintTemplateiçin daha templateInfo yenisini kullanmanız önerilir.

Reddet örneği

Örnek 1: Resource Manager modlar için reddetme efektini kullanma.

"then": {
    "effect": "deny"
}

Örnek 2: bir Kaynak Sağlayıcısı modu için reddetme etkisini kullanma Microsoft.Kubernetes.Data. details.templateInfo içindeki ek bilgiler PublicURL kullanımını bildirir ve izin verilen kapsayıcı görüntülerini sınırlamak için Kubernetes'te kullanılacak Kısıtlama şablonunun konumuna ayarlarurl.

"then": {
    "effect": "deny",
    "details": {
        "templateInfo": {
            "sourceType": "PublicURL",
            "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
        },
        "values": {
            "imageRegex": "[parameters('allowedContainerImagesRegex')]"
        },
        "apiGroups": [""],
        "kinds": ["Pod"]
    }
}

DeployIfNotExists

AuditIfNotExists'e benzer şekilde, bir DeployIfNotExists ilke tanımı koşul karşılandığında bir şablon dağıtımı yürütür. Etkinin DeployIfNotExists olarak ayarlandığı ilke atamaları, düzeltme yapmak için yönetilen bir kimlik gerektirir.

Not

İç içe şablonlardeployIfNotExists ile desteklenir, ancak bağlantılı şablonlar şu anda desteklenmez.

DeployIfNotExists değerlendirmesi

Bir Kaynak Sağlayıcısı bir oluşturma veya güncelleştirme aboneliğini veya kaynak isteğini işlediğinde ve bir başarı durum kodu döndürdükten sonra DeployIfNotExists yapılandırılabilir bir gecikmeden sonra çalışır. İlgili kaynak yoksa veya ExistenceCondition tarafından tanımlanan kaynaklar true olarak değerlendirilmediyse şablon dağıtımı gerçekleşir. Dağıtımın süresi, şablona dahil olan kaynakların karmaşıklığına bağlıdır.

Değerlendirme döngüsü sırasında, kaynakları eşleştiren DeployIfNotExists etkisine sahip ilke tanımları uyumsuz olarak işaretlenir, ancak bu kaynak üzerinde hiçbir işlem yapılmaz. Mevcut uyumlu olmayan kaynaklar bir düzeltme göreviyle düzeltilebilir.

DeployIfNotExists özellikleri

DeployIfNotExists efektinin details özelliği, eşleşecek ilgili kaynakları ve yürütülecek şablon dağıtımını tanımlayan tüm alt özelliklere sahiptir.

  • Tür (gerekli)

    • Eşleştirecek ilgili kaynağın türünü belirtir.
    • türif koşulu kaynağının altında yer alan bir kaynak türüyse, ilke değerlendirilen kaynağın kapsamında bu türdeki kaynakları sorgular. Aksi takdirde, existenceScope'a bağlı olarak değerlendirilen kaynakla aynı kaynak grubu veya abonelik içindeki ilke sorguları.
  • Ad (isteğe bağlı)

    • Eşleşecek kaynağın tam adını belirtir ve ilkenin belirtilen türdeki tüm kaynaklar yerine belirli bir kaynağı getirmesine neden olur.
    • if.field.type ve sonra.details.type için koşul değerleri eşleşiyorsa, Adgerekli hale gelir ve bir alt kaynak için veya [field('fullName')] olmalıdır[field('name')].
  • ResourceGroupName (isteğe bağlı)

    • İlgili kaynağın eşleşmesinin farklı bir kaynak grubundan gelmesine izin verir.
    • Tür, if koşulu kaynağının altında yer alacak bir kaynaksa geçerli değildir.
    • Varsayılan, if koşulu kaynağının kaynak grubudur.
    • Şablon dağıtımı yürütülürse, bu değerin kaynak grubunda dağıtılır.
  • ExistenceScope (isteğe bağlı)

    • İzin verilen değerler Subscription ve ResourceGroup değerleridir.
    • Eşleşmesi gereken ilgili kaynağın getirileceği yerin kapsamını ayarlar.
    • Tür, if koşulu kaynağının altında yer alacak bir kaynaksa geçerli değildir.
    • ResourceGroup için, if koşulu kaynağının kaynak grubu veya ResourceGroupName içinde belirtilen kaynak grubu ile sınırlayabilir.
    • Abonelik için ilgili kaynağın tüm aboneliğini sorgular. Uygun değerlendirme için atama kapsamı abonelikte veya daha yüksek bir değerde ayarlanmalıdır.
    • Varsayılan değer ResourceGroup'tır.
  • EvaluationDelay (isteğe bağlı)

    • İlgili kaynakların varlığının ne zaman değerlendirilmesi gerektiğini belirtir. Gecikme yalnızca kaynak oluşturma veya güncelleştirme isteğinin sonucu olan değerlendirmeler için kullanılır.
    • İzin verilen değerler , AfterProvisioningSuccess, AfterProvisioningFailureveya 0 ile 360 dakika arasında bir ISO 8601 süresidirAfterProvisioning.
    • AfterProvisioning değerleri, ilke kuralının IF koşulunda değerlendirilen kaynağın sağlama sonucunu inceler. AfterProvisioning sonuç ne olursa olsun sağlama tamamlandıktan sonra çalışır. Sağlama 6 saatten uzun sürüyorsa, Değerlendirme sonrası gecikmeleri belirlenirken hata olarak değerlendirilir.
    • Varsayılan değer ( PT10M 10 dakika).
    • Uzun bir değerlendirme gecikmesi belirtmek, kaynağın kayıtlı uyumluluk durumunun bir sonraki değerlendirme tetikleyicisine kadar güncelleştirilmemesiyle sonuçlanabilir.
  • ExistenceCondition (isteğe bağlı)

    • Belirtilmezse, ilgili türdeki herhangi bir kaynak etkiyi karşılar ve dağıtımı tetiklemez.
    • If koşulu için ilke kuralıyla aynı dili kullanır, ancak ilgili her kaynak için ayrı ayrı değerlendirilir.
    • Eşleşen ilgili herhangi bir kaynak true olarak değerlendirilirse, etki karşılanır ve dağıtımı tetiklemez.
    • If koşulundaki değerlerle denkliği denetlemek için [field()] kullanabilir.
    • Örneğin, üst kaynağın ( if koşulunda) eşleşen ilgili kaynakla aynı kaynak konumunda olduğunu doğrulamak için kullanılabilir.
  • roleDefinitionIds (gerekli)

  • DeploymentScope (isteğe bağlı)

    • İzin verilen değerler Subscription ve ResourceGroup değerleridir.
    • Tetiklenecek dağıtım türünü ayarlar. Abonelik , abonelik düzeyinde bir dağıtımı, ResourceGroup ise bir kaynak grubuna dağıtımı gösterir.
    • Abonelik düzeyi dağıtımları kullanılırken Dağıtımdabir konum özelliği belirtilmelidir.
    • Varsayılan değer ResourceGroup'tır.
  • Dağıtım (gerekli)

    • Put API'sine geçirileceği için bu özellik tam şablon dağıtımını Microsoft.Resources/deployments içermelidir. Daha fazla bilgi için bkz . Dağıtımlar REST API'si.
    • Microsoft.Resources/deployments Birden çok ilke değerlendirmesi arasında çekişme olmasını önlemek için şablon içinde iç içe yerleştirilmiş benzersiz adlar kullanmalıdır. Üst dağıtımın adı, aracılığıyla [concat('NestedDeploymentName-', uniqueString(deployment().name))]iç içe dağıtım adının bir parçası olarak kullanılabilir.

    Not

    Deployment özelliğindeki tüm işlevler ilkenin değil şablonun bileşenleri olarak değerlendirilir. Özel durum, değerleri ilkeden şablona geçiren parameters özelliğidir. Bu bölümdeki şablon parametre adı altındaki değer , bu değeri geçirmek için kullanılır (DeployIfNotExists örneğinde fullDbName bölümüne bakın).

DeployIfNotExists örneği

Örnek: transparentDataEncryption'ın etkinleştirilip etkinleştirilmediğini belirlemek için SQL Server veritabanlarını değerlendirir. Aksi takdirde, etkinleştirecek bir dağıtım yürütülür.

"if": {
    "field": "type",
    "equals": "Microsoft.Sql/servers/databases"
},
"then": {
    "effect": "DeployIfNotExists",
    "details": {
        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
        "name": "current",
        "evaluationDelay": "AfterProvisioning",
        "roleDefinitionIds": [
            "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
            "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
        ],
        "existenceCondition": {
            "field": "Microsoft.Sql/transparentDataEncryption.status",
            "equals": "Enabled"
        },
        "deployment": {
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {
                        "fullDbName": {
                            "type": "string"
                        }
                    },
                    "resources": [{
                        "name": "[concat(parameters('fullDbName'), '/current')]",
                        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
                        "apiVersion": "2014-04-01",
                        "properties": {
                            "status": "Enabled"
                        }
                    }]
                },
                "parameters": {
                    "fullDbName": {
                        "value": "[field('fullName')]"
                    }
                }
            }
        }
    }
}

Devre dışı

Bu etki, test durumları veya ilke tanımının etkiyi parametreleştirdiği durumlar için yararlıdır. Bu esneklik, ilkenin tüm atamalarını devre dışı bırakmak yerine tek bir atamayı devre dışı bırakmayı mümkün kılar.

Not

Devre Dışı efektini kullanan ilke tanımları, atamadan sonra uyumlu varsayılan uyumluluk durumuna sahiptir.

Devre dışı efektinin bir alternatifi, ilke ataması üzerinde ayarlanan enforcementMode'dur. enforcementModeDisabled_** olduğunda, kaynaklar yine de değerlendirilir. Etkinlik günlükleri gibi günlüğe kaydetme ve ilke etkisi gerçekleşmez. Daha fazla bilgi için bkz. ilke ataması - zorlama modu.

El ile (önizleme)

Yeni manual (önizleme) etkisi, kaynakların veya kapsamların uyumluluğunu kendi kendinize doğrulamanızı sağlar. Değerlendirmeyi etkin bir şekilde taraan diğer ilke tanımlarından farklı olarak, El ile etkisi uyumluluk durumunda el ile değişiklik yapılmasını sağlar. El ile ilke tarafından hedeflenen bir kaynağın veya kapsamın uyumluluğunu değiştirmek için bir kanıtlama oluşturmanız gerekir. En iyi yöntem , uyumluluğunun kanıtlanması gereken kaynakların sınırını tanımlayan kapsamı hedefleyen el ile ilkeler tasarlamaktır.

Not

Genel Önizleme sırasında, bulut mevzuat uyumluluğu girişimlerine yönelik çeşitli Microsoft Defender aracılığıyla el ile ilke desteği sağlanır. Bulut Premium katmanı müşterisi için bir Microsoft Defender iseniz, deneyimlerine genel bakış bölümüne bakın.

Şu anda, aşağıdaki düzenleyici ilke girişimleri el ile etkiyi içeren ilke tanımlarını içerir:

  • FedRAMP High
  • FedRAMP Orta
  • HIPAA
  • HITRUST
  • ISO 27001
  • Microsoft CIS 1.3.0
  • Microsoft CIS 1.4.0
  • NIST SP 800-171 Rev. 2
  • NIST SP 800-53 Rev. 4
  • NIST SP 800-53 Rev. 5
  • PCI DSS 3.2.1
  • PCI DSS 4.0
  • SOC TSP
  • SWIFT CSP CSCF v2022

Aşağıdaki örnek Azure aboneliklerini hedefler ve ilk uyumluluk durumunu olarak Unknownayarlar.

{
  "if": {
    "field":  "type",
    "equals": "Microsoft.Resources/subscriptions"
  },
  "then": {
    "effect": "manual",
    "details": {
      "defaultState": "Unknown"
    }
  }
}

defaultState özelliği üç olası değere sahiptir:

  • Bilinmiyor: Hedeflenen kaynakların ilk, varsayılan durumu.
  • Uyumlu: Kaynak, el ile ilke standartlarınıza göre uyumludur
  • Uyumsuz: Kaynak, el ile ilke standartlarınıza göre uyumlu değil

Azure İlkesi uyumluluk altyapısı tüm geçerli kaynakları tanımda belirtilen varsayılan duruma (Unknownbelirtilmemişse) değerlendirir. Uyumluluk Unknown durumu, kaynak uyumluluk durumunu el ile test etmeniz gerektiğini gösterir. Efekt durumu belirtilmemişse, varsayılan olarak Unknownolur. Uyumluluk Unknown durumu, uyumluluk durumunu kendiniz test etmeniz gerektiğini gösterir.

Aşağıdaki ekran görüntüsünde, durum bilgisi olan el ile ilke atamasının Unknown Azure portal nasıl göründüğü gösterilmektedir:

Azure portal 'bilinmiyor' uyumluluk nedeni ile atanmış bir el ile ilkeyi gösteren kaynak uyumluluk tablosu.

Etkin bir ilke tanımı manual atandığında, özel kanıtlamalar aracılığıyla hedeflenen kaynakların veya kapsamların uyumluluk durumlarını ayarlayabilirsiniz. Kanıtlamalar ayrıca meta veriler biçiminde isteğe bağlı ek bilgiler ve seçilen uyumluluk durumuna eşlik eden kanıtlara bağlantılar sağlamanıza da olanak tanır. El ile ilkeyi atayan kişi, ilke atamasının meta verilerininevidenceStorages özelliğini belirterek kanıt için varsayılan bir depolama konumu önerebilir.

Değiştir

Değiştirme, oluşturma veya güncelleştirme sırasında abonelikte veya kaynakta özellik veya etiket eklemek, güncelleştirmek veya kaldırmak için kullanılır. CostCenter gibi kaynaklardaki etiketlerin güncelleştirilmesi yaygın bir örnektir. Mevcut uyumlu olmayan kaynaklar bir düzeltme göreviyle düzeltilebilir. Tek bir Değiştirme kuralının herhangi bir sayıda işlemi olabilir. Değişiklik olarak ayarlanmış efektli ilke atamaları, düzeltme yapmak için yönetilen bir kimlik gerektirir.

Aşağıdaki işlemler Değiştir tarafından desteklenir:

  • Kaynak etiketlerini ekleyin, değiştirin veya kaldırın. Etiketler için, hedef kaynak bir kaynak grubu olmadığı sürece Değiştir ilkesinin Dizine Eklenmiş olarak ayarlanmış olması gerekirmode.
  • Sanal makinelerin yönetilen kimlik türünün (identity.type) değerini ekleyin veya değiştirin ve Sanal Makine Ölçek Kümeleri.
  • Belirli diğer adların değerlerini ekleyin veya değiştirin.
    • KullanınGet-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }Azure PowerShell 4.6.0 veya üzeri bir sürümde Değiştir ile kullanılabilecek diğer adların listesini alın.

Önemli

Etiketleri yönetiyorsanız, Ek işlem türleri ve mevcut kaynakları düzeltme olanağı sağladığından Ekle yerine Değiştir'i kullanmanız önerilir. Ancak, yönetilen kimlik oluşturamıyorsanız ekleme önerilir veya Değiştir özelliği henüz kaynak özelliği için diğer adı desteklemiyordur.

Değerlendirmeyi değiştirme

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

Diğer ad belirtildiğinde, Değiştir işleminin istek içeriğini kaynak sağlayıcısının reddetmesine neden olacak şekilde değiştirmediğinden emin olmak için aşağıdaki ek denetimler gerçekleştirilir:

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

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

Önemli

Eşlenen özelliğin 'Değiştirilebilir' olmadığı API sürümlerini kullanarak başarısız istekleri önlemek için diğer adlar içeren Tanımları değiştir seçeneğinin denetimçakışması etkisini kullanması önerilir. Aynı diğer ad API sürümleri arasında farklı davranırsa, her API sürümü için kullanılan değiştirme işlemini belirlemek için koşullu değiştirme işlemleri kullanılabilir.

Değiştirme efektini kullanan 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, if koşulunu karşılayan tüm kaynakları uyumsuz olarak işaretler.

Özellikleri değiştirme

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

  • roleDefinitionIds (gerekli)
  • conflictEffect (isteğe bağlı)
    • Birden fazla ilke tanımı aynı özelliği değiştirirse veya Değiştirme işlemi belirtilen diğer ad üzerinde ç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. Denetimli ilke tanımları tüm işlemleri atlar. Birden fazla ilke tanımında reddetme etkisi varsa, istek çakışma olarak reddedilir. Tüm ilke tanımlarında denetim varsa, çakışan ilke tanımlarının işlemlerinin hiçbiri işlenmez.
      • Mevcut kaynaklar için, birden fazla ilke tanımı reddetme etkisine sahipse, uyumluluk durumu Çakışma'dır. Bir veya daha az ilke tanımının etkisi reddedilirse, her atama Uyumsuz uyumluluk durumunu döndürür.
    • Kullanılabilir değerler: denetim, reddetme, devre dışı.
    • Varsayılan değer reddet'tir.
  • işlemler (gerekli)
    • Eşleşen kaynaklarda tamamlanacak tüm etiket işlemlerinin dizisi.
    • Özellikler:
      • işlem (gerekli)
        • Eşleşen bir kaynakta hangi eylemin gerçekleştireceklerini tanımlar. Seçenekler şunlardır: addOrReplace, Ekle, Kaldır. Ekle işlevi , Ekleme efektine benzer şekilde davranır.
      • alan (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.
        • İşlemaddOrReplace veya Add ise bu özellik gereklidir.
      • koşul (isteğe bağlı)
        • true veya false olarak değerlendirilen İlke işlevlerine sahip bir Azure İlkesi dil ifadesi içeren dize.
        • Şu İlke 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 işlem, alan ve değer özelliklerinden oluşur. İşlem, düzeltme görevinin etiketlere ne yaptığını belirler, alan hangi etiketin değiştirildiğini belirler ve değer 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:

İşlem Description
addOrReplace Özellik veya etiket zaten farklı bir değerle mevcut olsa bile tanımlı özelliği veya etiketi ve değeri kaynağa ekler.
Ekle Tanımlı özelliği veya etiketi ve değeri kaynağa ekler.
Kaldır Tanımlı özelliği veya etiketi kaynaktan kaldırır.

Ö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: Bir depolama hesabının blob genel erişimine izin vermediğinden emin olun, Değiştirme işlemi yalnızca '2019-04-01' api sürümüne eşit veya daha büyük olan istekler değ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
            }
        ]
    }
}

Katmanlama ilkesi tanımları

Bir kaynak birkaç atamadan etkilenebilir. Bu atamalar aynı kapsamda veya farklı kapsamlarda olabilir. Bu atamaların her birinin tanımlanmış farklı bir etkisi de olabilir. Her ilkenin koşulu ve etkisi bağımsız olarak değerlendirilir. Örneğin:

  • İlke 1
    • Kaynak konumunu 'westus' ile kısıtlar
    • A aboneliğine atandı
    • Reddetme etkisi
  • İlke 2
    • Kaynak konumunu 'eastus' ile kısıtlar
    • A aboneliğinde B kaynak grubuna atandı
    • Denetim etkisi

Bu kurulum aşağıdaki sonucu verir:

  • 'eastus' içindeki B kaynak grubunda bulunan tüm kaynaklar ilke 2 ile uyumludur ve ilke 1 ile uyumlu değildir
  • B kaynak grubunda bulunan ve 'eastus' içinde olmayan tüm kaynaklar ilke 2 ile uyumlu değildir ve 'westus' içinde değilse ilke 1 ile uyumlu değildir
  • 'westus' içinde olmayan A aboneliğindeki tüm yeni kaynaklar ilke 1 tarafından reddedildi
  • A aboneliğindeki ve 'westus' içindeki B kaynak grubundaki tüm yeni kaynaklar oluşturulur ve ilke 2'de uyumlu değildir

Hem ilke 1 hem de ilke 2 reddetme etkisine sahipse, durum şu şekilde değişir:

  • B kaynak grubunda bulunan ve 'eastus' içinde olmayan tüm kaynaklar ilke 2 ile uyumlu değildir
  • B kaynak grubunda bulunan ve 'westus' içinde olmayan tüm kaynaklar ilke 1 ile uyumlu değildir
  • 'westus' içinde olmayan A aboneliğindeki tüm yeni kaynaklar ilke 1 tarafından reddedildi
  • A aboneliğinin B kaynak grubundaki yeni kaynaklar reddedildi

Her ödev ayrı ayrı değerlendirilir. Bu nedenle, bir kaynağın kapsam farklarından bir boşluktan geçmesi için bir fırsat yoktur. Katmanlama ilkesi tanımlarının net sonucu en kısıtlayıcı kümülatif olarak kabul edilir. Örneğin, hem ilke 1 hem de 2'nin reddetme etkisi varsa, bir kaynak çakışan ve çakışan ilke tanımları tarafından engellenir. Kaynağın hedef kapsamda oluşturulmasına hala ihtiyacınız varsa, doğru ilke atamalarının doğru kapsamları etkilediğini doğrulamak için her atamadaki dışlamaları gözden geçirin.

Sonraki adımlar