誰かが kubectl exec または直接のシェルセッションを介してコンテナにアクセスすると、コンテナ内で実行されるコマンドは、標準的な境界防御からは見えません。侵害されたコンテナは、ネットワークレベルのアラートをトリガーすることなく、マルウェアのダウンロード、データの窃取、権限の昇格を行う可能性があります。コンテナ内操作監査機能は、アクセス後にコンテナ内で実行されたすべてのコマンドを記録し、ローカルインシデントがクラスター全体への侵害に発展する前に、クエリ、アラート、および対応が可能な具体的な監査イベントを提供します。
このトピックでは、この機能を有効にする方法、監査レポートと詳細ログを表示する方法、リアルタイムアラートを設定する方法、および不要になった場合に機能をクリーンに無効にする方法について説明します。
これはホワイトリスト機能です。続行する前に、チケットを起票してアクセスを有効にしてください。
課金
コンテナ内操作監査機能自体は無料です。この機能を有効にすると、Simple Log Service (SLS) 機能の使用に対して課金されます。料金の詳細については、「課金概要」をご参照ください。
制限事項
クラスタータイプ:ACK Managed Cluster Pro Edition、ACK Managed Cluster Basic Edition、および ACK Dedicated Cluster。
オペレーティングシステムとカーネル:Alibaba Cloud Linux、Ubuntu、または ContainerOS で、カーネルバージョンが 4.19 以降のもの。
| OS | 最小クラスターバージョン | 追加要件 |
|---|---|---|
| Alibaba Cloud Linux | 1.18 | — |
| ContainerOS | 1.24 | — |
| Ubuntu | 1.30 (「クラスターの手動アップグレード」をご参照ください) | ノードの初期化中に OS の自動アップグレードを無効にする必要があります。/etc/resolv.conf のシンボリックリンクは /run/systemd/resolve/stub-resolv.conf を指し、DNS は DHCP によって設定されている必要があります。Cloud Parallel File System (CPFS) の永続ボリューム (PV)、イメージアクセラレーションプラグイン、およびセキュリティ強化はサポートされていません。 |
手順1:機能の有効化
コンテナ内操作監査機能を有効にすると、次の 2 つのコンポーネントがインストールされます。
ログ収集コンポーネント — 監査ログを収集し、Simple Log Service に送信して、デフォルトの監査レポートを作成します。「ログ収集コンポーネント」をご参照ください。
ack-advanced-audit コンポーネント — コンテナ内の操作を監査します。
advaudit-${cluster_id} という名前の Logstore が、ログ収集コンポーネントが使用するログプロジェクトに自動的に作成されます。監査ログはそこに保存され、デフォルトの保存期間は 180 日です。保存期間を調整するには、「Logstore の管理」をご参照ください。
機能を有効にするには:
ACK コンソールにログインし、左側のナビゲーションウィンドウで [クラスター] をクリックします。
対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[セキュリティ] > [監査] を選択します。
[監査] ページで、[コンテナ監査] タブをクリックし、[インストール] をクリックします。
手順2:監査レポートの表示
[監査] ページで、[コンテナ監査] タブをクリックし、[コンテナ監査の概要] タブをクリックします。
概要レポートには、次の内容が表示されます。
Pod のアクセス頻度と関連する Pod の詳細。

操作を実行した Kubernetes アカウント、コンテナアクセス後に実行されたコマンド、および一般的な重要な脅威のリスト。



手順3:詳細なログレコードの表示
目的に応じて、2 つの方法を利用できます。
| 方法 | 最適な用途 |
|---|---|
| 監査レポートページ | 最近の個別のイベントをすばやく確認する |
| 検索文を使用した Logstore ページ | 履歴クエリと複雑なフィルター |
監査レポートページからのログ表示
[コンテナ監査の概要] タブで、[不審なプロセスイベントリスト] セクションまでスクロールします。[traceId] または [eventId] 列のリンクをクリックします。
traceId — コンテナへのアクセス後に実行されたすべてのコマンドを表示します。
eventId — 特定の 1 つのコマンドの詳細を表示します。
Logstore ページからのログ表示
ACK コンソールにログインし、左側のナビゲーションウィンドウで [クラスター] をクリックします。
対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[セキュリティ] > [監査] を選択します。
[監査] ページで、[コンテナ監査] タブをクリックし、[コンテナ監査ログのクエリ] タブをクリックします。
検索ボックスに検索文を入力します。Pod によるクエリ —
<namespace>と<pod_name>を実際の値に置き換えます。カテゴリ フィールド 説明 Pod k8s.pod.namespacePod の名前空間 Pod k8s.pod.namePod の名前 プロセス process.name実行されたプロセスの名前 * and k8s.pod.namespace: <namespace> and k8s.pod.name: <pod_name>プロセス名によるクエリ —
<name>をプログラム名に置き換えます。* and process.name: <name>次の表に、クエリで使用できる主要なログフィールドを示します。サポートされているクエリと分析方法の完全なリストについては、「ログの検索と分析」をご参照ください。
時間範囲を設定し、[検索と分析] をクリックします。
(任意) 手順4:アラートの設定
SLS のアラート機能を使用して、主要なコンテナ操作をリアルタイムでモニタリングします。サポートされているアラートチャネルには、DingTalk ロボット、カスタム Webhook、通知センターなどがあります。
構成の詳細については、また、「アラート設定」をご参照ください。
機能の無効化
ack-advanced-audit コンポーネントをアンインストールすると、機能が無効になります。
この機能を無効にしても、advaudit-${cluster_id} Logstore は削除されません。そのままにしておくと、SLS のストレージ料金が発生し続けます。課金を停止するには、Simple Log Service コンソールにログインし、手動で Logstore を削除してください。詳細については、「Logstore の課金の停止または削除」をご参照ください。
コンポーネントをアンインストールするには:
ACK コンソールにログインし、左側のナビゲーションウィンドウで [クラスター] をクリックします。
対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。
[アドオン] ページで、ack-advanced-audit コンポーネントを見つけ、コンポーネントカードの右下隅にある [アンインストール] をクリックし、画面の指示に従ってください。
次のステップ
ack-advanced-audit のリリースノートとコンポーネントの詳細については、「ack-advanced-audit」をご参照ください。
API サーバーの操作 (誰が、いつ、どのリソースに対して何をしたか) を監査するには、「クラスター API サーバー監査機能の使用」をご参照ください。