Service Mesh (ASM) でKubernetes API (KubeAPI) 操作を包括的に監視および監査する場合は、ASMのKubeAPI操作監査機能を使用して、ユーザーのルーチン操作を記録および追跡できます。 ASMインスタンスのメッシュ監査機能を有効にした後、[メッシュ監査] ページの [概要] 、[操作監査] 、[操作の概要] 、または [操作の詳細] タブをクリックして、監査レポートの詳細を表示できます。 これにより、重要なイベントをより適切に追跡および分析し、リソースに対する操作に関する統計を取得できます。 これにより、メッシュのセキュリティとトレーサビリティが向上し、セキュリティポリシーとリソース管理が最適化され、サービスメッシュの安定性と効率的な使用が保証されます。
前提条件
背景情報
このトピックのリソースは、仮想サービス、Istioゲートウェイ、宛先ルール、envoyフィルター、サイドカープロキシ、サービスエントリなどのIstioリソースを指します。
メッシュ監査機能を有効にすると、生成された監査ログに対して課金されます。 課金方法の詳細については、「ペイバイ機能」をご参照ください。
手順1: KubeAPI操作監査機能の有効化
新しいASMインスタンスの場合
ASMコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、[ASMインスタンスの作成] をクリックします。 [サービスメッシュの作成] ページで、[メッシュ監査] セクションの [メッシュ監査の有効化] を選択し、ビジネス要件に基づいてパラメーターを設定し、[サービスメッシュの作成] をクリックします。
設定項目の説明については、「ASMインスタンスの作成」をご参照ください。
説明デフォルトでは、mesh-log-${Mesh-ID} という名前のプロジェクトがSimple Log Serviceに作成され、監査ログを保存するためにaudit-${Mesh-ID} という名前のLogstoreがプロジェクトに作成されます。
既存のASMインスタンスの場合
ASMコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASMインスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ監査] ページで、[メッシュ監査の有効化] を選択し、[OK] をクリックします。
ステップ2: KubeAPI監査レポートの表示
ASMコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASMインスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ監査] ページで、ビジネス要件に基づいて [メッシュ監査の概要] または [操作の詳細] タブをクリックし、監査レポートの詳細を表示します。
メッシュ監査の概要: このタブでは、ASMインスタンスで呼び出されるKubernetes API操作の詳細を表示できます。
操作の詳細: このタブでは、ASMインスタンスの特定のリソースに対する操作に関する詳細情報を表示できます。
リソースタイプを指定して、そのようなリソースに対する操作に関する詳細情報をリアルタイムで照会できます。 操作の総数、名前空間による操作の分布、時間の経過に伴う操作の傾向、および詳細な操作リストを表示できます。
関連する API 操作
監査ログの表示
監査ログを照会および分析する場合は、Simple Log Serviceコンソールに移動して詳細なログを表示します。
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、mesh-log-${Mesh-ID} という名前のプロジェクトをクリックします。
ASMインスタンス用に作成されたaudit-${Mesh-ID} ログストアをクリックします。 次に、[検索と分析] をクリックして監査ログを表示します。
説明メッシュ監査機能を有効にすると、指定されたプロジェクトにaudit-${mesh-ID} という名前のLogstoreが作成されます。
デフォルトでは、インデックスはすでにLogstoreに設定されています。 インデックスを変更しないでください。 そうしないと、監査ログからレポートが生成されない場合があります。
デフォルトでは、ASMのAPIサーバー監査ログは、Simple Log Serviceの対応するLogstoreに30日間保存されます。 ログのデフォルトの保持期間を変更する方法の詳細については、「Logstoreの管理」をご参照ください。
次の方法を使用して、監査ログを照会できます。
RAMユーザーが実行する操作を照会するには、検索ボックスにRAMユーザーIDを入力し、[検索と分析] をクリックします。
リソースに対して実行される操作をクエリするには、検索ボックスにリソース名を入力し、[検索と分析] をクリックします。
システムコンポーネントによって実行される操作をクエリするには、検索ボックスに
NO T user.us ername: node NO T user.us ername: serviceaccount NO T user.us ername: apiserver NO T user.us ername: kube-scheduler NO T user.us ername: kube-controller-manager
と入力し、[検索と分析] をクリックします。
クエリ方法と統計方法の詳細については、「ログ検索の概要」をご参照ください。
アラートの設定
Simple Log Serviceを使用すると、アラートを設定して、特定のリソースで実行される操作をリアルタイムで監視できます。 アラートは、SMSメッセージ、DingTalkチャットボット、電子メール、カスタムウェブフック、Alibaba Cloud管理コンソールのメッセージセンターを使用して送信できます。 詳細については、「アラート」をご参照ください。
監査レポートでクエリステートメントを実行して、監査ログをクエリすることもできます。
例1: コンテナーでのコマンド実行時のアラートの設定
企業では、ASMインスタンスに対する厳格なアクセス制御が必要であり、ユーザーがASMインスタンスのコンテナーにログオンしたりコマンドを実行したりすることはできません。 会社は、ユーザーがコンテナーにログオンしたり、コンテナーでコマンドを実行しようとした場合に、すぐにアラートを通知したいと考えています。 アラート通知には、ログオンしたコンテナー、実行されたコマンド、オペレーター、イベントID、操作時間、送信元IPアドレスの情報を含める必要があります。
サンプルクエリ文:
として動詞: create and objectRef.subresource:exec and stage: ResponseStarted | SELECT auditID as "Event ID", date_format(from_unixtime(__time__), '% Y-% m-% d % T' ) as "Operation time", regexp_extract("requestURI", '([\^?] *)) /* ', 1)as "Resource", regexp_extract("requestURI", '\?(.*)', 1) を "Command" 、"responseStatus.code" を "Status code" 、 CASE 「user.usの名前」のとき! ='kubernetes-admin' 、"user.us ername" WHEN "user.us ername" = 'kubernetes-admin' とregexp_like("annotations.authorization.k8s.io/reason" 、'RoleBinding') 、regexp_extract("annotations.authorization.k8s.io/reason" 、'to User "(\w +)" 、1) ELSE 'kubernetes-admin' END 「ユーザー名」として、CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END 「送信元IPアドレス」制限100
サンプル条件式:
操作イベント=~ ".*"
例2: APIサーバーへのインターネットアクセスに失敗した場合のアラートの設定
インターネットアクセスを許可するASMインスタンスへの攻撃を防ぐために、会社はインターネット上のソースIPアドレスからの接続数と接続失敗率を監視します。 会社は、送信元IPアドレスからの接続数と接続失敗率が指定されたしきい値を超えると、すぐにアラートを送信する必要があります。 たとえば、会社は、送信元IPアドレスからの接続数が10に達し、5つ以上の接続が失敗した場合にアラートを送信する必要があります。 アラート通知には、送信元IPアドレス、送信元IPアドレスが属するリージョン、および送信元IPアドレスが危険かどうかの情報を含める必要があります。
サンプルクエリ文:
による順序* | ipを「ソースIPアドレス」、合計を「インターネット接続要求数」、ラウンド (レート * 100、2) を「接続失敗率」、failCountを「不正なインターネット接続要求数」、CASEを「security_check_ip(ip) = 1の場合、「はい」は「IPアドレスが危険かどうか」、ip_to_country () ip_to_province(ip) as "Province" 、ip_to_city(ip) as "City" 、ip_to_provider(ip) as "ISP from (select CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs、0))) ELSE sourceIPs END ipとして、合計としてカウント (1) 、sum(CASE WHEN "responseStatus.code" < 400 then 0 ELSE 1 END) * レートとして1.0 /カウント (1) 、count_if("responseStatus.code" = 403) をfailCountとして ip制限10000によるロググループからip_to_domain(ip) ! =「接続数」> 10および「接続失敗率」> 50を有する「イントラネット」「接続数」desc制限100
サンプル条件式:
送信元IPアドレス=~ ".*"
削除済みプロジェクトの再作成
メッシュ監査に使用されているプロジェクトをSimple Log Serviceから誤って削除しても、メッシュ監査機能を使用したい場合は、削除したプロジェクトを再作成する必要があります。
ASMコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASMインスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
On theメッシュ監査ページをクリックします。再作成で、再構築メッシュ監査メッセージを表示します。
再作成されたプロジェクトは、削除前のプロジェクト名の後に名前が付けられ、プロジェクトが再作成されたときの末尾にタイムスタンプが付けられます。
関連ドキュメント
重要なリソースの変更についてアラート連絡先にアラートをタイムリーに送信する方法の詳細については、「ASMリソースでの操作の監査アラートの構成」をご参照ください。
ASMで、ワークロードID、ピア認証、リクエスト認証、許可ポリシーなどのゼロ信頼セキュリティ機能を設定して、メッシュリソースをよりきめ細かく管理し、メッシュセキュリティを向上させることができます。 詳細については、「ゼロ信頼セキュリティの概要」をご参照ください。