Azure Policy 定義の audit 効果

audit 効果は、非準拠リソースを評価するときにアクティビティ ログに警告イベントを作成するために使われますが、要求は停止されません。

Audit の評価

Audit は、リソースの作成中または更新中に Azure Policy によって確認される最後の効果です。 リソース マネージャー モードの場合、その後でリソースが Azure Policy によってリソース プロバイダーに送信されます。 リソースの作成または更新の要求を評価するときに、Azure Policy では Microsoft.Authorization/policies/audit/action 操作がアクティビティ ログに追加され、リソースが非対応としてマークされます。 標準のコンプライアンス評価サイクルでは、リソースのコンプライアンス状態のみが更新されます。

Audit のプロパティ

リソース マネージャー モードの場合、audit 効果には、ポリシー定義の then 条件で使うための他のプロパティはありません。

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

  • templateInfo (必須)

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

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

        警告

        SAS URI、URL トークン、またはシークレットをプレーンテキストで公開する可能性のあるその他のものを、使用しないでください。

      • 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 (任意)

    • constraintconstraintTemplateapiGroupskindsscopenamespacesexcludedNamespaces、または labelSelector とは使用できません。
    • constraintInfo が指定されていない場合、制約は templateInfo とポリシーから生成できます。
    • sourceType (必須)
      • 制約用のソースの種類を定義します。 指定できる値は PublicURL または Base64Encoded です。

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

        警告

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

  • namespaces (任意)

    • ポリシーの評価対象とする Kubernetes 名前空間配列
    • 空にした場合、つまり値を指定しなかった場合、excludedNamespaces に定義されていないすべての名前空間がポリシーの評価対象になります。
  • excludedNamespaces (任意)

  • labelSelector (任意)

    • matchLabels (オブジェクト) プロパティと matchExpression (配列) プロパティを含んだ "オブジェクト"。ポリシーの評価対象とする Kubernetes リソースを指定できます。ラベルおよびセレクターの指定と一致した Kubernetes リソースが評価対象となります。
    • 空にした場合、つまり値を指定しなかった場合、excludedNamespaces に定義された名前空間を除くすべてのラベルおよびセレクターがポリシーの評価対象になります。
  • scope (任意)

    • クラスター スコープまたは名前空間スコープのリソースが一致するかどうかを指定できるようにする scope プロパティを含む文字列
  • apiGroups (templateInfo を使う場合は必須)

    • マッチさせる API グループを含んだ配列。 空の配列 ([""]) は、コア API グループです。
    • apiGroups 向けの ["*"] の定義は許可されません。
  • kinds (templateInfo を使う場合は必須)

    • 評価対象とする Kubernetes オブジェクトの kind を含んだ配列
    • kinds 向けの ["*"] の定義は許可されません。
  • values (任意)

    • 制約に渡すすべてのパラメーターと値を定義します。 各値は存在し、制約テンプレート CRD の検証 openAPIV3Schema セクションのプロパティと一致する必要があります。

Audit の例

例 1:リソース マネージャー モードで Audit 効果を使用する。

"then": {
  "effect": "audit"
}

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

"then": {
  "effect": "audit",
  "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"
    ]
  }
}

次のステップ