Azure İlkesi atama yapısı

İlke atamaları, hangi ilkelerin veya girişimlerin atandığı Azure İlkesi tarafından kullanılır. İlke 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.

Not

Azure İlkesi kapsamı hakkında daha fazla bilgi için bkz. Azure İlkesi'da kapsamı anlama.

İ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 dinamik parametrelerle DoNotEnforce modunda bir ilke atamasını gösterir:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "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": []
    }
}

Tüm Azure İlkesi örnekleri Azure İlkesi örneklerdedir.

Görünen ad ve açıklama

İlke atamasını tanımlamak ve belirli kaynak kümesiyle kullanımı için bağlam sağlamak için displayName ve description kullanırsınız. displayName en fazla 128 karakter uzunluğundadır ve açıklama 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.

  • 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}"
        }
    }
    
  • 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.

  • 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 belirtimler için geçerli olan 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ı değiştirmeniz gerekir. Aşağıdaki örnekte, SDPRegions seçicisine iki Azure bölgesi daha eklenerek ilke atamamız gösterilmektedir. Bu örnekte, SDP'nin Dağıtım Uygulaması'Kasa 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 seçici 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 kaynak seçici 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 için en yaygın 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 'denetim' etkisi, aşağıdaki örnekte gösterildiği gibi girişim atamasında bir geçersiz kılma yoluyla 'devre dışı' ile değiştirilebilir:

{
    "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 aşağıdaki özelliklere sahiptir:

  • kind: Atamanın geçersiz kılacağı özellik. Desteklenen tür: policyEffect.

  • value: Mevcut değeri geçersiz kılan yeni değer. Desteklenen değerler efektlerdir.

  • 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ı daraltacağını açıklayan seçicinin özelliği. için kind: policyEffect izin verilen değer:

      • policyDefinitionReferenceId: Bu, bir girişim ataması içindeki hangi ilke tanımlarının etki geçersiz kılma üzerinde alınması gerektiğini belirtir.
    • 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.

Bir geçersiz kılmanın, policyDefinitionReferenceId dizisinde birden çok değer belirterek birçok ilkenin etkisini değiştirmek için kullanılabileceğini unutmayın. En fazla 50 policyDefinitionReferenceIds için tek bir geçersiz kılma kullanılabilir ve tek bir ilke ataması, belirtildikleri sırada 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

enforcementMode özelliği, müşterilere ilke etkisini başlatmadan veya Azure Etkinlik günlüğündeki girişleri tetiklemeden mevcut kaynaklardaki 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ışı efektinden 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.

enforcementMode bir ilke veya girişim tanımında belirtilmezse Default değeri kullanılır. EnforcementMode DoNotEnforce olarak ayarlandığında bile deployIfNotExists ilkeleri için düzeltme görevleri 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, notScopes ayarlanarak her bir kaynak değerlendirmenin 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.

İlke tanımı kimliği

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. Genellikle birden çok ilkenin birlikte atandığı takdirde bunun yerine bir girişim kullanılması önerilir.

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 . Ayrıntılar 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

deployIfNotExist veya modifiye etmek üzere ayarlanmış ilke atamaları için uyumlu olmayan kaynaklarda düzeltme yapmak için bir kimlik özelliğine sahip olması gerekir. Kimlik kullanırken, 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/testResourceGroup/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.