Aracılığıyla paylaş


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:

Ö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. displayNameen 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 metadatayararlı 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ğiparameterScopes, 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 olan manual 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çicide resourceWithoutLocationkullanı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 desteklemektedir subscriptionLevelResources. ile aynı kaynak seçicide resourceLocationkullanılamaz.

    • in: Belirtilen kindiçin izin verilen değerlerin listesi. ile notInkullanılamaz. En fazla 50 değer içerebilir.

    • notIn: Belirtilen kindiçin izin verilmeyen değerlerin listesi. ile inkullanılamaz. En fazla 50 değer içerebilir.

Kaynak seçici birden çok selectorsiç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 auditolduğ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'dir policyEffect policyVersion.

  • value: Mevcut değeri geçersiz kılan yeni değer. için kind: policyEffectdesteklenen değerler efektlerdir. için kind: policyVersion, desteklenen sürüm numarası atamada belirtilenden büyük veya buna eşit definitionVersion 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çin kind: policyEffectizin 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çicide resourceWithoutLocationkullanılamaz.

      için kind: policyVersionizin verilen değer:

      • resourceLocation: Bu özellik, kaynakları türlerine göre seçmek için kullanılır. ile aynı kaynak seçicide resourceWithoutLocationkullanılamaz.
    • in: Belirtilen kindiçin izin verilen değerlerin listesi. ile notInkullanılamaz. En fazla 50 değer içerebilir.

    • notIn: Belirtilen kindiçin izin verilmeyen değerlerin listesi. ile inkullanı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 policyDefinitionReferenceIdiç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 notScopesdeğ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 modifyolarak 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.