すべてのプロダクト
Search
ドキュメントセンター

Security Center:自己管理型 Kubernetes クラスターを Security Center に追加する

最終更新日:Nov 05, 2025

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 クラスターがハイブリッドクラウドにデプロイされていて、インターネット経由でアクセスできない場合は、トラフィック転送ルールが構成され、ネットワーク接続が正常である必要があります。

      トラフィック転送ルールの構成

      Elastic Compute Service (ECS) インスタンスを指定し、トラフィック転送ルールを構成して、ECS インスタンス宛てのトラフィックを、自己管理型 Kubernetes クラスターの API サーバーがインストールされているオンプレミスサーバーに転送します。

      次のコマンド例では、IP アドレス 10.0.XX.XX を使用する ECS インスタンスのポート A のトラフィックが、IP アドレス 192.168.XX.XX を使用するオンプレミスサーバーのポート B に転送されます。

      • CentOS 7 のコマンド例

        • firewall-cmd を使用

          firewall-cmd --permanent --add-forward-port=port=<Port A>:proto=tcp:toaddr=<192.168.XX.XX>:toport=<Port B>
        • iptables を使用

        • # ポートフォワーディングを有効にします。
          echo "1" 	> /proc/sys/net/ipv4/ip_forward
          
          # ポートフォワーディングを構成します。
          iptables -t nat -A PREROUTING -p tcp --dport <Port A> -j DNAT --to-destination <192.168.XX.XX>:<Port B>
      • Windows のコマンド例

        netsh interface portproxy add v4tov4 listenport=<Port A> listenaddress=* connectaddress=<192.168.XX.XX> connectport=<Port B> protocol=tcp
  • クラスターにアクセスの制御ポリシーが構成されている場合は、コンテナーのリージョンに対応する IP アドレスがホワイトリストに追加されていることを確認してください。

    リージョンと IP アドレス

    リージョン

    パブリック IP アドレス

    プライベート IP アドレス

    中国 (杭州)

    47.96.166.214

    100.104.12.64/26

    中国 (上海)

    139.224.15.48, 101.132.180.26, 47.100.18.171, 47.100.0.176, 139.224.8.64, 101.132.70.106, 101.132.156.228, 106.15.36.12, 139.196.168.125, 47.101.178.223, and 47.101.220.176

    100.104.43.0/26

    中国 (青島)

    47.104.111.68

    100.104.87.192/26

    中国 (北京)

    47.95.202.245

    100.104.114.192/26

    中国 (張家口)

    39.99.229.195

    100.104.187.64/26

    中国 (フフホト)

    39.104.147.68

    100.104.36.0/26

    中国 (深圳)

    120.78.64.225

    100.104.250.64/26

    中国 (広州)

    8.134.118.184

    100.104.111.0/26

    中国 (香港)

    8.218.59.176

    100.104.130.128/26

    日本 (東京)

    47.74.24.20

    100.104.69.0/26

    シンガポール

    8.219.240.137

    100.104.67.64/26

    米国 (シリコンバレー)

    47.254.39.224

    100.104.145.64/26

    米国 (バージニア)

    47.252.4.238

    100.104.36.0/26

    ドイツ (フランクフルト)

    47.254.158.71

    172.16.0.0/20

    英国 (ロンドン)

    8.208.14.12

    172.16.0.0/20

    インドネシア (ジャカルタ)

    149.129.238.99

    100.104.193.128/26

自己管理型 Kubernetes クラスターを Security Center に追加する

  1. Security Center コンソールにログインします。上部のナビゲーションバーで、管理するアセットのリージョンを選択します。中国 または 全世界 (中国を除く) を選択できます。

  2. 左側のナビゲーションウィンドウで、アセットセンター > コンテナアセット を選択します。

  3. Cluster タブで、Self-built cluster access をクリックします。

  4. Self-built cluster management パネルで、Self-built cluster access をクリックします。表示されるパネルで、Security Center に追加するクラスターを構成し、Generate Command をクリックします。

    パラメーター

    説明

    Cluster name

    自己管理型 Kubernetes クラスターの名前を入力します。例: text-001。

    有効期限

    自己管理型 Kubernetes クラスターを追加するために使用されるコマンドの有効期限を選択します。

    グループ

    クラスターを追加するグループを選択します。このパラメーターを、クラスターが作成されたサーバーのグループに設定します。

    サービスプロバイダー

    クラスターが作成されたサーバーのプロバイダーを選択します。

  5. 任意。Enable Log Collection セクションで、Kubernetes クラスターのログベースの脅威検出を有効にするかどうかを指定します。

    ログベースの脅威検出を有効にすると、Security Center はさらなるリスク検出のために、より多くの監査ログを収集します。ログベースの脅威検出を有効にする前に、Kubernetes クラスターに Logtail コンポーネントをインストールし、監査関連の設定を構成する必要があります。詳細については、「ログベースの脅威検出を有効にする」をご参照ください。

  6. クラスターが作成されたサーバーにログインし、サーバー上に text-001 という名前の YAML ファイルを作成し、生成されたコマンドをファイルにコピーして、サーバーで kubectl apply -f text-001.yaml コマンドを実行します。その後、クラスターが Security Center に追加されます。

    ステップ 4 で生成されたコマンドは、デフォルトでは Master ノードと Taint ノードを追加しません。Master ノードと Taint ノードを追加する必要がある場合は、次の命令に基づいて YAML ファイルの構成を変更できます。

    命令

    マスターノードまたは Taint が付与されたノードをクラスターの一部として Security Center に追加する必要がある場合は、DaemonSet の Pod テンプレートで Toleration を構成して、これらのノードで Pod をスケジュールできるようにする必要があります。

    • マスターノードの場合、YAML ファイルの spec>template>spec の下に次の Toleration を構成して、node-role.kubernetes.io/master:NoSchedule Taint を持つマスターノードで DaemonSet Pod をスケジュールできるようにします。これにより、マスターノードがクラスターの一部として Security Center に追加されます。

      spec:
        template:
          spec:
            tolerations:
            - key: node-role.kubernetes.io/master
              operator: Exists
              effect: NoSchedule
    • Taint が付与されたノードの場合、上記のマスターノードの Toleration 構成を参照して、Taint が付与されたノードで DaemonSet Pod をスケジュールします。これにより、Taint が付与されたノードがクラスターの一部として Security Center に追加されます。

    説明

    このステップでは、text-001.yaml と kubectl apply -f text-001.yaml の両方にある text-001 は、Cluster name パラメーターのサンプル値です。実際の操作では、text-001 を Cluster name パラメーターに指定した値に置き換える必要があります。

    自己管理型 Kubernetes クラスターが Security Center に追加されると、Cluster タブのクラスターリストでクラスター情報を表示できます。

ログベースの脅威検出を有効にする

クラスターの Kubernetes バージョンが 1.16 以降の場合、ログベースの脅威検出を有効にして、クラスターでより包括的なリスク検出を行うことができます。高リスクの操作や攻撃動作などのリスクを検出できます。

ステップ 1. Logtail コンポーネントをインストールする

具体的な手順については、「自己管理型 Kubernetes クラスターに Logtail コンポーネントをインストールする」の「Logtail のインストール」をご参照ください。

ステップ 2. クラスター監査機能を有効にする

次のプロシージャは参考用です。詳細については、「クラスターのクラスター監査を有効にする」をご参照ください。

  1. 登録済みクラスターを作成し、自己管理型 Kubernetes クラスターを登録済みクラスターに追加します。詳細については、「ACK One 登録済みクラスターを作成する」をご参照ください。

  2. マスターノードの audit-policy.yaml ファイルを構成します。

    マスターノードにログインし、次のテンプレートに基づいて /etc/kubernetes/audit-policy.yaml ファイルを変更します。他のマスターノードでもこのステップを実行する必要があります。

    説明

    クラスターの Kubernetes バージョンが 1.24 より前の場合、apiVersionaudit.k8s.io/v1beta1 に設定します。それ以外の場合は、apiVersionaudit.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
  3. マスターノードの 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 を取得する方法を示しています。获取集群Cluster-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. ログが収集されているか確認する

  1. Simple Log Service コンソールにログインします。

  2. 必要なプロジェクトの名前をクリックします。

  3. 関連するログがプロジェクト内の指定された Logstore に収集されているかどうかを確認します。

ステップ 4. 脅威検出を有効にする

  1. Security Center コンソールにログインします。上部のナビゲーションバーで、管理するアセットのリージョンを選択します。中国 または 全世界 (中国を除く) を選択できます。

  2. 左側のナビゲーションウィンドウで、アセットセンター > コンテナアセット を選択します。

  3. Cluster タブで、Self-built cluster access をクリックします。

  4. 必要な自己管理型 Kubernetes クラスターを見つけ、操作する 列の 編集 をクリックします。

  5. Enable Log Collection タブで、Enable Kubernetes Log Reporting to Detect Threats を選択し、次のパラメーターを構成してから、保存 をクリックします。