コンテナー監査を使用すると、コンテナー内のさまざまなユーザーが実行および実行するコマンドと操作を監査できます。 このトピックでは、コンテナー監査を設定する方法、Log Serviceを使用して監査ログを収集および分析する方法、および監査ログに基づいてカスタムアラートルールを作成する方法について説明します。
課金
コンテナー監査機能はパブリックプレビュー中です。 この機能は無料で使用できます。 コンテナー監査を有効にすると、関連するSimple Log Service (SLS) 機能が使用され、これらの機能に料金が請求されます。 SLSの課金の詳細については、「課金の概要」をご参照ください。
制限事項
クラスタータイプ: ACK Proクラスター、ACK Basicクラスター、およびACK専用クラスターのみがサポートされています。
クラスター制限: カーネルバージョンが4.19、Ubuntu、およびContainerOSオペレーティングシステムよりも後のAlibaba Cloud Linuxのみが、コンテナ監査をサポートしています。
Alibaba Cloud Linux: クラスターのKubernetesバージョンが1.18以降です。
Ubuntu:
クラスターのKubernetesバージョンが1.30以上です。 詳細については、「手動でACKクラスターをアップグレード」をご参照ください。
Cloud Parallel File Storage (CPFS) ボリューム、イメージアクセラレーションプラグイン、およびセキュリティ強化はサポートされていません。
ContainerOS: クラスターのKubernetesバージョンが1.24以降です。
手順1: コンテナー監査の有効化
コンテナ監査を有効にするには、logtail-dsコンポーネントとack-advanced-auditコンポーネントをインストールします。
logtail-ds: 監査ログをLog Serviceに収集し、デフォルトの監査レポートを作成します。
ack-advanced-audit: コンテナー監査を実装します。
コンテナー監査を有効にすると、デフォルトでlogtail-dsが使用するプロジェクトにadvaudit-${cluster_id} という名前のLogstoreが作成されます。 Logstoreは、監査ログを保存するために使用されます。 監査ログの保存期間は180日です。 保持期間を変更する方法の詳細については、「Logstoreの管理」をご参照ください。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ログと監視] タブのlogtail-dsコンポーネントと [セキュリティ] タブのack-advanced-auditコンポーネントを見つけ、プロンプトに従ってこれらの2つのコンポーネントをインストールします。
ステップ2: 監査レポートの表示
コンテナー監査を有効にすると、デフォルトでKubernetesコンテナー監査レポートという名前の監査レポートがプロジェクトに作成されます。
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、クラスターで使用されているプロジェクトを見つけ、プロジェクト名をクリックします。
左側のナビゲーションウィンドウで、アイコンをクリックします。 次に、[Kubernetesコンテナー監査レポート] をクリックして、レポートの内容を表示します。
ポッドへのアクセス数とポッド情報を表示します。
Kubernetes操作を実行したアカウント、ポッドで実行されたコマンド、および一般的な高リスク操作を表示します。
ステップ3: 詳細なログデータを表示する
次の方法を使用して、詳細なログデータを表示できます。
監査レポートページで詳細なログデータを表示します。 この方法は、イベントのログをチェックするのに適しています。
Logstoreページでクエリ文を実行します。 この方法は、複雑なシナリオでの履歴データとイベントのチェックに適しています。
監査レポートページでの詳細なログデータの表示
[Kubernetesコンテナー監査レポート] ページで、[高リスク操作] セクションの [traceId] および [eventId] 列のハイパーリンクをクリックします。
traceId列のハイパーリンクをクリックして、各アクセス時にポッドで実行されたコマンドの監査ログを表示します。
eventId列のハイパーリンクをクリックして、コマンドの詳細を表示します。
Logstoreページでクエリ文を実行する
Logstoreページでクエリを実行して、詳細なログデータを表示できます。
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、クラスターで使用されているプロジェクトを見つけ、プロジェクト名をクリックします。
を選択します。 次に、audit-${clustered} という名前のLogstoreをクリックします。
advaudit-${cluster_id} の ${cluster_id} は、クラスターのIDを示します。
検索ボックスにクエリステートメントを入力します。
ポッドで実行されたコマンドの監査ログを照会します。* d k8s.pod.nameスペース: <namespace> d k8s.pod.name: <pod_name> を入力します。 <namespace> をポッドの名前空間に、<pod_name> をポッドの名前に置き換えます。
プログラムを実行するために実行された操作の監査ログを照会します。* d process.name: <name> を入力します。 <name> をプログラムの名前に置き換えます。
ログデータのクエリ方法の詳細については、「クエリ方法」をご参照ください。
15分 (相対) をクリックして、クエリの時間範囲を指定します。
[検索と分析] をクリックして、クエリと分析結果を表示します。
(オプション) 手順4: 監査ログに基づいてアラートルールを作成する
Log Serviceが提供するアラート機能を使用して、監査ログに基づいてリアルタイムでアラートを生成できます。 これにより、できるだけ早い機会にポッド内の重要な操作イベントを学習できます。 利用可能なアラート通知方法は
DingTalkチャットボット、カスタムwebhooks、および Alibaba Cloudメッセージセンター。 その他のアラート方法の詳細については、「アラート」をご参照ください。
コンテナー監査の無効化
ack-advanced-auditをアンインストールして、コンテナー監査を無効にできます。
この操作では、自動的に作成されたadvaudit-${cluster_id} という名前のLogstoreは削除されません。 log Serviceコンソールにログインし、手動で削除する必要があります。 詳細については、「Logstoreの削除」をご参照ください。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ログと監視] タブをクリックし、[ack-advanced-audit] コンポーネントを見つけ、カードの右下にある [アンインストール] をクリックし、プロンプトに従ってコンポーネントをアンインストールします。
関連ドキュメント
ack-advanced-auditおよびlogtail-dsのリリースノートの詳細については、「ack-advanced-audit」および「Logtailのリリースノート」をご参照ください。
APIサーバーの監査ログ機能は、「誰がどのリソースに対して、いつどのアクションを実行したか」のトラブルシューティングに役立ちます。詳細については、「クラスター監査の操作」をご参照ください。