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.

Parametre değerini ayarlayan bir atama olabileceğinden ve bu başvuru bozulacağından parametreler ilke 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 bkz . parametre değeri kullanma.
  • type: parametresinin bir string, array, , object, boolean, integerfloatveya dateTimeolup olmadığını belirler.
  • 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 parametresi için gösterilen kolay 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 girişimin tüm ilkelerinde 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. oject türü parametreler için değerin uygun şemayla eşleşmesi gerekir.
  • allowedValues: (İsteğe bağlı) Parametrenin atama sırasında kabul eden 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, parametresi atamada izin verilen bir etiket değeri olarak belirtiyorsa Dev ve bu değer koşulu kullanan equals bir giriş dizesiyle karşılaştırılırsa, Azure İlkesi daha sonra büyük/küçük notEquals harfe duyarlı olmasa bile etiket değerini dev 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 bir parametre, kabul edilen değerleri sınırlamak için ilke tanımının her ataması tarafından kullanılabilir allowedLocations ve 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"
    ]
  }
}

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

Ö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, etiket anahtarları ve değerlerine göre söz konusu Kubernetes kaynaklarını belirtmek için ilke tanımının her ataması tarafından kullanılabilir labelSelector ve 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, parametre özelliklerinde gösterildiği parametreye başvurur allowedLocations.

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ünstrongType biçimi şeklindedir<Resource Provider>/<Resource Type>. Örneğin, Microsoft.Network/virtualNetworks/subnets.

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

  • Microsoft.RecoveryServices/vaults/backupPolicies

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

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Sonraki adımlar