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
(任意)constraint
、constraintTemplate
、apiGroups
、kinds
、scope
、namespaces
、excludedNamespaces
、またはlabelSelector
とは使用できません。constraintInfo
が指定されていない場合、制約はtemplateInfo
とポリシーから生成できます。sourceType
(必須)制約用のソースの種類を定義します。 指定できる値は
PublicURL
またはBase64Encoded
です。PublicURL
の場合、url
プロパティと組み合わせて制約の場所を指定します。 この場所はパブリックにアクセスできる必要があります。警告
url
には、SAS URI やトークンなど、シークレットが公開されてしまう可能性がある情報は一切使用しないでください。
namespaces
(任意)- ポリシーの評価対象とする Kubernetes 名前空間の配列。
- 空にした場合、つまり値を指定しなかった場合、excludedNamespaces に定義されていないすべての名前空間がポリシーの評価対象になります。
excludedNamespaces
(任意)- ポリシーの評価から除外する Kubernetes 名前空間の配列。
labelSelector
(任意)- matchLabels (オブジェクト) プロパティと matchExpression (配列) プロパティを含んだ "オブジェクト"。ポリシーの評価対象とする Kubernetes リソースを指定できます。ラベルおよびセレクターの指定と一致した Kubernetes リソースが評価対象となります。
- 空にした場合、つまり値を指定しなかった場合、excludedNamespaces に定義された名前空間を除くすべてのラベルおよびセレクターがポリシーの評価対象になります。
scope
(任意)- クラスター スコープまたは名前空間スコープのリソースが一致するかどうかを指定できるようにする scope プロパティを含む文字列。
apiGroups
(templateInfo を使う場合は必須)- マッチさせる API グループを含んだ配列。 空の配列 (
[""]
) は、コア API グループです。 - apiGroups 向けの
["*"]
の定義は許可されません。
- マッチさせる API グループを含んだ配列。 空の配列 (
kinds
(templateInfo を使う場合は必須)- 評価対象とする Kubernetes オブジェクトの kind を含んだ配列。
- kinds 向けの
["*"]
の定義は許可されません。
values
(任意)- 制約に渡すすべてのパラメーターと値を定義します。 各値は存在し、制約テンプレート CRD の検証
openAPIV3Schema
セクションのプロパティと一致する必要があります。
- 制約に渡すすべてのパラメーターと値を定義します。 各値は存在し、制約テンプレート CRD の検証
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"
]
}
}
次のステップ
- Azure Policy のサンプルを確認します。
- 「Azure Policy の定義の構造」を確認します。
- プログラムによってポリシーを作成する方法を理解します。
- コンプライアンス データを取得する方法を学習します。
- 準拠していないリソースを修復する方法を学習します。
- Azure 管理グループに関するページを確認します。