Azure İlkesi atama yapısı
İlke atamaları, bir ilke tanımı veya girişimi tarafından değerlendirilen kaynakları tanımlar. Ayrıca, ilke ataması atama zamanında bu kaynak grubu için parametrelerin değerlerini belirleyebilir ve bu da aynı kaynak özelliklerine yönelik ilke tanımlarının farklı uyumluluk gereksinimleriyle yeniden kullanılmasını mümkün hale getirir.
İlke ataması oluşturmak için JavaScript Nesne Gösterimi (JSON) kullanırsınız. İlke ataması şu öğeler içerir:
- kapsam
- ilke tanımı kimliği ve sürümü
- görünen ad
- Açıklama
- meta veriler
- kaynak seçicileri
- Geçersiz kılınır
- zorlama modu
- hariç tutulan kapsamlar
- uyumsuzluk iletileri
- parametreler
- kimlik
Örneğin, aşağıdaki JSON, DoNotEnforce modunda parametrelerle örnek bir ilke atama isteği gösterir:
{
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "1.*.*",
"metadata": {
"assignedBy": "Cloud Center of Excellence"
},
"enforcementMode": "DoNotEnforce",
"notScopes": [],
"policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
"nonComplianceMessages": [
{
"message": "Resource names must start with 'DeptA' and end with '-LC'."
}
],
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
},
"identity": {
"type": "SystemAssigned"
},
"resourceSelectors": [],
"overrides": []
}
}
Kapsam
Atama kaynağı oluşturma zamanı için kullanılan kapsam, kaynak uygulanabilirliğinin birincil sürücüsüdür. Atama kapsamı hakkında daha fazla bilgi için bkz. Azure İlkesi'da kapsamı anlama.
İlke tanımı kimliği ve sürümü (önizleme)
Bu alan, bir ilke tanımının veya girişim tanımının tam yol adı olmalıdır. policyDefinitionId
bir dizedir ve dizi değildir. Atanan ilke tanımının veya girişimin en son içeriği, ilke ataması her değerlendirildiğinde alınır. Öneri, genellikle birden çok ilkenin birlikte atandığı takdirde bunun yerine bir girişimin kullanılmasıdır.
Yerleşik tanımlar ve girişimler için, hangi tanımları değerlendirebileceğinizi kullanabilirsiniz definitionVersion
. Varsayılan olarak, sürüm en son ana sürüme ayarlanır ve en son ikincil ve düzeltme eki değişiklikleri otomatik olarak ayarlanır.
- Tanımın küçük değişikliklerini otomatik olarak ayarlamak için sürüm numarası olacaktır
#.*.*
. Joker karakter, otomatik güncelleştirmeleri temsil eder. - İkincil sürüm yoluna sabitlemek için sürüm biçimi olacaktır
#.#.*
. - Tüm düzeltme eki değişiklikleri güvenlik amacıyla otomatik olarak eklenmelidir. Düzeltme eki değişiklikleri metin değişiklikleri ve kesme camı senaryolarıyla sınırlıdır.
Görünen ad ve açıklama
displayName
İlke atamasını tanımlamak ve belirli bir kaynak kümesiyle kullanımı için bağlam sağlamak için ve description
kullanırsınız. displayName
en fazla 128 karakter uzunluğunda ve description
en fazla 512 karakter uzunluğundadır.
Meta veri
İsteğe bağlı metadata
özellik, ilke ataması hakkındaki bilgileri depolar. Müşteriler içindeki kuruluşlarında metadata
yararlı olan tüm özellikleri ve değerleri tanımlayabilir. Ancak, Azure İlkesi tarafından kullanılan bazı ortak özellikler vardır. Her metadata
özelliğin sınırı 1.024 karakterdir.
Ortak meta veri özellikleri
assignedBy
(dize): Atamayı oluşturan güvenlik sorumlusunun kolay adı.createdBy
(dize): Atamayı oluşturan güvenlik sorumlusunun GUID değeri.createdOn
(dize): Atama oluşturma zamanının Evrensel ISO 8601 DateTime biçimi.updatedBy
(dize): Varsa, atamayı güncelleştiren güvenlik sorumlusunun kolay adı.updatedOn
(dize): Varsa, atama güncelleştirme zamanının Evrensel ISO 8601 DateTime biçimi.
Senaryoya özgü meta veri özellikleri
parameterScopes
(nesne): Anahtarın strongType yapılandırılmış parametre adıyla eşleştiği ve değerin strongType ile eşleşen kullanılabilir kaynakların listesini sağlamak için Portal'da kullanılan kaynak kapsamını tanımladığı anahtar-değer çiftleri koleksiyonu. Portal, kapsam atama kapsamından farklıysa bu değeri ayarlar. Ayarlanırsa, portalda ilke atamasının düzenlenmesi parametrenin kapsamını otomatik olarak bu değere ayarlar. Ancak kapsam değere kilitlenmez ve başka bir kapsama değiştirilebilir.Aşağıdaki örneği
parameterScopes
, atama portalda düzenlendiğinde kaynak seçimi için bir kapsam ayarlayan adlıbackupPolicyId
strongType parametresine yöneliktir."metadata": { "parameterScopes": { "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}" } }
evidenceStorages
(nesne): Bir etkisi olanmanual
ilke atamalarına kanıtlama kanıtı tutmak için kullanılması gereken önerilen varsayılan depolama hesabı.displayName
özelliği, depolama hesabının adıdır.evidenceStorageAccountID
özelliği, depolama hesabının kaynak kimliğidir.evidenceBlobContainer
özelliği, kanıtı depolamayı planladığınız blob kapsayıcı adıdır.{ "properties": { "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.", "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}", "metadata": { "evidenceStorages": [ { "displayName": "Default evidence storage", "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}", "evidenceBlobContainer": "evidence-container" } ] } } }
Kaynak seçiciler
İsteğe bağlı resourceSelectors
özellik, kaynak konumu, kaynak türü veya kaynağın konumu olup olmadığı gibi faktörlere göre ilke atamalarını aşamalı olarak dağıtmanıza olanak tanıyarak güvenli dağıtım uygulamalarını (SDP) kolaylaştırır. Kaynak seçiciler kullanıldığında, Azure İlkesi yalnızca kaynak seçicilerde yapılan belirtimlere uygun kaynakları değerlendirir. Kaynak seçiciler, muafiyet kapsamını aynı şekilde daraltmak için de kullanılabilir.
Aşağıdaki örnek senaryoda, yeni ilke ataması yalnızca kaynağın konumu Doğu ABD veya Batı ABD ise değerlendirilir.
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [
"eastus",
"westus"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
İlkenizin değerlendirme kapsamını genişletmeye hazır olduğunuzda, atamayı güncelleştirmeniz gerekir. Aşağıdaki örnekte, SDPRegions seçicisine iki Azure bölgesi daha eklenerek ilke atamamız gösterilmektedir. Bu örnekte, SDP'nin Güvenli Dağıtım Uygulaması anlamına geldiğini unutmayın:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [
"eastus",
"westus",
"centralus",
"southcentralus"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Kaynak seçiciler aşağıdaki özelliklere sahiptir:
name
: Kaynak seçicinin adı.selectors
: (İsteğe bağlı) İlke ataması için geçerli olan kaynakların hangi alt kümesinin uyumluluk açısından değerlendirilmesi gerektiğini belirlemek için kullanılan özellik.kind
: Hangi özelliğin değerlendirilen kaynak kümesini daralttığını açıklayan seçicinin özelliği. Her tür tek bir kaynak seçicide yalnızca bir kez kullanılabilir. İzin verilen değerler şunlardır:resourceLocation
: Bu özellik, kaynakları türlerine göre seçmek için kullanılır. ile aynı kaynak seçicideresourceWithoutLocation
kullanılamaz.resourceType
: Bu özellik, kaynakları türlerine göre seçmek için kullanılır.resourceWithoutLocation
: Bu özellik, konumu olmayan abonelik düzeyindeki kaynakları seçmek için kullanılır. Şu anda yalnızca desteklemektedirsubscriptionLevelResources
. ile aynı kaynak seçicideresourceLocation
kullanılamaz.
in
: Belirtilenkind
için izin verilen değerlerin listesi. ilenotIn
kullanılamaz. En fazla 50 değer içerebilir.notIn
: Belirtilenkind
için izin verilmeyen değerlerin listesi. ilein
kullanılamaz. En fazla 50 değer içerebilir.
Kaynak seçici birden çok selectors
içerebilir. Kaynak seçiciye uygulanabilmesi için kaynağın tüm seçicileri tarafından belirtilen gereksinimleri karşılaması gerekir. Ayrıca, tek bir atamada en fazla 10 resourceSelectors
belirtilebilir. Kapsam içi kaynaklar, bu kaynak seçicilerden herhangi birini karşıladığında değerlendirilir.
Geçersiz Kılmalar
İsteğe bağlı overrides
özellik, temel ilke tanımını değiştirmeden veya ilke tanımında parametreli bir efekt kullanmadan ilke tanımının etkisini değiştirmenize olanak tanır.
Geçersiz kılmaların etkili olması için yaygın bir kullanım örneği, çok sayıda ilişkili ilke tanımına sahip ilke girişimleridir. Bu durumda, birden çok ilke etkisini yönetmek, özellikle de etkinin zaman zaman güncelleştirilmesi gerektiğinde önemli bir yönetim çabası tüketebilir. Geçersiz kılmalar, girişim içindeki birden çok ilke tanımının etkilerini aynı anda güncelleştirmek için kullanılabilir.
Şimdi bir örneğe göz atalım. CorpVMSizePolicy ile policyDefinitionReferenceId
özel bir ilke tanımı ve tek bir etkisi içeren CostManagement adlı bir ilke girişiminiz audit
olduğunu düşünün. CostManagement girişimini atamak istediğinizi ancak bu ilke için uyumluluk bildirimini görmek istemediğinizi varsayalım. Bu ilkenin audit
etkisi, aşağıdaki örnekte gösterildiği gibi girişim atamasında bir geçersiz kılma yoluyla değiştirilebilir disabled
:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
"overrides": [
{
"kind": "policyEffect",
"value": "disabled",
"selectors": [
{
"kind": "policyDefinitionReferenceId",
"in": [
"corpVMSizePolicy"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
"type": "Microsoft.Authorization/policyAssignments",
"name": "CostManagement"
}
Geçersiz kılmalar için bir diğer yaygın kullanım örneği de tanımın yeni bir sürümünü kullanıma sunmadır. Atama sürümünü güvenli bir şekilde güncelleştirmeyle ilgili önerilen adımlar için bkz . İlke Güvenli dağıtım.
Geçersiz kılmalar aşağıdaki özelliklere sahiptir:
kind
: Atamanın geçersiz k olduğu özellik. Desteklenen türleri ve'dirpolicyEffect
policyVersion
.value
: Mevcut değeri geçersiz kılan yeni değer. içinkind: policyEffect
desteklenen değerler efektlerdir. içinkind: policyVersion
, desteklenen sürüm numarası atamada belirtilenden büyük veya buna eşitdefinitionVersion
olmalıdır.selectors
: (İsteğe bağlı) geçersiz kılmada ilke atamasının hangi kapsamı alması gerektiğini belirlemek için kullanılan özellik.kind
: Hangi özelliğin geçersiz kılma kapsamını daralttığını açıklayan seçicinin özelliği. içinkind: policyEffect
izin verilen değerler:policyDefinitionReferenceId
: Bu özellik, bir girişim ataması içindeki hangi ilke tanımlarının etki geçersiz kılma üzerinde alınması gerektiğini belirtir.resourceLocation
: Bu özellik, kaynakları türlerine göre seçmek için kullanılır. ile aynı kaynak seçicideresourceWithoutLocation
kullanılamaz.
için
kind: policyVersion
izin verilen değer:resourceLocation
: Bu özellik, kaynakları türlerine göre seçmek için kullanılır. ile aynı kaynak seçicideresourceWithoutLocation
kullanılamaz.
in
: Belirtilenkind
için izin verilen değerlerin listesi. ilenotIn
kullanılamaz. En fazla 50 değer içerebilir.notIn
: Belirtilenkind
için izin verilmeyen değerlerin listesi. ilein
kullanılamaz. En fazla 50 değer içerebilir.
Dizide birden çok değer policyDefinitionReferenceId
belirterek birçok ilkenin etkisini değiştirmek için tek bir geçersiz kılma kullanılabilir. Tek bir geçersiz kılma en fazla 50 policyDefinitionReferenceId
için kullanılabilir ve tek bir ilke ataması, belirtildikleri sırayla değerlendirilen en fazla 10 geçersiz kılma içerebilir. Atama oluşturulmadan önce, geçersiz kılmada seçilen etki ilke kuralına ve parametre izin verilen değer listesine göre doğrulanır (efektin parametreleştirildiği durumlarda).
Zorlama modu
özelliği, enforcementMode
müşterilere ilke etkisini başlatmadan veya Azure Etkinlik günlüğündeki girişleri tetiklemeden mevcut kaynaklar üzerinde bir ilkenin sonucunu test etme olanağı sağlar.
Bu senaryo genellikle What If olarak adlandırılır ve güvenli dağıtım uygulamalarıyla uyumlu hale gelir. enforcementMode
, Devre dışı etkisinden farklıdır, bu etki kaynak değerlendirmesinin gerçekleşmesini engeller.
Bu özellik, aşağıdaki değerlere sahiptir:
Mod | JSON Değeri | Tür | El ile düzeltme | Etkinlik günlüğü girdisi | Description |
---|---|---|---|---|---|
Etkin | Varsayılan | string | Yes | Yes | İlke etkisi, kaynak oluşturma veya güncelleştirme sırasında zorlanır. |
Devre dışı | DoNotEnforce | string | Yes | Hayır | İlke etkisi, kaynak oluşturma veya güncelleştirme sırasında zorlanmaz. |
İlke veya girişim tanımında belirtilmezse enforcementMode
Varsayılan değeri kullanılır. Düzeltme görevleri, DoNotEnforce olarak ayarlandığında bile enforcementMode
deployIfNotExists ilkeleri için başlatılabilir.
Dışlanan kapsamlar
Atamanın kapsamı tüm alt kaynak kapsayıcılarını ve alt kaynakları içerir. Bir alt kaynak kapsayıcısının veya alt kaynağın tanımı uygulanmaması gerekiyorsa, her bir değeri ayarlanarak notScopes
değerlendirme dışında tutulabilir. Bu özellik, bir veya daha fazla kaynak kapsayıcısını veya kaynağı değerlendirmeden dışlamak için bir dizidir. notScopes
ilk atama oluşturulduktan sonra eklenebilir veya güncelleştirilebilir.
Not
Dışlanan kaynak, muaf tutulan kaynaktan farklıdır. Daha fazla bilgi için bkz. Azure İlkesi'nde kapsamı anlama.
Uyumsuzluk iletileri
Kaynağın ilke veya girişim tanımıyla neden uyumlu olmadığını açıklayan özel bir ileti ayarlamak için atama tanımında ayarlayın nonComplianceMessages
. Bu düğüm bir girdi dizisidir message
. Bu özel ileti, uyumsuzluk için varsayılan hata iletisine ek olarak isteğe bağlıdır.
Önemli
Uyumsuzluğa yönelik özel iletiler yalnızca Resource Manager mod tanımlarıyla tanımlarda veya girişimlerde desteklenir.
"nonComplianceMessages": [
{
"message": "Default message"
}
]
Atama bir girişime yönelikse girişimdeki her ilke tanımı için farklı iletiler yapılandırılabilir. İletiler girişim tanımında yapılandırılan değeri kullanır policyDefinitionReferenceId
. Daha fazla bilgi için bkz . ilke tanımları özellikleri.
"nonComplianceMessages": [
{
"message": "Default message"
},
{
"message": "Message for just this policy definition by reference ID",
"policyDefinitionReferenceId": "10420126870854049575"
}
]
Parametreler
İlke atamasının bu kesimi, ilke tanımında veya girişim tanımında tanımlanan parametrelerin değerlerini sağlar. Bu tasarım, ilke veya girişim tanımını farklı kaynaklarla yeniden kullanabilmeyi, ancak farklı iş değerlerini veya sonuçlarını denetlemeyi mümkün kılar.
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
}
Bu örnekte, ilke tanımında daha önce tanımlanan parametreler ve suffix
şeklindedirprefix
. Bu özel ilke ataması DeptA ve -LC olarak ayarlar prefix
.suffix
Aynı ilke tanımı, farklı bir departman için farklı bir parametre kümesiyle yeniden kullanılabilir ve esneklik sağlarken ilke tanımlarının yinelemesini ve karmaşıklığını azaltır.
Kimlik
veya modify
olarak ayarlanmış deployIfNotExists
ilke atamaları için, uyumlu olmayan kaynaklarda düzeltme yapmak için bir kimlik özelliğine sahip olmak gerekir. Atama bir kimlik kullandığında, kullanıcının atama için bir konum da belirtmesi gerekir.
Not
Tek bir ilke ataması yalnızca bir sistem veya kullanıcı tarafından atanan yönetilen kimlikle ilişkilendirilebilir. Ancak, gerekirse bu kimliğe birden fazla rol atanabilir.
# System-assigned identity
"identity": {
"type": "SystemAssigned"
}
# User-assigned identity
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/SubscriptionID/resourceGroups/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
}
},
Sonraki adımlar
- İlke tanımı yapısı hakkında bilgi edinin.
- Program aracılığıyla ilkelerin nasıl oluşturulacağını anlama.
- Uyumluluk verilerini almayı öğrenin.
- Uyumlu olmayan kaynakları düzeltmeyi öğrenin.
- Kaynaklarınızı Azure yönetim gruplarıyla düzenleme ile yönetim grubunun ne olduğunu gözden geçirin.