Security Center では、自己管理型 Kubernetes クラスターを Security Center に追加して、一元管理とリスク検出を行うことができます。このトピックでは、自己管理型 Kubernetes クラスターを Security Center に追加する方法について説明します。
エディション要件
サブスクリプションサービス: Ultimate (現在のバージョンがサポートされていない場合は、スペックアップする必要があります)。
説明サーバーの保護エディションを Ultimate に設定する必要があります。詳細については、「サーバーに保護エディションを関連付ける」をご参照ください。
従量課金サービス: Host and Container Security の従量課金サービスが有効になっている必要があります。有効になっていない場合は、「購入」をご参照ください。
説明サーバー保護レベルを Host and Container Protection に設定する必要があります。詳細については、「サーバー保護レベルを関連付ける」をご参照ください。
制限事項
自己管理型 Kubernetes クラスターは、サポートされているリージョンに存在する必要があります。
追加する自己管理型 Kubernetes クラスターが VPC (Virtual Private Cloud) にデプロイされている場合、クラスターは中国 (杭州)、中国 (北京)、中国 (上海)、中国 (深圳)、または中国 (香港) リージョンに存在する必要があります。
追加する自己管理型 Kubernetes クラスターがインターネット上にデプロイされている場合、クラスターのリージョンに制限はありません。
前提条件
サーバー上に Kubernetes クラスターが作成されていること。
Docker がインストールされていること。
クラスター公開分析機能を使用するには、クラスターのデプロイ方法とアクセスの制御ポリシーに基づいて、次のネットワーク構成も実行する必要があります。詳細については、「クラスター公開分析」をご参照ください。
自己管理型 Kubernetes クラスターがハイブリッドクラウドにデプロイされていて、インターネット経由でアクセスできない場合は、トラフィック転送ルールが構成され、ネットワーク接続が正常である必要があります。
クラスターにアクセスの制御ポリシーが構成されている場合は、コンテナーのリージョンに対応する IP アドレスがホワイトリストに追加されていることを確認してください。
自己管理型 Kubernetes クラスターを Security Center に追加する
Security Center コンソールにログインします。上部のナビゲーションバーで、管理するアセットのリージョンを選択します。中国 または 全世界 (中国を除く) を選択できます。
左側のナビゲーションウィンドウで、 を選択します。
Cluster タブで、Self-built cluster access をクリックします。
Self-built cluster management パネルで、Self-built cluster access をクリックします。表示されるパネルで、Security Center に追加するクラスターを構成し、Generate Command をクリックします。
パラメーター
説明
Cluster name
自己管理型 Kubernetes クラスターの名前を入力します。例: text-001。
有効期限
自己管理型 Kubernetes クラスターを追加するために使用されるコマンドの有効期限を選択します。
グループ
クラスターを追加するグループを選択します。このパラメーターを、クラスターが作成されたサーバーのグループに設定します。
サービスプロバイダー
クラスターが作成されたサーバーのプロバイダーを選択します。
任意。Enable Log Collection セクションで、Kubernetes クラスターのログベースの脅威検出を有効にするかどうかを指定します。
ログベースの脅威検出を有効にすると、Security Center はさらなるリスク検出のために、より多くの監査ログを収集します。ログベースの脅威検出を有効にする前に、Kubernetes クラスターに Logtail コンポーネントをインストールし、監査関連の設定を構成する必要があります。詳細については、「ログベースの脅威検出を有効にする」をご参照ください。
クラスターが作成されたサーバーにログインし、サーバー上に text-001 という名前の YAML ファイルを作成し、生成されたコマンドをファイルにコピーして、サーバーで
kubectl apply -f text-001.yamlコマンドを実行します。その後、クラスターが Security Center に追加されます。ステップ 4 で生成されたコマンドは、デフォルトでは Master ノードと Taint ノードを追加しません。Master ノードと Taint ノードを追加する必要がある場合は、次の命令に基づいて YAML ファイルの構成を変更できます。
自己管理型 Kubernetes クラスターが Security Center に追加されると、Cluster タブのクラスターリストでクラスター情報を表示できます。
ログベースの脅威検出を有効にする
クラスターの Kubernetes バージョンが 1.16 以降の場合、ログベースの脅威検出を有効にして、クラスターでより包括的なリスク検出を行うことができます。高リスクの操作や攻撃動作などのリスクを検出できます。
ステップ 1. Logtail コンポーネントをインストールする
具体的な手順については、「自己管理型 Kubernetes クラスターに Logtail コンポーネントをインストールする」の「Logtail のインストール」をご参照ください。
ステップ 2. クラスター監査機能を有効にする
次のプロシージャは参考用です。詳細については、「クラスターのクラスター監査を有効にする」をご参照ください。
登録済みクラスターを作成し、自己管理型 Kubernetes クラスターを登録済みクラスターに追加します。詳細については、「ACK One 登録済みクラスターを作成する」をご参照ください。
マスターノードの audit-policy.yaml ファイルを構成します。
マスターノードにログインし、次のテンプレートに基づいて /etc/kubernetes/audit-policy.yaml ファイルを変更します。他のマスターノードでもこのステップを実行する必要があります。
説明クラスターの Kubernetes バージョンが 1.24 より前の場合、
apiVersionをaudit.k8s.io/v1beta1に設定します。それ以外の場合は、apiVersionをaudit.k8s.io/v1に設定します。詳細については、「(廃止) Kubernetes 1.24」をご参照ください。apiVersion: audit.k8s.io/v1beta1 kind: Policy # RequestReceived ステージのすべてのリクエストに対して監査イベントを生成しません。 omitStages: - "RequestReceived" rules: # 以下のリクエストは、手動で大量かつ低リスクとして識別されたため、 # 破棄します。 - level: None users: ["system:kube-proxy"] verbs: ["watch"] resources: - group: "" # コア resources: ["endpoints", "services"] - level: None users: ["system:unsecured"] namespaces: ["kube-system"] verbs: ["get"] resources: - group: "" # コア resources: ["configmaps"] - level: None users: ["kubelet"] # legacy kubelet identity verbs: ["get"] resources: - group: "" # コア resources: ["nodes"] - level: None userGroups: ["system:nodes"] verbs: ["get"] resources: - group: "" # コア resources: ["nodes"] - level: None users: - system:kube-controller-manager - system:kube-scheduler - system:serviceaccount:kube-system:endpoint-controller verbs: ["get", "update"] namespaces: ["kube-system"] resources: - group: "" # コア resources: ["endpoints"] - level: None users: ["system:apiserver"] verbs: ["get"] resources: - group: "" # コア resources: ["namespaces"] # これらの読み取り専用 URL はログに記録しません。 - level: None nonResourceURLs: - /healthz* - /version - /swagger* # イベントリクエストはログに記録しません。 - level: None resources: - group: "" # コア resources: ["events"] # Secret、ConfigMap、および TokenReview には機密データやバイナリデータが含まれる可能性があるため、 # メタデータレベルでのみログに記録します。 - level: Metadata resources: - group: "" # コア resources: ["secrets", "configmaps"] - group: authentication.k8s.io resources: ["tokenreviews"] # Get レスポンスは大きくなる可能性があるため、スキップします。 - level: Request verbs: ["get", "list", "watch"] resources: - group: "" # コア - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" # 既知の API のデフォルトレベル - level: RequestResponse resources: - group: "" # コア - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" # 他のすべてのリクエストのデフォルトレベル - level: Metadataマスターノードの kube-apiserver.yaml ファイルを構成します。
マスターノードにログインし、次の説明に基づいて /etc/kubernetes/manifests/kube-apiserver.yaml ファイルを変更します。他のマスターノードでもこのステップを実行する必要があります。
command セクションに
--audit-log-*パラメーターを追加します:... spec: containers: - command: - kube-apiserver - --audit-log-maxbackup=10 - --audit-log-maxsize=100 - --audit-log-path=/var/log/kubernetes/kubernetes.audit - --audit-log-maxage=30 - --audit-policy-file=/etc/kubernetes/audit-policy.yaml ...env セクションに
aliyun_logs_audit-*パラメーターを追加します。{cluster_id} をクラスターの ID に置き換える必要があります。クラスターの ID を取得するには、次の操作を実行します: Security Center コンソールにログインしますし、コンテナーページの [クラスター] タブを開きます。次の図は、クラスターの ID を取得する方法を示しています。

... spec: containers: - command: - kube-apiserver - --audit-log-maxbackup=10 - --audit-log-maxsize=100 - --audit-log-path=/var/log/kubernetes/kubernetes.audit - --audit-log-maxage=30 - --audit-policy-file=/etc/kubernetes/audit-policy.yaml ... ... env: - name: aliyun_logs_audit-${cluster_id} value: /var/log/kubernetes/kubernetes.audit - name: aliyun_logs_audit-${cluster_id}_tags value: audit=apiserver - name: aliyun_logs_audit-${cluster_id}_product value: k8s-audit - name: aliyun_logs_audit-${cluster_id}_jsonfile value: "true" image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1次のテンプレートを使用して、/etc/kubernetes/audit-policy.yaml を kube-apiserver の Pod にマウントします:
... spec: containers: - command: - kube-apiserver - --audit-log-maxbackup=10 - --audit-log-maxsize=100 - --audit-log-path=/var/log/kubernetes/kubernetes.audit - --audit-log-maxage=30 - --audit-policy-file=/etc/kubernetes/audit-policy.yaml ... ... env: - name: aliyun_logs_audit-${cluster_id} value: /var/log/kubernetes/kubernetes.audit - name: aliyun_logs_audit-${cluster_id}_tags value: audit=apiserver - name: aliyun_logs_audit-${cluster_id}_product value: k8s-audit - name: aliyun_logs_audit-${cluster_id}_jsonfile value: "true" image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1 ... ... volumeMounts: - mountPath: /var/log/kubernetes name: k8s-audit - mountPath: /etc/kubernetes/audit-policy.yaml name: audit-policy readOnly: true ... ... volumes: - hostPath: path: /var/log/kubernetes type: DirectoryOrCreate name: k8s-audit - hostPath: path: /etc/kubernetes/audit-policy.yaml type: FileOrCreate name: audit-policy ...
ステップ 3. ログが収集されているか確認する
Simple Log Service コンソールにログインします。
必要なプロジェクトの名前をクリックします。
関連するログがプロジェクト内の指定された Logstore に収集されているかどうかを確認します。
ステップ 4. 脅威検出を有効にする
Security Center コンソールにログインします。上部のナビゲーションバーで、管理するアセットのリージョンを選択します。中国 または 全世界 (中国を除く) を選択できます。
左側のナビゲーションウィンドウで、 を選択します。
Cluster タブで、Self-built cluster access をクリックします。
必要な自己管理型 Kubernetes クラスターを見つけ、操作する 列の 編集 をクリックします。
Enable Log Collection タブで、Enable Kubernetes Log Reporting to Detect Threats を選択し、次のパラメーターを構成してから、保存 をクリックします。
Region of Log Audit Service: ログを保存するリージョンを選択します。
Project of Log Audit Service: ステップ 1. Logtail コンポーネントをインストールする で作成したプロジェクトの名前を入力します。例: k8s-log-custom-sd89ehdq。
Logstore of Log Audit Service: ステップ 1. Logtail コンポーネントをインストールする で自動的に作成される Logstore の名前を入力します。例: audit-027b007a7dd11967a9f7e2449d8dc497。