Etki Azure İlkesi anlama
Azure İlkesi'ndeki her ilke tanımı tek bir etkiye sahiptir. Bu etki, ilke kuralı eşleşmek üzere değerlendir geldiğinde ne olacağını belirler. Etkileri yeni bir kaynak, güncelleştirilmiş bir kaynak veya mevcut bir kaynak içinse farklı davranır.
Bu etkiler şu anda bir ilke tanımında de desteklemektedir:
Aşağıdaki etkiler kullanım dışıdır:
Önemli
EnforceOPAConstraint veya EnforceRegoPolicy etkilerinin yerine, Kaynak Sağlayıcısı moduyla denetimi ve reddetmeyi Microsoft.Kubernetes.Data kullanın. Yerleşik ilke tanımları güncelleştirildi. Bu yerleşik ilke tanımlarının mevcut ilke atamaları değiştirildiğinde, etki parametresi güncelleştirilmiş allowedValues listesinde bir değere değiştirilmelidir.
Değerlendirme sırası
Kaynak oluşturma veya güncelleştirme istekleri ilk olarak kaynak oluşturma Azure İlkesi değerlendirilir. Azure İlkesi kaynak için geçerli olan tüm atamaların listesini oluşturur ve ardından kaynağı her tanım için değerlendirir. Bir Resource Manager modundaAzure İlkesi isteği uygun Kaynak Sağlayıcısına teslim etmek için birkaç etkiyi işlemektedir. Bu düzen, kaynak, kaynak sağlayıcısının tasarım idare denetimlerini karşılamaması sırasında Kaynak Sağlayıcısı tarafından gereksiz Azure İlkesi. Kaynak Sağlayıcısı moduyla,Kaynak Sağlayıcısı değerlendirmeyi ve sonucu yönetir ve sonuçları geri rapor Azure İlkesi.
- İlke kuralının değerlendirilmesi gerekip gerekip gerek olmadığını belirlemek için önce devre dışı bırakılır.
- Ekleme ve Değiştirme daha sonra değerlendirilir. bu iki değişiklik isteği değiştirene kadar yapılan bir değişiklik, denetim veya reddetme etkisinin tetiklenemini önleyebilir. Bu etkiler yalnızca tek bir Resource Manager kullanılabilir.
- Reddet daha sonra değerlendirilir. Denetimden önce reddetme değerlendirerek, is önüne geçemeyen bir kaynağın çift günlüğe kaydetmesi önlenebilir.
- Denetim en son değerlendirilir.
Kaynak Sağlayıcısı, bir Resource Manager modu isteğinde başarı kodu döndürdikten sonra AuditIfNotExists ve DeployIfNotExists ek uyumluluk günlüğü veya eylemi gerekip gerekip gerek olmadığını belirlemek için değerlendirir.
Ayrıca, PATCH yalnızca ilgili alanları tags değiştiren istekler, ilke değerlendirmesini ilgili alanları inceleyen koşulları içeren tags 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'leri belirtme yaygın bir örnektir.
Önemli
Ekleme, etiket olmayan özelliklerle kullanılmak üzere tasarlanmıştır. Ekleme bir oluşturma veya güncelleştirme isteği sırasında kaynağa etiket ekleyene kadar, bunun yerine etiketler için Değiştir etkisinin kullanılması önerilir.
Ekleme değerlendirmesi
Ekleme, kaynak oluşturma veya güncelleştirme 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şı olduğunda ekleme alanları kaynağa eklenir. Ekleme etkisi özgün istekte farklı bir değerle bir değeri geçersiz kılarsa reddetme etkisi olarak davranır ve isteği reddeder. Var olan bir diziye yeni bir değer eklemek için diğer [*] adın sürümünü kullanın.
Ekleme etkisini kullanan bir ilke tanımı değerlendirme döngüsünün bir parçası olarak çalıştır olduğunda, zaten mevcut olan kaynaklarda değişiklik yapmaz. Bunun yerine, if koşuluna uygun olan tüm kaynakları uyumlu değil olarak işaretler.
Ekleme özellikleri
Ekleme etkisi yalnızca gerekli olan bir ayrıntılar dizisine sahiptir. Ayrıntılar bir dizi olduğu için tek bir alan/değer çifti veya birden çok değer olabilir. Kabul edilebilir alanların listesi için tanım yapısına bakın.
Ekleme örnekleri
Örnek 1: Bir depolama hesabında IP kurallarını ayarlamak için dizi değerine sahip olmayan bir diğer ad kullanan tek [*] alan/değer çifti. Diğer ad olmayan [*] bir dizi olduğunda, etki değeri dizinin tamamına ekler. Dizi zaten varsa, çakışmadan bir reddetme olayı oluşur.
"then": {
"effect": "append",
"details": [{
"field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
"value": [{
"action": "Allow",
"value": "134.5.0.0/21"
}]
}]
}
Örnek 2: Bir depolama hesabında IP kurallarını ayarlamak için dizi değerine sahip bir diğer ad kullanan tek [*] alan/değer çifti. Diğer ad [*] kullanılarak, etki 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 kaynağı değerlendirirken etkinlik günlüğünde bir uyarı olayı oluşturmak için kullanılır, ancak isteği durdurmaz.
Denetim değerlendirmesi
Denetim, kaynak oluşturma veya güncelleştirme Azure İlkesi tarafından denetlenen son etkidir. Kaynak Resource Manager için Azure İlkesi Sağlayıcı'ya gönderir. Bir kaynak için oluşturma veya güncelleştirme isteğini değerlendirirken Azure İlkesi etkinlik günlüğüne bir işlem ekler ve Microsoft.Authorization/policies/audit/action kaynağı uyumlu değil 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 modunda, denetim etkisinin ilke tanımının o zaman koşulunda kullanmak için ek bir özelliği yoktur.
Bir Kaynak Sağlayıcısı modu Microsoft.Kubernetes.Data için denetim etkisi, ayrıntıların aşağıdaki ek alt özelliklerine sahiptir. Kullanım templateInfo dışı olduğu için yeni veya güncelleştirilmiş ilke constraintTemplate tanımları 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, kısıtlama şablonunun konumunu
urlsağlamak için özelliğiyle eşleştirilmişse. Konumun genel erişime açık olması gerekir.Uyarı
içinde SAS URI'leri veya belirteçleri ya da gizli bir gizli değeri
urlaçığa çıkaran başka bir şey kullanmayın.Base64Encoded ise, temel
content64 kodlanmış kısıtlama şablonunu sağlamak için özelliğiyle eşleştirilmiştir. Mevcut bir Open Policy Agent (OPA) GateKeeper v3 kısıtlama şablonundan özel tanım oluşturmak için bkz. Kısıtlama şablonundan ilke tanımı oluşturma.
- ile
- kısıtlama (isteğe bağlı)
- ile
templateInfokullanılamaz. - Kısıtlama şablonunun CRD uygulaması. değerleriyle geçirilen parametreleri olarak
{{ .Values.<valuename> }}kullanır. Aşağıdaki örnek 2'de bu değerler ve{{ .Values.excludedNamespaces }}{{ .Values.allowedContainerImagesRegex }}değerleridir.
- ile
- 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çermesini sağlar.
- excludedNamespaces (gerekli)
- İlke değerlendirmesinin dışında tutulacak Kubernetes ad alanları dizisi.
- labelSelector (gerekli)
- Sağlanan etiketler ve seçiciler ile eşanan ilke değerlendirmesi için hangi Kubernetes kaynaklarının dahil edekli olduğunu 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çermesini sağlar.
- apiGroups (templateInfo kullanılırken gereklidir)
- Eşleşmek için API gruplarını içeren bir dizi. Boş dizi (
[""]) çekirdek API grubuyken tüm API["*"]gruplarıyla eş değerdir.
- Eşleşmek için API gruplarını içeren bir dizi. Boş dizi (
- kinds (templateInfo kullanırken gereklidir)
- Değerlendirmeyi sınırlandırma için Kubernetes nesnesinin türü içeren bir dizi.
- değerler (isteğe bağlı)
- Kısıtlamaya geçilmesi gereken parametreleri ve değerleri tanımlar. Her değerin Kısıtlama şablonu CRD'sinde mevcut olması gerekir.
- constraintTemplate (kullanım dışı)
- ile
templateInfokullanılamaz. - İlke tanımı
templateInfooluşturulurken veya güncelleştirilken ile değiştir gerekir. - Yeni Kısıtlamaları tanımlayan CustomResourceDefinition (CRD) Kısıtlama şablonu. Şablon Rego mantığını, Kısıtlama şemasını ve bu şemadan değerler aracılığıyla geçirilen Kısıtlama parametrelerini Azure İlkesi.
- ile
Denetim örneği
Örnek 1: Veri modlarında denetim Resource Manager kullanma.
"then": {
"effect": "audit"
}
Örnek 2: Kaynak Sağlayıcısı modu için denetim etkisini Microsoft.Kubernetes.Data kullanma. details.templateInfo içinde yer alan ek bilgiler PublicURL kullanımını bildirmektedir ve izin verilen kapsayıcı görüntülerini sınırlamak için Kubernetes'te kullanmak üzere Kısıtlama şablonunun url konumunu ayarlar.
"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 o koşulun ayrıntılarında belirtilen özelliklere sahip olan kaynakla ilgili kaynakların denetlenerek denetlenebilir.
AuditIfNotExists değerlendirmesi
AuditIfNotExists, Kaynak Sağlayıcısı bir kaynak oluşturma veya güncelleştirme isteğini işledikten ve bir başarı durum kodu döndürülene kadar ç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 Azure İlkesi etkinlik Microsoft.Authorization/policies/audit/action günlüğüne bir işlem ekler ve kaynağı uyumlu değil olarak işaretler. Tetiklendiğinde, if koşuluna uygun olan kaynak, uyumlu değil olarak işaretlenen kaynaktır.
AuditIfNotExists özellikleri
AuditIfNotExists etkilerinin details özelliği, eşleşmesi gereken ilgili kaynakları tanımlayan tüm alt özelliklere sahiptir.
- Tür (gerekli)
- Eşleşmesi gereken ilgili kaynağın türünü belirtir.
- details.type if koşulu kaynağının altında bir kaynak türü ise, ilke değerlendirilen kaynak kapsamında bu tür kaynakları sorgular. Aksi takdirde, ilke değerlendirilen kaynakla aynı kaynak grubu içinde sorgular.
- Ad (isteğe bağlı)
- Eşleşmesi gereken kaynağın tam adını belirtir ve ilkenin belirtilen türe sahip tüm kaynaklar yerine belirli bir kaynağı getirmesini sağlar.
- if.field.type ve then.details.type için koşul değerleri eşleşirse, Ad gerekli hale gelir ve bir alt kaynak için , veya olması
[field('name')][field('fullName')]gerekir. Ancak bunun yerine bir denetim etkisi dikkate alınmalıdır.
- ResourceGroupName (isteğe bağlı)
- İlgili kaynağın eşleşmenin farklı bir kaynak grubundan gelmelerini sağlar.
- Tür, if koşulu kaynağının altında yer alan 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şmek için ilgili kaynağın getirilecek kapsamını ayarlar.
- Tür, if koşulu kaynağının altında yer alan bir kaynaksa geçerli değildir.
- ResourceGroup için, koşul kaynağının kaynak grubu veya ResourceGroupName içinde belirtilen kaynak grubu ile sınırlanır.
- Abonelik için ilgili kaynak için aboneliğin tamamını sorgular. Uygun değerlendirme için atama kapsamı abonelikte veya daha yüksek bir değerde ayar gerekir.
- ResourceGroup varsayılandı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
AfterProvisioning: , , veya ISOAfterProvisioningSuccessAfterProvisioningFailure8601 süresi 0 ile 360 dakika arasında. - AfterProvisioning değerleri, ilke kuralının IF koşulunda değerlendirilen kaynağın sağlama sonucu inceler.
AfterProvisioning, sonuçtan bağımsız olarak sağlama tamamlandıktan sonra çalışır. Sağlama 6 saat daha uzun sürerse, AfterProvisioning değerlendirme 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 sonraki değerlendirme tetikleyicisi olana kadar güncelleştirilmemelerine neden olabilir.
- ExistenceCondition (isteğe bağlı)
- Belirtilmezse, türüyle ilgili 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 kaynaklardan herhangi biri true olarak değerlendirilirse, etki karşılar ve denetimi tetiklemez.
- If koşulunda yer alan değerlerle eşdeğerliği kontrol etmek için [field()] kullanabilir.
- Örneğin, üst kaynağın (if koşulunda) eşleşen ilgili kaynakla aynı kaynak konumda 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 Makineleri değerlendirir ve eksik olduğunda denetimler.
{
"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, ilke tanımı aracılığıyla tanımlanan standartlarla eşleşmez ve isteğin başarısız olması durumunda kaynak isteğini önlemek için kullanılır.
Değerlendirmeyi reddet
Bir kaynak grubu modunda eşlene bir kaynak Resource Manager veya güncelleştiriyor, reddetme, isteğin Kaynak Sağlayıcısına gönderilmeden önce engellenmesine neden olur. İstek olarak 403 (Forbidden) döndürülür. Portalda Yasak, dağıtımda ilke ataması tarafından engellen bir durum olarak görüntülenebilirsiniz. Kaynak Sağlayıcısı modu için kaynak sağlayıcısı kaynağın değerlendirmesini yönetir.
Mevcut kaynakların değerlendirilmesi sırasında, reddetme ilkesi tanımıyla eşlenen kaynaklar uyumlu değil olarak işaretlenir.
Özellikleri reddet
Bir Resource Manager modunda reddetme etkisi, ilke tanımının o zaman koşulunda kullanmak için ek özelliklere sahip değildir.
Kaynak Sağlayıcısı modu için Microsoft.Kubernetes.Data reddetme etkisi, ayrıntıların aşağıdaki ek alt özelliklerine sahiptir. Kullanım templateInfo dışı olduğu için yeni veya güncelleştirilmiş ilke constraintTemplate tanımları 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, kısıtlama şablonunun konumunu
urlsağlamak için özelliğiyle eşleştirilmişse. Konumun genel erişime açık olması gerekir.Uyarı
içinde SAS URI'leri veya belirteçleri ya da gizli bir gizli değeri
urlaçığa çıkaran başka bir şey kullanmayın.Base64Encoded ise, temel
content64 kodlanmış kısıtlama şablonunu sağlamak için özelliğiyle eşleştirilmiştir. Mevcut bir Open Policy Agent (OPA) GateKeeper v3 kısıtlama şablonundan özel tanım oluşturmak için bkz. Kısıtlama şablonundan ilke tanımı oluşturma.
- ile
- kısıtlama (isteğe bağlı)
- ile
templateInfokullanılamaz. - Kısıtlama şablonunun CRD uygulaması. değerleriyle geçirilen parametreleri olarak
{{ .Values.<valuename> }}kullanır. Aşağıdaki örnek 2'de bu değerler ve{{ .Values.excludedNamespaces }}{{ .Values.allowedContainerImagesRegex }}değerleridir.
- ile
- 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çermesini sağlar.
- excludedNamespaces (gerekli)
- İlke değerlendirmesinin dışında tutulacak Kubernetes ad alanları dizisi.
- labelSelector (gerekli)
- Sağlanan etiketler ve seçiciler ile eşanan ilke değerlendirmesi için hangi Kubernetes kaynaklarının dahil edekli olduğunu 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çermesini sağlar.
- apiGroups (templateInfo kullanılırken gereklidir)
- Eşleşmesi gereken API gruplarını içeren bir dizi. Boş dizi (
[""]) çekirdek API grubuyken tüm API["*"]gruplarıyla eş değerdir.
- Eşleşmesi gereken API gruplarını içeren bir dizi. Boş dizi (
- kinds (templateInfo kullanırken gereklidir)
- Değerlendirmeyi sınırlandırma için Kubernetes nesnesinin türü içeren bir dizi.
- değerler (isteğe bağlı)
- Kısıtlamaya geçilmesi gereken parametreleri ve değerleri tanımlar. Her değerin Kısıtlama şablonu CRD'sinde mevcut olması gerekir.
- constraintTemplate (kullanım dışı)
- ile
templateInfokullanılamaz. - İlke tanımı
templateInfooluşturulurken veya güncelleştirilken ile değiştir gerekir. - Yeni Kısıtlamaları tanımlayan CustomResourceDefinition (CRD) Kısıtlama şablonu. Şablon Rego mantığını, Kısıtlama şemasını ve bu şemadan değerler aracılığıyla geçirilen Kısıtlama parametrelerini Azure İlkesi. yerine yenisini kullanmak
templateInfoconstraintTemplateönerilir.
- ile
Reddet örneği
Örnek 1: Farklı modlarda reddetme Resource Manager kullanma.
"then": {
"effect": "deny"
}
Örnek 2: Kaynak Sağlayıcısı modu için reddetme etkisini Microsoft.Kubernetes.Data kullanma. details.templateInfo içinde yer alan ek bilgiler PublicURL kullanımını bildirmektedir ve izin verilen kapsayıcı görüntülerini sınırlamak için Kubernetes'te kullanmak üzere Kısıtlama şablonunun url konumunu ayarlar.
"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şılansa bir şablon dağıtımı yürütür.
Not
İç içe şablonlar deployIfNotExists ile de desteklenese de bağlantılı şablonlar şu anda desteklenmiyor.
DeployIfNotExists değerlendirmesi
DeployIfNotExists, Bir Kaynak Sağlayıcısı bir abonelik veya kaynak isteği oluşturma veya güncelleştirme isteğini işledikten sonra yapılandırılabilir bir gecikmeden sonra çalışır ve bir başarı durumu kodu döndürülür. şablon dağıtımı, ilgili kaynak yoksa veya ExistenceCondition tarafından tanımlanan kaynaklar true olarak değerlendirilmezse gerçekleşir. Dağıtımın süresi, şablona dahil edilen kaynakların karmaşıklığına bağlıdır.
Değerlendirme döngüsü sırasında, kaynaklarla eşlenen DeployIfNotExists etkisine sahip ilke tanımları uyumlu değil olarak işaretlenir, ancak bu kaynak üzerinde herhangi bir işlem alınmaz. Mevcut uyumlu olmayan kaynaklar bir düzeltme göreviyle düzeltebilirsiniz.
DeployIfNotExists özellikleri
DeployIfNotExists etkisinin details özelliği, eşlecek ilgili kaynakları ve yürütülecek şablon dağıtımını tanımlayan tüm alt özelliklere sahiptir.
Tür (gerekli)
- Eşleşmesi gereken ilgili kaynağın türünü belirtir.
- İlk olarak if koşulu kaynağının altında bir kaynak getirmeye çalışırken başlar ve ardından if koşulu kaynağıyla aynı kaynak grubu içinde sorgular.
Ad (isteğe bağlı)
- Eşleşmesi gereken kaynağın tam adını belirtir ve ilkenin belirtilen türe sahip tüm kaynaklar yerine belirli bir kaynağı getirmesini sağlar.
- if.field.type ve then.details.type için koşul değerleri eşleşirse, Ad gerekli hale gelir ve bir alt kaynak için veya olması
[field('name')][field('fullName')]gerekir.
ResourceGroupName (isteğe bağlı)
- İlgili kaynağın eşleşmenin farklı bir kaynak grubundan gelmelerini sağlar.
- Tür, if koşulu kaynağının altında yer alan bir kaynaksa geçerli değildir.
- Varsayılan, if koşulu kaynağının kaynak grubudur.
- Bir şablon dağıtımı yürütülürse, bu değerin kaynak grubuna dağıtılır.
ExistenceScope (isteğe bağlı)
- İzin verilen değerler Subscription ve ResourceGroup değerleridir.
- Eşleşmek için ilgili kaynağın getirilecek kapsamını ayarlar.
- Tür, if koşulu kaynağının altında yer alan bir kaynaksa geçerli değildir.
- ResourceGroup için, koşul kaynağının kaynak grubu veya ResourceGroupName içinde belirtilen kaynak grubu ile sınırlanır.
- Abonelik için ilgili kaynak için aboneliğin tamamını sorgular. Uygun değerlendirme için atama kapsamı abonelikte veya daha yüksek bir değerde ayar gerekir.
- ResourceGroup varsayılandı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
AfterProvisioning: , , veya ISOAfterProvisioningSuccessAfterProvisioningFailure8601 süresi 0 ile 360 dakika arasında. - AfterProvisioning değerleri, ilke kuralının IF koşulunda değerlendirilen kaynağın sağlama sonucu inceler.
AfterProvisioning, sonuçtan bağımsız olarak sağlama tamamlandıktan sonra çalışır. Sağlama 6 saat daha uzun sürerse, AfterProvisioning değerlendirme 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 sonraki değerlendirme tetikleyicisi olana kadar güncelleştirilmemelerine neden olabilir.
ExistenceCondition (isteğe bağlı)
- Belirtilmezse, türüyle ilgili 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 kaynaklardan herhangi biri true olarak değerlendirilirse, etki karşılar ve dağıtımı tetiklemez.
- If koşulunda yer alan değerlerle eşdeğerliği kontrol etmek için [field()] kullanabilir.
- Örneğin, üst kaynağın (if koşulunda) eşleşen ilgili kaynakla aynı kaynak konumda olduğunu doğrulamak için kullanılabilir.
roleDefinitionIds (gerekli)
- Bu özellik, abonelik tarafından erişilebilen rol tabanlı erişim denetimi rol kimliğiyle eşan bir dize dizisi içermesi gerekir. Daha fazla bilgi için bkz. düzeltme - ilke tanımını yapılandırma.
DeploymentScope (isteğe bağlı)
- İzin verilen değerler Subscription ve ResourceGroup değerleridir.
- Tetiklenen dağıtım türünü ayarlar. Abonelik, abonelik düzeyinde dağıtımı gösterir. ResourceGroup, bir kaynak grubuna dağıtımı gösterir.
- Abonelik düzeyinde dağıtımlar kullanırken Dağıtım'da bir konum özelliği belirtilmelidir.
- ResourceGroup varsayılandır.
Dağıtım (gerekli)
- Bu özellik, PUT API'ye geçirilene kadar tam şablon dağıtımını
Microsoft.Resources/deploymentsiçermesi gerekir. Daha fazla bilgi için bkz. Dağıtımlar REST API. - Birden çok
Microsoft.Resources/deploymentsilke değerlendirmesi arasında tartışmayı önlemek için şablon içinde iç içe geçmiş benzersiz adlar kullanılmalıdır. Üst dağıtımın adı aracılığıyla iç içe geçmiş dağıtım adının bir parçası olarak[concat('NestedDeploymentName-', uniqueString(deployment().name))]kullanılabilir.
Not
Dağıtım özelliği içindeki tüm işlevler, ilke değil şablonun bileşenleri olarak değerlendirilir. Özel durum, değerleri ilkeden şablona ileten parameters özelliğidir. Bu bölümdeki bir şablon parametre adı altındaki değer, bu değeri geçirme işlemini gerçekleştirmek için kullanılır (DeployIfNotExists örneğinde fullDbName bölümüne bakın).
- Bu özellik, PUT API'ye geçirilene kadar tam şablon dağıtımını
DeployIfNotExists örneği
Örnek: transparentDataEncryption SQL Server olup olmadığını belirlemek için veritabanlarını değerlendirir. Yoksa, etkinleştirilen 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 parametreli hale getirildikleri 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 hale sağlar.
Devre dışı etkisine alternatif olarak, ilke ataması üzerinde ayarlanmış enforcementMode vardır. enforcementMode Devre Dışı olduğunda kaynaklar hala değerlendirilir. Etkinlik günlükleri ve ilke etkisi gibi günlükler oluşmaz. Daha fazla bilgi için bkz. ilke ataması - zorlama modu.
EnforceOPAConstraint
Bu etki, ilke tanımı moduyla Microsoft.Kubernetes.Data kullanılır. OPA Constraint Framework ile tanımlanan Gatekeeper v3 erişim denetim kurallarını Azure'daki Kubernetes kümelere (OPA) açmak için kullanılır.
Önemli
EnforceOPAConstraint etkisine sahip sınırlı önizleme ilkesi tanımları ve ilgili Kubernetes Service kategorisi kullanım dışıdır. Bunun yerine, Kaynak Sağlayıcısı moduyla denetim ve reddetme etkilerini Microsoft.Kubernetes.Data kullanın.
EnforceOPAConstraint değerlendirmesi
Open Policy Agent erişim denetleyicisi, kümede yeni istekleri gerçek zamanlı olarak değerlendirir. Her 15 dakikada bir kümenin tam taraması tamamlanır ve sonuçlar kümeye Azure İlkesi.
EnforceOPAConstraint özellikleri
EnforceOPAConstraint etkisinin details özelliği, Gatekeeper v3 erişim denetimi kuralını açıklayan alt özelliklere sahiptir.
- constraintTemplate (gerekli)
- Yeni Kısıtlamaları tanımlayan CustomResourceDefinition (CRD) Kısıtlama şablonu. Şablon Rego mantığını, Kısıtlama şemasını ve bu şemadan değerler aracılığıyla geçirilen Kısıtlama parametrelerini Azure İlkesi.
- kısıtlama (gerekli)
- Kısıtlama şablonunun CRD uygulaması. değerleriyle geçirilen parametreleri olarak
{{ .Values.<valuename> }}kullanır. Aşağıdaki örnekte bu değerler ve{{ .Values.cpuLimit }}{{ .Values.memoryLimit }}değerleridir.
- Kısıtlama şablonunun CRD uygulaması. değerleriyle geçirilen parametreleri olarak
- değerler (isteğe bağlı)
- Kısıtlamaya geçilmesi gereken parametreleri ve değerleri tanımlar. Her değerin Kısıtlama şablonu CRD'sinde mevcut olması gerekir.
EnforceOPAConstraint örneği
Örnek: Kubernetes içindeki kapsayıcı CPU ve bellek kaynak sınırlarını ayarlamak için ağ geçidi denetleyicisi v3 giriş denetim kuralı.
"if": {
"allOf": [
{
"field": "type",
"in": [
"Microsoft.ContainerService/managedClusters",
"AKS Engine"
]
},
{
"field": "location",
"equals": "westus2"
}
]
},
"then": {
"effect": "enforceOPAConstraint",
"details": {
"constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/template.yaml",
"constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/constraint.yaml",
"values": {
"cpuLimit": "[parameters('cpuLimit')]",
"memoryLimit": "[parameters('memoryLimit')]"
}
}
}
EnforceRegoPolicy
Bu efekt, ilke tanımı moduyla birlikte kullanılır Microsoft.ContainerService.Data . Azure Kubernetes hizmetinde ilke aracısını (Opa) açmak için rego ile tanımlanan Gatekeeper v2 giriş denetimi kurallarını geçirmek için kullanılır.
Önemli
Enforceregopolicy efektli sınırlı önizleme ilkesi tanımları ve Ilgili Kubernetes hizmet kategorisi kullanım dışıdır. Bunun yerine, efekt denetimi ve kaynak sağlayıcısı ile reddetme modunu kullanın Microsoft.Kubernetes.Data .
EnforceRegoPolicy değerlendirmesi
Açık Ilke Aracısı giriş denetleyicisi, kümede bulunan yeni istekleri gerçek zamanlı olarak değerlendirir. 15 dakikada bir, küme için tam tarama tamamlanır ve sonuçlar Azure Ilkesine bildirilir.
EnforceRegoPolicy özellikleri
EnforceRegoPolicy efektinin Details özelliği, Gatekeeper v2 giriş denetimi kuralını tanımlayan alt özellikler içerir.
- PolicyId (gerekli)
- Rego giriş denetimi kuralına parametre olarak geçirilen benzersiz bir ad.
- ilke (gerekli)
- Rego giriş denetimi kuralının URI 'sini belirtir.
- policyParameters (isteğe bağlı)
- Rego ilkesine geçirilecek parametreleri ve değerleri tanımlar.
EnforceRegoPolicy örneği
Örnek: Gatekeeper v2 giriş denetimi kuralı, AKS içinde yalnızca belirtilen kapsayıcı görüntülerine izin verir.
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.ContainerService/managedClusters"
},
{
"field": "location",
"equals": "westus2"
}
]
},
"then": {
"effect": "EnforceRegoPolicy",
"details": {
"policyId": "ContainerAllowedImages",
"policy": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/KubernetesService/container-allowed-images/limited-preview/gatekeeperpolicy.rego",
"policyParameters": {
"allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]"
}
}
}
Değiştir
Değişiklik, oluşturma veya güncelleştirme sırasında bir abonelik veya kaynağa özellikler veya Etiketler eklemek, güncelleştirmek veya kaldırmak için kullanılır. Ortak bir örnek, costCenter gibi kaynaklardaki etiketleri güncelleştirmedir. Mevcut uyumlu olmayan kaynaklar bir Düzeltme göreviyledüzeltilebilir. Tek bir değiştirme kuralında herhangi bir sayıda işlem olabilir.
Aşağıdaki işlemler değiştirme tarafından desteklenir:
- Kaynak etiketlerini ekleyin, değiştirin veya kaldırın. Etiketler için,
modehedef kaynak bir kaynak grubu değilse, bir değiştirme Ilkesi dizinli olarak ayarlanmalıdır. identity.typeSanal makineler ve sanal makine ölçek kümelerinin yönetilen kimlik türü () değerini ekleyin veya değiştirin.- Belirli diğer adların değerlerini ekleyin veya değiştirin.
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }komutunu kullanma Azure PowerShell 4.6.0 veya üzeri sürümlerde, değiştirme ile kullanılabilecek diğer adların bir listesini alın.
Önemli
Etiketleri yönetiyorsanız, değişiklik olarak ekle yerine Değiştir kullanılması önerilir, ek işlem türleri ve mevcut kaynakları düzeltme olanağı sağlar. Ancak, yönetilen bir kimlik oluşturmadıysanız veya değiştirme henüz kaynak özelliği için diğer adı desteklemiyorsa, ekleme önerilir.
Değerlendirmeyi Değiştir
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ştirme işlemleri, istek içeriğine uygulanır. Her değiştirme işlemi, ne zaman uygulanacağını belirleyen bir koşul belirtebilir. False olarak değerlendirilen koşullara sahip işlemler atlanır.
Bir diğer ad belirtildiğinde, değiştirme işleminin istek içeriğini kaynak sağlayıcının reddetmesine neden olacak şekilde değiştirmemesini sağlamak için aşağıdaki ek denetimler gerçekleştirilir:
- Diğer adın eşlendiği özelliği 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 özelliğin beklenen belirteç türüyle eşleşiyor.
Bu denetimlerden biri başarısız olursa, ilke değerlendirmesi belirtilen conflictEffect geri döner.
Önemli
Diğer adları içeren tanımların değiştirilmesi, eşlenen özelliğin ' değiştirilebilir ' olmadığı API sürümlerini kullanarak başarısız istekleri önlemek için Denetim Çakışma efektini kullanır. Aynı diğer ad API sürümleri arasında farklı davrandığı takdirde, koşullu değiştirme işlemleri her bir API sürümü için kullanılan değiştirme işlemini tespit etmek için kullanılabilir.
Değişiklik efektini kullanan bir ilke tanımı, değerlendirme döngüsünün bir parçası olarak çalıştırıldığında, zaten mevcut olan kaynaklarda değişiklik yapmaz. Bunun yerine, IF koşulunu uyumlu değil olarak karşılayan herhangi bir kaynağı işaretler.
Özellikleri Değiştir
Değişiklik efektinin Ayrıntılar ö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 özellikleri içerir.
- Roledefinitionıds (gerekli)
- Bu özellik, abonelik tarafından erişilebilen rol tabanlı erişim denetimi rol KIMLIĞIYLE eşleşen bir dize dizisi içermelidir. Daha fazla bilgi için bkz. Düzeltme-ilke tanımını yapılandırma.
- Tanımlanan rol, katkıda bulunan rolüne verilen tüm işlemleri içermelidir.
- 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ışmazsa, "wins" ilke tanımını belirler.
- Yeni veya güncelleştirilmiş kaynaklar için, reddetme ile ilke tanımı öncelik kazanır. Denetim tüm işlemleri atlayarak ilke tanımları. Birden fazla ilke tanımı reddederse, istek çakışma olarak reddedilir. Tüm ilke tanımlarında Denetim varsa, çakışan ilke tanımlarının işlemlerinden hiçbiri işlenir.
- Mevcut kaynaklar için, birden fazla ilke tanımı reddederse, uyumluluk durumu Çakışma olur. Bir veya daha az ilke tanımı reddederse, her atama uyumlu olmayan bir uyumluluk durumu döndürür.
- Kullanılabilir değerler: Denetim, reddetme, devre dışı.
- Varsayılan değer reddedildi.
- Birden fazla ilke tanımı aynı özelliği değiştirirse veya değiştirme işlemi belirtilen diğer ad üzerinde çalışmazsa, "wins" ilke tanımını belirler.
- 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 yapılacağını tanımlar. Seçenekler şunlardır: Addorreplace, Add, Remove. Ekleme efektine benzer şekilde davranır.
- alan (gerekli)
- Eklenecek, değiştirilecek veya kaldırılacak etiket. Etiket adları diğer alanlariçin aynı adlandırma kuralına uymalıdır.
- değer (isteğe bağlı)
- Etiketi ayarlanacak değer.
- Işlem addorreplace veya Add ise bu özellik gereklidir.
- koşul (isteğe bağlı)
- Doğru veya yanlış olarak değerlendirilen ilke işlevleriyle bir Azure ilke dili ifadesi içeren bir dize.
- Aşağıdaki Ilke işlevlerini desteklemez:
field(),resourceGroup(),subscription().
- işlem (gerekli)
İşlemleri değiştirme
Operations özelliği dizisi, birkaç etiketi tek bir ilke tanımından farklı şekillerde değiştirmeyi 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ştirilmekte olduğunu belirler ve değer bu etiketin yeni ayarını tanımlar. Aşağıdaki örnekte aşağıdaki etiket değişiklikleri yapılır:
environmentEtiketi, farklı bir değerle zaten mevcut olsa bile "test" olarak ayarlar.- Etiketi kaldırır
TempResource. - Etiketi,
Deptilke atamasında yapılandırılan deptname ilke parametresi olarak 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 farklı bir değerle zaten var olsa bile, tanımlı özelliği veya etiketi ve değeri kaynağa ekler. |
| Ekle | Kaynağa tanımlı özelliği veya etiketi ve değeri ekler. |
| Kaldır | Kaynaktaki tanımlı özelliği veya etiketi kaldırır. |
Örnekleri Değiştir
Örnek 1: etiketi ekleyin environment ve var olan 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 environment etiketi ekleyin ya da varolan 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 ortak erişimine izin vermediğinden, değiştirme işleminin yalnızca API sürümü daha büyük veya ' 2019-04-01 ' değerine eşit olan istekler değerlendirilirken uygulanmasını sağlayın:
"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 çeşitli atamalardan etkilenebilir. Bu atamalar aynı kapsamda veya farklı kapsamlarda olabilir. Bu atamaların her biri büyük olasılıkla farklı bir etki tanımlanmıştır. Her ilkenin koşulu ve etkisi bağımsız olarak değerlendirilir. Örnek:
- İlke 1
- Kaynak konumunu 'westus' ile kısıtlar
- A aboneliğine atanmış
- Reddetme etkisi
- İlke 2
- Kaynak konumunu 'eastus' ile kısıtlar
- A aboneliğinde B kaynak grubuna atanmış
- Denetim etkisi
Bu kurulum aşağıdaki sonuca neden olur:
- 'eastus' kaynak grubu B'de zaten olan tüm kaynaklar ilke 2 ile uyumludur ve ilke 1 ile uyumlu değildir
- 'eastus' içinde yer alan B kaynak grubunda yer alan tüm kaynaklar, 'westus' içinde yer alan ilke 2 ile uyumlu değil ve ilke 1 ile uyumlu değil
- A aboneliğinde 'westus' değil tüm yeni kaynaklar ilke 1 tarafından reddedilir
- A aboneliğinde ve 'westus' içinde B kaynak grubunda yer alan tüm yeni kaynaklar, ilke 2'de oluşturulur ve uyumlu değildir
Hem ilke 1 hem de ilke 2'nin reddetme etkisi varsa, durum şöyle değişir:
- B kaynak grubunda zaten 'eastus' olmayan tüm kaynaklar ilke 2 ile uyumlu değil
- 'westus' kaynak grubunda yer alan B kaynak grubu 1 ile uyumlu değil
- A aboneliğinde 'westus' değil tüm yeni kaynaklar ilke 1 tarafından reddedilir
- A aboneliğinin B kaynak grubunda yer alan tüm yeni kaynaklar reddedilir
Her atama ayrı ayrı değerlendirilir. Bu nedenle, bir kaynağın kapsam farklarından kaçması için bir fırsat yok. 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, çakışan ve çakışan ilke tanımları bir kaynağı engelleyebilir. Kaynağın hedef kapsamda yine de oluşturulacak olması gerekirse, doğru ilke atamaların doğru kapsamları etkilediğini doğrulamak için her atamada dışlamaları gözden geçirebilirsiniz.
Sonraki adımlar
- Örneklerde örnekleri Azure İlkesi gözden geçirme.
- Azure İlkesi tanımı yapısını gözden geçirin.
- Program aracılığıyla ilke oluşturma hakkında bilgi.
- Uyumluluk verilerini nasıl edinebilirsiniz?
- Uyumlu olmayan kaynakları düzeltmeyi öğrenin.
- Kaynaklarınızı Azure yönetim gruplarıyla düzenleme ile bir yönetim grubunun ne olduğunu gözden geçirme.