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

ダウンストリームクラスターでのAPI監査ログの有効化

Kubernetesの監査は、クラスターに関するセキュリティ関連の時系列記録を提供します。Kube-apiserverは監査を実行します。リクエストは、その実行の各段階でイベントを生成し、それは特定のポリシーに従って前処理され、バックエンドに書き込まれます。ポリシーは何が記録されるかを決定し、バックエンドは記録を永続化します。

CIS(Center for Internet Security)Kubernetesベンチマークコントロールへの準拠の一環として、監査ログを構成することを検討するかもしれません。

構成の詳細については、 公式Kubernetesドキュメントを参照してください。

  • RKE2

  • K3s

方法1(推奨):Set `audit-policy-file` in `machineGlobalConfig` or `machineSelectorConfig`

`audit-policy-file`を設定ファイルに設定するには、`machineGlobalConfig`または`machineSelectorConfig`のいずれかを使用できます。

machineGlobalConfig`を使用する場合、Rancherはファイルを/var/lib/rancher/rke2/etc/config-files/audit-policy-file`のパスに*すべてのノード*(コントロールプレーンとワーカーノードの両方)に配信し、RKE2サーバーに適切なオプションを設定します。これは、監査ポリシーが変更されたときに不要なワーカーノードの再調整を引き起こす可能性があります。

ワーカーノードの再調整を避けるため、ラベルセレクターを使用して`machineSelectorConfig`をコントロールプレーンノードのみに対象とします。これにより、監査ポリシーファイルがコントロールプレーンノードのみに配信されることが保証されます。

`machineGlobalConfig`を使用した例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      audit-policy-file: |
        apiVersion: audit.k8s.io/v1
        kind: Policy
        rules:
          - level: RequestResponse
            resources:
              - group: ""
                resources:
                  - pods

`machineSelectorConfig`を使用した例(ワーカーノードの再調整を避けるために推奨):

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineSelectorConfig:
      - config:
          audit-policy-file: |
            apiVersion: audit.k8s.io/v1
            kind: Policy
            rules:
              - level: RequestResponse
                resources:
                  - group: ""
                    resources:
                      - pods
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

方法2:ディレクティブ`machineSelectorFiles`と`machineGlobalConfig`を使用します。

この機能はRancher v2.7.2以降で利用可能です。

`machineSelectorFiles`を使用して監査ポリシーファイルをコントロールプレーンノードに配信し、`machineGlobalConfig`を使用してkube-apiserverのオプションを設定できます。

前提条件として、監査ポリシーのソースとなるシークレットまたはコンフィグマップを作成する必要があります。

シークレットまたはコンフィグマップは、以下の要件を満たす必要があります:

  1. それは、Clusterオブジェクトが存在する`fleet-default`ネームスペースにある必要があります。

  2. ターゲットクラスターが使用できるようにするアノテーション`rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2>`を必ず備えていなければなりません。

Rancher Dashboardは、シークレットまたはコンフィグマップを作成するための使いやすいフォームを提供します。

例:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: <name1>
  namespace: fleet-default

YAMLでクラスターを編集し、`machineSelectorFiles`および`machineGlobalConfig`ディレクティブを利用することで、監査ログを有効にして構成します。

例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      kube-apiserver-arg:
        - audit-policy-file=<customized-path>/dev-audit-policy.yaml
        - audit-log-path=<customized-path>/dev-audit.logs
    machineSelectorFiles:
      - fileSources:
          - configMap:
              name: ''
            secret:
              items:
                - key: audit-policy
                  path: <customized-path>/dev-audit-policy.yaml
              name: dev-audit-policy
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

クラスター構成に関する詳細情報は、RKE2クラスター構成リファレンスページを参照してください。

この機能はRancher v2.7.2以降で利用可能です。

`machineSelectorFiles`を使用して監査ポリシーファイルをコントロールプレーンノードに配信し、`machineGlobalConfig`を使用してkube-apiserverのオプションを設定できます。

前提条件として、監査ポリシーのソースとなるシークレットまたはコンフィグマップを作成する必要があります。

シークレットまたはコンフィグマップは、以下の要件を満たす必要があります:

  1. それは、Clusterオブジェクトが存在する`fleet-default`ネームスペースにある必要があります。

  2. ターゲットクラスターが使用できるようにするアノテーション`rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2>`を必ず備えていなければなりません。

Rancher Dashboardは、シークレットまたはコンフィグマップを作成するための使いやすいフォームを提供します。

例:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: <name1>
  namespace: fleet-default

YAMLでクラスターを編集し、`machineSelectorFiles`および`machineGlobalConfig`ディレクティブを利用することで、監査ログを有効にして設定します。

例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      kube-apiserver-arg:
        - audit-policy-file=<customized-path>/dev-audit-policy.yaml
        - audit-log-path=<customized-path>/dev-audit.logs
    machineSelectorFiles:
      - fileSources:
          - configMap:
              name: ''
            secret:
              items:
                - key: audit-policy
                  path: <customized-path>/dev-audit-policy.yaml
              name: dev-audit-policy
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

クラスター設定に関する詳細情報は、K3sクラスター設定リファレンスページを参照してください。