Security Center は、自己管理型 Kubernetes クラスターの接続をサポートしており、一元化された脅威検知とリスク管理が可能です。このトピックでは、自己管理型 Kubernetes クラスターを Security Center にオンボーディングする方法、およびオプションでログベースの脅威検知を有効にする方法について説明します。
エディション要件
| 課金方法 | 必須エディション | サーバーレベル要件 |
|---|---|---|
| サブスクリプション | Ultimate | 保護版は [Ultimate] に設定する必要があります — 「サーバーに保護版を割り当てる」 |
| 従量課金 | ホストおよびコンテナセキュリティが有効 | 保護レベルは、[ホストおよびコンテナ保護] に設定する必要があります — 詳細については、「サーバー保護レベルの割り当て |
現在のエディションが要件を満たしていない場合は、続行する前に[Security Center をスペックアップ]するか、[サービスを購入]してください。
リージョン制限
リージョン制限は、VPC (Virtual Private Cloud) にデプロイされたクラスターにのみ適用されます。
VPC ベースのクラスター:クラスターは、中国 (杭州)、中国 (北京)、中国 (上海)、中国 (深セン)、または中国 (香港) に存在する必要があります。
インターネット接続クラスター:リージョン制限は適用されません。
前提条件
開始する前に、以下を確認してください。
ターゲットサーバーで Kubernetes クラスターが実行されていること
サーバーに Docker がインストールされていること
(クラスター露出分析の場合) デプロイタイプに基づいてネットワーク構成が完了していること。「クラスターとイメージの管理」をご参照ください。
ハイブリッドクラウドデプロイメントのトラフィック転送の構成
クラスターがハイブリッドクラウドにデプロイされており、インターネット経由でアクセスできない場合は、ECS インスタンスでポート フォワーディングを構成し、クラスターの API サーバーを実行しているオンプレミスサーバーにトラフィックをルーティングします。この転送が構成されていない場合、クラスターは Security Center と通信できません。
以下の例では、ECS インスタンス 10.0.XX.XX のポート A から、オンプレミスサーバー 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>CentOS 7 — iptables
# Enable IP forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# Add the forwarding rule
iptables -t nat -A PREROUTING -p tcp --dport <Port A> -j DNAT --to-destination <192.168.XX.XX>:<Port B>Windows — netsh
netsh interface portproxy add v4tov4 listenport=<Port A> listenaddress=* connectaddress=<192.168.XX.XX> connectport=<Port B> protocol=tcpSecurity Center の IP アドレスのホワイトリストへの追加
クラスターでアクセスの制御ポリシーが設定されている場合は、ご利用のリージョンの Security Center の IP アドレスをホワイトリストに追加します。これらのアドレスがブロックされている場合、クラスターは Security Center と通信できません。
| リージョン | パブリック 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 への追加
Security Center コンソールSecurity Center コンソールSecurity Center コンソールにログインします。トップナビゲーションバーで、アセットのリージョンとして [中国] または [中国本土以外] を選択します。
左側のナビゲーションウィンドウで、[アセット] > [コンテナー] を選択します。
[クラスター] タブで、[自作クラスターへのアクセス] をクリックします。
[セルフビルドクラスター管理] パネルで、[セルフビルドクラスターアクセス] をクリックします。表示されたパネルで、クラスターパラメーターを設定し、[コマンドの生成] をクリックします。
パラメーター 説明 クラスター名 クラスターの名前。例: text-001。有効期限 生成されたオンボーディングコマンドの有効期限。 グループ クラスターを割り当てるグループ。クラスターが実行されているサーバーのグループに設定します。 サービスプロバイダー クラスターが実行されているサーバーのプロバイダー。 (オプション) [ログ収集の有効化] セクションで、ログベースの脅威検知を有効にするかどうかを選択します。有効にすると、Security Center は、より詳細なリスク分析のために追加の監査ログを収集します。これには、事前に Logtail コンポーネントとクラスター監査設定を設定する必要があります — 「ログベースの脅威検知を有効にする」をご参照ください。
クラスターを実行しているサーバーにログインします。クラスター名 (例:
text-001.yaml) で YAML ファイルを作成し、生成されたコマンドをファイルに貼り付けて、以下を実行します。kubectl apply -f text-001.yamlコマンドが完了すると、[クラスター] タブのクラスターリストにクラスターが表示されます。
ファイル名とコマンドの両方で、text-001 をステップ 4 で [クラスター名] に入力した値に置き換えます。マスターノードとテイントされたノードの追加
生成されたコマンドは、デフォルトでは DaemonSet Pod をマスターノードまたはテイントされたノードにスケジュールしません。これらのノードを含めるには、kubectl apply を実行する前に、YAML ファイルの Pod テンプレートに Toleration を追加します。
マスターノードの場合 — spec > template > spec の下に以下を追加します。
spec:
template:
spec:
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoScheduleこの Toleration により、DaemonSet Pod は node-role.kubernetes.io/master:NoSchedule Taint を持つノードにスケジュールされ、マスターノードがクラスターの一部として Security Center に追加されます。
その他のテイントされたノードの場合 — 各ノードタイプの Taint キーと効果に一致する同じ Toleration パターンを適用します。
ログベースの脅威検知の有効化
ログベースの脅威検知は、Kubernetes 1.16 以降を実行しているクラスターで利用できます。有効にすると、Security Center は API サーバー監査ログを分析することで、高リスク操作と攻撃動作を検出します。
ステップ 1. Logtail のインストール
「自己管理型 Kubernetes クラスターに Logtail コンポーネントをインストールする」の [Logtail のインストール] の手順に従ってください。
ステップ 2. クラスター監査の有効化
以下の手順は、「登録済みクラスターのクラスター監査を有効にする」に基づいています。
ACK One 登録済みクラスターを作成し、自己管理型 Kubernetes クラスターをそこに追加します。「ACK One 登録済みクラスターを作成する」をご参照ください。
各マスターノードで、
/etc/kubernetes/audit-policy.yamlを以下のポリシーで更新します。Kubernetes 1.24 より前のバージョンを実行しているクラスターの場合、
apiVersionをaudit.k8s.io/v1beta1に設定します。1.24 以降の場合、audit.k8s.io/v1を使用します。詳細については、「(非推奨) Kubernetes 1.24」をご参照ください。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各マスターノードで、
/etc/kubernetes/manifests/kube-apiserver.yamlを更新します。以下の
--audit-log-*フラグをcommandセクションに追加します。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セクションに次の環境変数を追加します。{cluster_id}を、Security Center コンソールの [クラスター] タブで確認できるクラスター ID に置き換えます。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"監査ログディレクトリとポリシーファイルを kube-apiserver Pod にマウントします。
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 コンソールにログインします。 Security Center コンソールにログインします。 Security Center コンソールにログインします。
Logtail インストール中に作成されたプロジェクトの名前をクリックします。
監査ログが予期される Logstore に流れていることを確認します。
ステップ 4. Security Center での脅威検知の有効化
セキュリティセンター コンソールにログインします。セキュリティセンター コンソールセキュリティセンター コンソールセキュリティセンター コンソール。上部ナビゲーションバーで、[中国] または [中国以外] を選択します。
左側のナビゲーションウィンドウで、[資産] > [コンテナ] を選択します。
「[クラスター] タブで、[自作クラスターへのアクセス] をクリックします。
クラスターを探し、[アクション] 列の [編集] をクリックします。
[ログ収集の有効化] タブで、[脅威を検出するための Kubernetes ログレポートの有効化] を選択し、次のパラメーターを設定して、[保存] をクリックします。
パラメーター 説明 例 ログ監査サービスのリージョン ログを保存するリージョン — ログ監査サービスのプロジェクト Logtail インストール中に作成された Simple Log Service プロジェクト k8s-log-custom-sd89ehdqログ監査サービスの Logstore Logtail インストール中に自動的に作成された Logstore audit-027b007a7dd11967a9f7e2449d8dc497