次の方法で共有


Azure Policy 定義の deny 効果

deny効果は、ポリシー定義を通じて定義された標準に一致しないリソース要求を防ぐために使用され、要求が失敗します。

評価を拒否する

Resource Manager モードで一致するリソースを作成または更新する場合、拒否すると、リソース プロバイダーに送信される前に要求が禁止されます。 要求は 403 (Forbidden) として返されます。 ポータルでは、Forbidden はポリシー割り当てによって阻止されたデプロイの状態として表示されます。 リソース プロバイダー モードの場合、リソース プロバイダーはリソースの評価を管理します。

既存のリソースの評価中に、 deny ポリシー定義に一致するリソースは非準拠としてマークされます。

Deny のプロパティ

Resource Manager モードの場合、 deny 効果には、ポリシー定義の then 条件で使用するプロパティはそれ以上ありません。

Microsoft.Kubernetes.Dataのリソース プロバイダー モードの場合、deny効果には、detailsの次のサブプロパティがあります。 新しいポリシー定義や更新されたポリシー定義では、templateInfo を使用する必要があります。constraintTemplate は非推奨となっています。

  • templateInfo (必須)
    • constraintTemplate とは併用できません。
    • sourceType (必須)
      • 制約テンプレートのソースの種類を定義します。 指定できる値は PublicURL または Base64Encoded です。

      • PublicURL の場合、url プロパティと組み合わせて制約テンプレートの場所を指定します。 この場所はパブリックにアクセスできる必要があります。

        Warnung

        url には、SAS URI やトークンなど、シークレットが公開されてしまう可能性がある情報は一切使用しないでください。

      • Base64Encoded の場合、content プロパティと組み合わせて、base 64 でエンコードされた制約テンプレートを指定します。 既存の Open Policy Agent (OPA) Gatekeeper v3 制約テンプレートからカスタム定義を作成するには、「制約テンプレートからポリシー定義を作成する」を参照してください。

  • constraint (省略可)
    • templateInfo とは併用できません。
    • 制約テンプレートの CRD 実装です。 values{{ .Values.<valuename> }} のように渡されたパラメーターを使います。 次の例 2 では、これらの値は {{ .Values.excludedNamespaces }} および {{ .Values.allowedContainerImagesRegex }} です。
  • constraintTemplate (非推奨)
    • templateInfo とは併用できません。
    • ポリシーの定義を作成または更新するときは、templateInfo に置き換えてください。
    • 新しい制約を定義する、制約テンプレート CustomResourceDefinition (CRD) です。 このテンプレートは、Rego ロジック、制約スキーマと、Azure Policy から values で渡される制約パラメーターを定義します。 詳細については、「Gatekeeper 制約」に移動してください。
  • constraintInfo (省略可)
    • constraintconstraintTemplateapiGroups、または kinds とは使用できません。
    • constraintInfo が指定されていない場合、制約は templateInfo とポリシーから生成できます。
    • sourceType (必須)
      • 制約用のソースの種類を定義します。 指定できる値は PublicURL または Base64Encoded です。

      • PublicURL の場合、url プロパティと組み合わせて制約の場所を指定します。 この場所はパブリックにアクセスできる必要があります。

        Warnung

        url には、SAS URI やトークンなど、シークレットが公開されてしまう可能性がある情報は一切使用しないでください。

  • namespaces (省略可)
    • ポリシーの評価対象とする Kubernetes 名前空間の "配列"。
    • 値が空であるか不足している場合、ポリシーの評価には、 excludedNamespacesで定義されている名前空間を除くすべての名前空間が含まれます。
  • excludedNamespaces (必須)
    • ポリシーの評価から除外する Kubernetes 名前空間の "配列"。
  • labelSelector (必須)
    • 指定されたラベルとセレクターに一致する Kubernetes リソースをポリシー評価に含めるため、オブジェクトには、matchLabels (オブジェクト) プロパティとmatchExpression (配列) プロパティが含まれています。
    • 空または欠損値を指定すると、ポリシーの評価には、 excludedNamespacesで定義されている名前空間を除くすべてのラベルとセレクターが含まれます。
  • apiGroups ( templateInfo を使用する場合は必須)
    • マッチさせる API グループを含んだ "配列"。 空の配列 ([""]) は、コア API グループです。
    • ["*"] 向けの の定義は許可されません。
  • kinds ( templateInfo を使用する場合は必須)
    • 評価対象とする Kubernetes オブジェクトの kind を含んだ配列
    • ["*"] 向けの の定義は許可されません。
  • values (省略可)
    • 制約に渡すすべてのパラメーターと値を定義します。 各値は制約テンプレート CRD に存在する必要があります。

拒否の具体例

例 1: Resource Manager モードに deny 効果を使用する。

"then": {
  "effect": "deny"
}

例 2: denyのリソース プロバイダー モードに対するMicrosoft.Kubernetes.Data効果の使用。 details.templateInfo の追加情報では、PublicURL の使用を宣言し、Kubernetes で使う制約テンプレートの場所に url を設定して、許可されるコンテナー イメージを制限します。

"then": {
  "effect": "deny",
  "details": {
    "templateInfo": {
      "sourceType": "PublicURL",
      "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
    },
    "values": {
      "imageRegex": "[parameters('allowedContainerImagesRegex')]"
    },
    "apiGroups": [
      ""
    ],
    "kinds": [
      "Pod"
    ]
  }
}

次のステップ