Azure İlkesi tanım yapısı parametreleri

Parametreler, ilke tanımlarının sayısını azaltarak ilke yönetiminizi basitleştirmeye yardımcı olur. Formdaki alanlar gibi parametreleri düşünün: name, address, city, state. Bu parametreler her zaman aynı kalır, ancak değerleri formu dolduran kişiye göre değişir. İlke oluştururken parametreler aynı şekilde çalışır. Parametreleri bir ilke tanımına ekleyerek, farklı değerler kullanarak, bu ilkeyi farklı senaryolar için yeniden kullanabilirsiniz.

Parametreleri ekleme veya kaldırma

Parametreler mevcut ve atanmış bir tanıma eklenebilir. Yeni parametre özelliğini defaultValue içermelidir. Bu özellik, ilkenin veya girişimin mevcut atamalarının dolaylı olarak geçersiz kılınmasını engeller.

Parametreler, bir atama parametre değerini ayarlıyor olabileceği ve bu referans geçersiz hale gelebileceği için politika tanımından kaldırılamaz. Bazı yerleşik ilke tanımları, Azure portalında tanımı atarken parametreyi gizleyen meta verileri "deprecated": truekullanarak parametreleri kullanımdan kaldırır. Bu yöntem özel ilke tanımları için desteklenmese de, bir diğer seçenek de parametresi olmadan yeni bir özel ilke tanımı çoğaltmak ve oluşturmaktır.

Parametre özellikleri

Parametre, ilke tanımında aşağıdaki özellikleri kullanır:

  • name: Parametrenizin adı. İlke kuralı içinde parameters dağıtım işlevi tarafından kullanılır. Daha fazla bilgi için, parametre değeri kullanma bölümüne bakın.

  • type: parametresinin bir string, array, , object, boolean, integerfloatveya dateTimeolup olmadığını belirler. (Parametrelerin dateTime ISO 8601 formatında olması gereken yer.yyyy-MM-ddTHH:mm:ss.fffffffZ)

  • metadata: Öncelikli olarak Azure portalı tarafından kullanıcı dostu bilgileri görüntülemek için kullanılan alt özellikleri tanımlar:

    • description: Parametresinin ne için kullanıldığının açıklaması. Kabul edilebilir değerlere örnekler sağlamak için kullanılabilir.
    • displayName: Portalda parametre için gösterilen anlamlı ad.
    • strongType: (İsteğe bağlı) portal aracılığıyla ilke tanımı atanırken kullanılır. Bağlam bilgisi olan bir liste sağlar. Daha fazla bilgi için bkz . strongType.
    • assignPermissions: (İsteğe bağlı) Azure portalının ilke ataması sırasında rol atamaları oluşturmasını sağlamak için true olarak ayarlayın. Bu özellik, atama kapsamının dışında izinler atamak istemeniz durumunda kullanışlıdır. İlkede rol tanımı başına bir rol ataması vardır (veya bir girişimdeki tüm ilkelerdeki her rol tanımı başına). Parametre değeri geçerli bir kaynak veya kapsam olmalıdır.
    • deprecated: Bir parametrenin yerleşik tanımda kullanım dışı bırakılıp kaldırılmadığını gösteren boole bayrağı.
  • defaultValue: (İsteğe bağlı) Değer verilmediyse atamadaki parametrenin değerini ayarlar. Atanan mevcut bir ilke tanımını güncelleştirirken gereklidir. Nesne türü parametreleri için değerin uygun şemayla eşleşmesi gerekir.

  • allowedValues: (İsteğe bağlı) Parametrenin atama sırasında kabul ettiği bir değer dizisi sağlar.

    • Büyük/küçük harf duyarlılığı: İzin verilen değer karşılaştırmaları bir ilke atanırken büyük/küçük harfe duyarlıdır; başka bir deyişle atamadaki seçili parametre değerleri, tanımdaki dizideki değerlerin allowedValues büyük/küçük harfle eşleşmesi gerekir. Ancak, atama için değerler seçildikten sonra, kullanılan koşula bağlı olarak dize karşılaştırmalarının değerlendirilmesi büyük/küçük harfe duyarlı olmayabilir. Örneğin, parametresinde Dev bir atamada izin verilen etiket değeri olarak belirtilmişse ve bu değer equals koşulu kullanılarak bir giriş dizesiyle karşılaştırılıyorsa, Azure İlkesi, büyük/küçük harf duyarlı olmadığı için etiket değeri dev küçük harfle yazılmış olsa bile, bu değeri notEquals ile bir eşleşme olarak değerlendirir.
    • Nesne türü parametreleri için değerlerin uygun şemayla eşleşmesi gerekir.
  • schema: (İsteğe bağlı) Kendi kendine tanımlanmış bir JSON şeması kullanarak atama sırasında parametre girişlerinin doğrulanması sağlar. Bu özellik yalnızca nesne türü parametreler için desteklenir ve Json.NET Schema 2019-09 uygulamasını izler. adresinde şemaları https://json-schema.org/ kullanma hakkında daha fazla bilgi edinebilir ve adresinden taslak şemaları https://www.jsonschemavalidator.net/test edebilirsiniz.

Örnek parametreler

Örnek 1

Örneğin, kaynakların dağıtılacağı konumları sınırlamak için bir ilke tanımı tanımlayabilirsiniz. Bu ilke tanımı için allowedLocations adlı bir parametre, kabul edilen değerleri sınırlamak amacıyla ilke tanımının her atamasında kullanılabilir. kullanımı strongType , portal aracılığıyla ödevi tamamlarken gelişmiş bir deneyim sağlar:

"parameters": {
  "allowedLocations": {
    "type": "array",
    "metadata": {
      "description": "The list of allowed locations for resources.",
      "displayName": "Allowed locations",
      "strongType": "location"
    },
    "defaultValue": [
      "westus2"
    ],
    "allowedValues": [
      "eastus2",
      "westus2",
      "westus"
    ]
  }
}

Atanma zamanında, bu dizi türü parametresi (strongType olmadan) için örnek bir giriş ["westus", "eastus2"] olabilir.

Örnek 2

Daha gelişmiş bir senaryoda, Kubernetes küme podlarının belirtilen etiketleri kullanmasını gerektiren bir ilke tanımlayabilirsiniz. Bu ilke tanımı için bir parametre labelSelector, etiket anahtarları ve değerlerine göre ilgili Kubernetes kaynaklarını belirtmek amacıyla ilke tanımının her atamasında kullanılabilir.

"parameters": {
  "labelSelector": {
    "type": "object",
    "metadata": {
      "displayName": "Kubernetes label selector",
      "description": "Label query to select Kubernetes resources for policy evaluation. An empty label selector matches all Kubernetes resources."
    },
    "defaultValue": {},
    "schema": {
      "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all resources.",
      "type": "object",
      "properties": {
        "matchLabels": {
          "description": "matchLabels is a map of {key,value} pairs.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "minProperties": 1
        },
        "matchExpressions": {
          "description": "matchExpressions is a list of values, a key, and an operator.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "description": "key is the label key that the selector applies to.",
                "type": "string"
              },
              "operator": {
                "description": "operator represents a key's relationship to a set of values.",
                "type": "string",
                "enum": [
                  "In",
                  "NotIn",
                  "Exists",
                  "DoesNotExist"
                ]
              },
              "values": {
                "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "key",
              "operator"
            ],
            "additionalProperties": false
          },
          "minItems": 1
        }
      },
      "additionalProperties": false
    }
  },
}

Atama zamanında bu nesne türü parametresi için örnek giriş JSON biçiminde, belirtilen şema tarafından doğrulanmış olabilir ve şu olabilir:

{
  "matchLabels": {
    "poolID": "abc123",
    "nodeGroup": "Group1",
    "region": "southcentralus"
  },
  "matchExpressions": [
    {
      "key": "name",
      "operator": "In",
      "values": [
        "payroll",
        "web"
      ]
    },
    {
      "key": "environment",
      "operator": "NotIn",
      "values": [
        "dev"
      ]
    }
  ]
}

Parametre değeri kullanma

İlke kuralında, parametrelere aşağıdaki parameters işlev söz dizimiyle başvurursunuz:

{
  "field": "location",
  "in": "[parameters('allowedLocations')]"
}

Bu örnek, allowedLocations parametresine, parametre özellikleri bölümünde gösterilen şekilde başvurur.

strongType

özelliğini kullanarak metadata Azure portalında çok seçimli bir seçenek listesi sağlayabilirsiniz strongType . strongType desteklenen bir kaynak türü veya izin verilen bir değer olabilir. Kaynak türünün için geçerli olup olmadığını belirlemek için strongTypeGet-AzResourceProvider kullanın. Kaynak türününşeklindedirstrongType. Örneğin, Microsoft.Network/virtualNetworks/subnets.

tarafından döndürülmeyen bazı Get-AzResourceProvider desteklenir. Bu türler şunlardır:

  • Microsoft.RecoveryServices/vaults/backupPolicies

kaynak türü olmayan değerler için izin verilenler şunlardır:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Sonraki adımlar

  • İlke tanımı yapısı hakkında daha fazla bilgi için temel bilgiler, ilke kuralı ve diğer ad bölümüne gidin.
  • Girişimler için girişim tanımı yapısı'na gidin.
  • Azure İlkesi örneklerini gözden geçirin.
  • Politika etkilerini anlama hakkında gözden geçirme yapın.
  • 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.