この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

監査スキャナー - ポリシーレポート

SUSE Security Admission Controller監査スキャナーを使用する際、https://openreports.io/[OpenReports]カスタムリソースを使用してポリシースキャンの結果を保存します。

SUSE Security Admission Controller 1.33では、監査スキャナー機能がデフォルトで[openreports.io](https://openreports.io)のOpenReports CRDにレポートを保存します。

K8sポリシー作業グループのPolicyReportCRDは、デフォルトではインストールされず、廃止としてマークされ、将来のリリースで削除される予定です。

廃止されたPolicyReports、つまり1.33以前の動作を引き続き使用したいユーザーは、次のことを行う必要があります:
- kubewarden-crds Helmチャートの`.Values.install.installPolicyReportCRDs`の値を`true`に変更します。
- kubewarden-controller Helmチャートの`.Values.auditScanner.reportCRDsKind`の値を`openreports`から`policyreport`に変更します。

これらのOpenReport CRDは、監査結果を保存および管理するための構造化された方法を提供します。

`Report`と`ClusterReport`を使用して監査スキャナーのポリシースキャン結果を保存します。 監査スキャナーは、リソースのスコープに応じて、各スキャンされたリソースのために`Report`または`ClusterReport`を作成します。`Report`オブジェクトはリソースのネームスペースで利用可能であり、`ClusterReport`オブジェクトはクラスターのスコープで利用可能です。

スキャナーによって生成された監査結果には以下が含まれます:

  • 評価されたポリシー

  • スキャンされたリソース

  • 評価の結果(合格、不合格、またはスキップ)

  • 評価が行われた日時を示すタイムスタンプ。

ポリシーのために重大度とカテゴリの注釈を定義することもできます。

オペレーターは`kubectl`を使用してレポートを照会できます。彼らはまた、https://kyverno.github.io/policy-reporter[policy-reporter]オープンソースプロジェクトが提供するオプションのUIを使用して、OpenReports CRDのモニタリングと監視を行うことができます。

レポートの照会

kubectl CLIを使用すると、スキャンの結果を照会することができます:

デフォルトのネームスペース内のレポートをリストします:

$ kubectl get report -o wide
NAME                                   KIND   NAME            PASS   FAIL   WARN   ERROR   SKIP   AGE
44da974b-6057-4745-a92c-9dd8a1b01cc4   Pod    nginx-secrets   6      1      0      0       0      33m

クラスター全体のレポートをリストします:

$ kubectl get clusterreport -o wide
NAME                                   KIND        NAME                 PASS   FAIL   WARN   ERROR   SKIP   AGE
6c66175f-e15f-47e8-8c33-2c63d5ecde3e   Namespace   namespace1           3      1     0       0       0      1h
d0ffbf4f-7348-4350-af7b-fdbfc079cc49   Namespace   namespace2           0      4     0       0       0      1h
e48d9bbc-a9c4-4c36-8519-bc7390d9ec64   Namespace   namespace3           4      0     0       0       0      15h

特定のレポートの詳細を取得します:

kubectl get report 44da974b-6057-4745-a92c-9dd8a1b01cc4 -o yaml

特定のClusterReportの詳細を取得します:

kubectl get clusterreport e48d9bbc-a9c4-4c36-8519-bc7390d9ec64 -o yaml

レポートの例

以下の例は、`Report`リソースの`Deployment`に対する`deployment1`を`default`ネームスペースで示しています。レポートは、`Pod`が`safe-labels`AdmissionPolicyに失敗したことを示しています。

apiVersion: wgpolicyk8s.io/v1beta1
kind: PolicyReport
metadata:
  creationTimestamp: “2024-02-29T06:55:37Z”
  generation: 6
  labels:
    app.kubernetes.io/managed-by: kubewarden
    kubewarden.io/policyreport-version: v2
  name: 009805e4-6e16-4b70-80c9-cb33b6734c82
  namespace: default
  ownerReferences:
    - apiVersion: apps/v1
      kind: Deployment
      name: deployment1
      uid: 009805e4-6e16-4b70-80c9-cb33b6734c82
  resourceVersion: “2685996”
  uid: c5a88847-d678-4733-8120-1b83fd6330cb
results:
  - category: Resource validation
    message: “The following mandatory labels are missing: cost-center”
    policy: namespaced-default-safe-labels
    properties:
      policy-resource-version: “2684810”
      policy-uid: 826dd4ef-9db5-408e-9482-455f278bf9bf
      policy-name: “safe-labels”
      policy-namespace: “default”
      validating: “true”
    resourceSelector: {}
    result: fail
    scored: true
    severity: low
    source: kubewarden
    timestamp:
      nanos: 0
      seconds: 1709294251
scope:
  apiVersion: apps/v1
  kind: Deployment
  name: deployment1
  namespace: default
  resourceVersion: “3”
  uid: 009805e4-6e16-4b70-80c9-cb33b6734c82
summary:
  error: 0
  fail: 1
  pass: 0
  skip: 0
  warn: 0

ClusterReportの例

以下の例は、`ClusterReport`リソースの`Namespace`に対する`default`を示しています。レポートは、そのリソースが`safe-annotations`ClusterAdmissionPolicyの検証に失敗したことを示しています。

apiVersion: wgpolicyk8s.io/v1beta1
kind: ClusterPolicyReport
metadata:
  creationTimestamp: “2024-02-28T14:44:37Z”
  generation: 3
  labels:
    app.kubernetes.io/managed-by: kubewarden
    kubewarden.io/policyreport-version: v2
  name: 261c9492-deec-4a09-8aa9-cd464bb4b8d1
  ownerReferences:
    - apiVersion: v1
      kind: Namespace
      name: default
      uid: 261c9492-deec-4a09-8aa9-cd464bb4b8d1
  resourceVersion: “2403034”
  uid: 20a3d00e-e955-4f21-a887-317d40f3f052
results:
  - category: Resource validation
    message: “The following mandatory annotations are not allowed: owner”
    policy: clusterwide-safe-annotations
    properties:
      policy-resource-version: “2396437”
      policy-uid: 46780d6e-e51a-4d65-8572-a6af01380aa7
      policy-name: “safe-annotations”
      validating: “true”
    resourceSelector: {}
    result: fail
    scored: true
    severity: low
    source: kubewarden
    timestamp:
      nanos: 0
      seconds: 1709294251
scope:
  apiVersion: v1
  kind: Namespace
  name: default
  resourceVersion: “37”
  uid: 261c9492-deec-4a09-8aa9-cd464bb4b8d1
summary:
  error: 0
  fail: 1
  pass: 0
  skip: 0
  warn: 0

ポリシーレポータUI

ポリシーレポータは`kubewarden-controller`のサブチャートとして提供されます。詳細については、Audit Scanner Installationページを参照してください。

ポリシーレポータUIは、すべての違反を示すダッシュボードを提供します。以下のスクリーンショットを参照してください:

Policy Reporter dashboard example

Admission Controllerは、Admission Controllerポリシーのみを表示する事前設定済みのフィルターを備えたポリシーレポータUIを搭載し、拡張情報を提供します。

ポリシーレポータ ポリシーレポートの例

ポリシーレポータのその他の機能には、結果を異なるクライアント(Grafana Loki、Elasticsearch、チャットアプリケーションなど)に転送すること、メトリックエンドポイント、その他が含まれます。詳細については、https://kyverno.github.io/policy-reporter[ポリシーレポータのコミュニティドキュメント]をご覧ください。