GKE Threat Detection について


このページでは、GKE セキュリティ ポスチャー ダッシュボードで GKE 脅威検出を使用して、対象となる GKE クラスタをスキャンしてアクティブな脅威の有無を確認する方法について説明します。GKE セキュリティ ポスチャー ダッシュボードでは、対象となる GKE クラスタでさまざまなスキャンと監査機能を有効にできます。また、セキュリティ問題の解決に役立つ推奨事項も表示されます。このページでは、GKE Threat Detection の仕組み、使用する事前定義ルール、制限事項、有効にする方法について説明します。

このページは、自社の脆弱性検出ソリューションを実装するセキュリティ スペシャリストを対象としています。コンテンツで参照する一般的なロールとタスク例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。 Google Cloud

このページを読む前に、セキュリティ対策ダッシュボードの概要を理解しておいてください。GKE Threat Detection は、セキュリティ対策ダッシュボードの機能です。

仕組み

GKE の脅威検出は、GKE Enterprise ユーザーが利用できる高度な GKE セキュリティ ポスチャー ダッシュボード機能です。GKE クラスタがフリートに登録されると、GKE の脅威検出機能は、Cloud Logging の GKE 監査ログをクラスタとワークロードの脅威に関する事前定義ルールのセットと比較して評価します。脅威が検出されると、GKE セキュリティ ポスチャー ダッシュボードに検出結果が表示され、脅威の説明、潜在的な影響、脅威を緩和するための推奨アクションを確認できます。

フリート全体で登録されているすべての GKE クラスタがアクティブな脅威を検出するために継続的にスキャンされます。検出された脅威は、MITRE ATT&CK® 戦術を使用して分類されます。

GKE の脅威検出は、Security Command Center の Event Threat Detection サービスを利用しています。GKE セキュリティ ポスチャー ダッシュボードでは、GKE に適用されるルールのサブセットのみが評価されます。

含まれている GKE セキュリティ ポスチャー機能

GKE の脅威検出は、Kubernetes のセキュリティ ポスチャー スキャンの高度な階層にバンドルされています。クラスタで GKE の脅威検出を有効にすると、次のスキャン機能も有効になります。

広範なセキュリティ戦略の一環としての使用

GKE の脅威検出は、環境で使用すべきさまざまなセキュリティ オブザーバビリティ プロダクトの一つです。脆弱性スキャンなど、GKE のセキュリティ対策ダッシュボードの他の機能を使用して、クラスタでセキュリティに関するさまざまな問題をモニタリングすることを強くおすすめします。詳細については、GKE ドキュメントのセキュリティ ポスチャー ダッシュボードについてをご覧ください。

また、クラスタのセキュリティを強化するのセキュリティ対策を、クラスタとワークロードに可能な限り多く実装することもおすすめします。

料金

GKE の脅威検出は、GKE Enterprise を通じて追加料金なしで提供されます。

GKE Threat Detection の事前定義ルール

次の表に、GKE 脅威検出で GKE 監査ログを評価する評価ルールを示します。

表示名 API 名 ログソースのタイプ 説明
防御回避: ブレークグラス ワークロードのデプロイの作成(プレビュー BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_CREATE Cloud Audit Logs:
管理アクティビティ ログ
ブレークグラス(非常時用アクセス権限)フラグを使用して Binary Authorization コントロールをオーバーライドすることによりデプロイされたワークロードを検出します。
防御回避: ブレークグラス ワークロードのデプロイの更新(プレビュー BINARY_AUTHORIZATION_BREAKGLASS_WORKLOAD_UPDATE Cloud Audit Logs:
管理アクティビティ ログ
ブレークグラス(非常時用アクセス権限)フラグを使用して Binary Authorization コントロールをオーバーライドすることによりワークロードが更新された場合に検出します。
検出: 機密性の高い Kubernetes オブジェクトのチェック GKE_CONTROL_PLANE_CAN_GET_SENSITIVE_OBJECT Cloud Audit Logs:
GKE データアクセス ログ

潜在的に悪意のある行為者が kubectl auth can-i get コマンドを使用して、GKE 内のどの機密オブジェクトをクエリできるか特定しようとしました。具体的には、このルールは、行為者が次のオブジェクトに対する API アクセスを確認したかどうかを検出します。

権限昇格: Kubernetes RBAC 機密オブジェクトの変更 GKE_CONTROL_PLANE_EDIT_SENSITIVE_RBAC_OBJECT Cloud Audit Logs:
GKE 管理アクティビティ ログ
権限の昇格を目的として、悪質な可能性のある行為者が PUT または PATCH のリクエストを使用して、機密性の高い cluster-admin ロールの ClusterRoleRoleBinding または ClusterRoleBinding ロールベースのアクセス制御(RBAC)オブジェクトを変更しようとしました。
権限昇格: マスター証明書の Kubernetes CSR の作成 GKE_CONTROL_PLANE_CSR_FOR_MASTER_CERT Cloud Audit Logs:
GKE 管理アクティビティ ログ
悪意を持っている可能性がある行為者が Kubernetes マスター証明書署名リクエスト(CSR)を作成し、cluster-admin アクセス権が付与されました。
権限昇格: 機密性の高い Kubernetes バインディングの作成 GKE_CONTROL_PLANE_CREATE_SENSITIVE_BINDING Cloud Audit Logs:
IAM 管理アクティビティ監査ログ
権限を昇格させるため、悪意を持っている可能性がある行為者が cluster-admin ロールに新しい RoleBinding オブジェクトまたは ClusterRoleBinding オブジェクトを作成しようとしました。
権限昇格: 漏洩したブートストラップ認証情報を使用した Kubernetes CSR の取得 GKE_CONTROL_PLANE_GET_CSR_WITH_COMPROMISED_BOOTSTRAP_CREDENTIALS Cloud Audit Logs:
GKE データアクセス ログ
悪意を持っている可能性のある行為者が、漏洩したブートストラップ認証情報を使用して kubectl コマンドを実行し、証明書署名リクエスト(CSR)をクエリしました。
権限昇格: Kubernetes 特権コンテナのリリース GKE_CONTROL_PLANE_LAUNCH_PRIVILEGED_CONTAINER Cloud Audit Logs:
GKE 管理アクティビティ ログ

悪意を持っている可能性のある行為者が、特権コンテナまたは権限昇格機能を備えたコンテナを含む Pod を作成しました。

特権コンテナの privileged フィールドは true に設定されています。権限昇格機能を備えたコンテナの allowPrivilegeEscalation フィールドが true に設定されています。詳細については、Kubernetes ドキュメントの SecurityContext v1 core API リファレンスをご覧ください。

認証情報アクセス: Kubernetes Namespace でアクセスされた Secret SECRETS_ACCESSED_IN_KUBERNETES_NAMESPACE Cloud Audit Logs:
GKE データアクセス ログ
現在の Kubernetes Namespace のサービス アカウントがシークレットまたはサービス アカウント トークンにアクセスするタイミングを検出します。
初期アクセス: インターネットから匿名で作成された GKE リソース(プレビュー GKE_RESOURCE_CREATED_ANONYMOUSLY_FROM_INTERNET Cloud Audit Logs:
GKE 管理アクティビティ ログ
実質的に匿名のインターネット ユーザーによるリソース作成イベントを検出します。
初期アクセス: インターネットから匿名で変更された GKE リソース(プレビュー GKE_RESOURCE_MODIFIED_ANONYMOUSLY_FROM_INTERNET Cloud Audit Logs:
GKE 管理アクティビティ ログ
実質的に匿名のインターネット ユーザーによるリソース操作イベントを検出します。
権限昇格: 実質的に匿名のユーザーに GKE クラスタへのアクセス権を付与(プレビュー GKE_ANONYMOUS_USERS_GRANTED_ACCESS Cloud Audit Logs:
GKE 管理アクティビティ ログ

誰かが、次のいずれかのユーザーまたはグループを参照する RBAC バインディングを作成しました。

  • system:anonymous
  • system:unauthenticated
  • system:authenticated

これらのユーザーとグループは実質的に匿名であるため、RBAC ロールへのロール バインディングまたはクラスタロール バインディングを作成する場合は使用しないでください。バインディングが必要なことを確認します。バインディングが不要な場合は、削除します。

実行: 不審な実行またはシステム Pod へのアタッチ(プレビュー GKE_SUSPICIOUS_EXEC_ATTACH Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、exec コマンドまたは attach コマンドを使用して、シェルを取得した、または、kube-system Namespace で実行されているコンテナに対してコマンドを実行しました。これらのメソッドは、正当なデバッグ目的で使用されることもあります。ただし、kube-system Namespace は Kubernetes によって作成されたシステム オブジェクトを対象としており、予期しないコマンド実行やシェルの作成は確認する必要があります。
権限昇格: 機密性の高いホストパスのマウントを使用して作成されたワークロード(プレビュー GKE_SENSITIVE_HOSTPATH Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、ホストノードのファイル システム上の機密性の高いパスに hostPath ボリューム マウントを含むワークロードを作成しました。ホスト ファイルシステム上のこれらのパスへのアクセスは、ノードの特権情報や機密情報へのアクセスや、コンテナ エスケープに使用できます。可能であれば、クラスタで hostPath ボリュームを許可しないでください。
権限昇格: shareProcessNamespace が有効なワークロード(プレビュー GKE_SHAREPROCESSNAMESPACE_POD Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、shareProcessNamespace オプションを true に設定してワークロードをデプロイし、すべてのコンテナが同じ Linux プロセス名前空間を共有できるようにしました。これにより、信頼できないコンテナや不正使用されたコンテナが、他のコンテナで実行中のプロセスから環境変数、メモリ、その他の機密データにアクセスして制御することで、権限を昇格させるおそれがあります。
権限昇格: 特権動詞を含む ClusterRole(プレビュー GKE_CLUSTERROLE_PRIVILEGED_VERBS Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、bindescalateimpersonate のいずれかの動詞を含む RBAC ClusterRole を作成しました。これらの動詞を使用してロールにバインドされたサブジェクトは、より高い権限を持つ他のユーザーの権限を借用したり、追加の権限を含む追加の Roles または ClusterRoles にバインドしたり、自身の ClusterRole 権限を変更したりできます。これにより、これらのサブジェクトがクラスタ管理者権限を取得する可能性があります。
権限昇格: 特権ロールへの ClusterRoleBinding(プレビュー GKE_CRB_CLUSTERROLE_AGGREGATION_CONTROLLER Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、デフォルトの system:controller:clusterrole-aggregation-controller ClusterRole を参照する RBAC ClusterRoleBinding を作成しました。このデフォルトの ClusterRole には escalate 動詞があります。これにより、サブジェクトは自分のロールの権限を変更し、権限昇格を許可できます。
防御回避: 手動で削除された証明書署名リクエスト(CSR)(プレビュー GKE_MANUALLY_DELETED_CSR Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、証明書署名リクエスト(CSR)を手動で削除しました。CSR はガベージ コレクション コントローラによって自動的に削除されますが、悪意のある行為者が検出を回避するために手動で削除する可能性があります。削除された CSR が承認され発行された証明書に対するものの場合、悪意を持つ可能性のある行為者は、クラスタにアクセスするための追加の認証方法を取得するようになります。証明書に関連付けられている権限は、含まれるサブジェクトによって異なりますが、高度な権限が付与される場合があります。Kubernetes は証明書の取り消しをサポートしていません。
認証情報アクセス: Kubernetes 証明書署名リクエスト(CSR)の承認の試みに失敗しました(プレビュー GKE_APPROVE_CSR_FORBIDDEN Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、手動で証明書署名リクエスト(CSR)を承認しようとしたが、操作が失敗しました。クラスタ認証用の証明書の作成は、攻撃者が侵害されたクラスタへの永続的なアクセスを作成する一般的な方法です。証明書に関連付けられている権限は、含まれるサブジェクトによって異なりますが、高度な権限を持つ場合があります。
認証情報アクセス: 手動で承認された Kubernetes 証明書署名リクエスト(CSR)(プレビュー GKE_CSR_APPROVED Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、証明書署名リクエスト(CSR)を手動で承認しました。クラスタ認証用の証明書の作成は、侵害されたクラスタへの永続的なアクセスを作成するために攻撃者が使用する一般的な方法です。証明書に関連付けられている権限は、含まれるサブジェクトによって異なりますが、高度な権限が付与される場合があります。
実行: リバースシェルを発生させる可能性がある引数を使用して作成された Kubernetes Pod(プレビュー GKE_REVERSE_SHELL_POD Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、一般的にリバースシェルに関連付けられているコマンドまたは引数を含む Pod を作成しました。攻撃者はリバースシェルを使用して、クラスタへの初期アクセスを拡大または維持し、任意のコマンドを実行します。
防御回避: 可能性のある Kubernetes Pod のマスカレーディング(プレビュー GKE_POD_MASQUERADING Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、通常のクラスタ オペレーションのために GKE が作成するデフォルトのワークロードと同様の命名規則で Pod をデプロイしました。この手法はマスカレーディングと呼ばれます。
権限昇格: 不審な Kubernetes コンテナ名 - エクスプロイトとエスケープ(プレビュー GKE_SUSPICIOUS_EXPLOIT_POD Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、コンテナ エスケープまたはクラスタに対して他の攻撃を実行するために使用される一般的なツールと同様の命名規則で Pod をデプロイしました。
影響: 不審な Kubernetes コンテナ名 - コイン マイニング(プレビュー GKE_SUSPICIOUS_CRYPTOMINING_POD Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが、一般的な暗号通貨マイナーと同様の命名規則で Pod をデプロイしました。これは、クラスタへの初期アクセスを達成した攻撃者が、クラスタのリソースを暗号通貨マイニングに使用しようとしている可能性があります。
実行: 機密性の高い名前空間でトリガーされたワークロード(プレビュー GKE_SENSITIVE_NAMESPACE_WORKLOAD_TRIGGERED Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが kube-system または kube-public 名前空間にワークロード(Pod や Deployment など)をデプロイしました。これらの名前空間は GKE クラスタの運用に不可欠であり、未承認のワークロードはクラスタの安定性やセキュリティを損なう可能性があります。
実行: GKE で過剰な機能を持つコンテナを起動する(プレビュー GKE_EXCESSIVELY_CAPABLE_CONTAINER_CREATED Cloud Audit Logs:
GKE 管理アクティビティ ログ
セキュリティ コンテキストが昇格したクラスタで、次の 1・つ以上の機能を備えたコンテナが作成されました。
  • CAP_SYS_MODULE
  • CAP_SYS_RAWIO
  • CAP_SYS_PTRACE
  • CAP_SYS_BOOT
  • CAP_DAC_READ_SEARCH
  • CAP_NET_ADMIN
  • CAP_BPF
これらの機能は、コンテナからエスケープするために使用できます。これらの機能をプロビジョニングする際は注意が必要です。
永続性: GKE Webhook 構成が検出されました(プレビュー GKE_WEBHOOK_CONFIG_CREATED Cloud Audit Logs:
GKE 管理アクティビティ ログ
GKE クラスタで Webhook 構成が検出されました。Webhook は Kubernetes API リクエストをインターセプトして変更できるため、攻撃者がクラスタ内に永続化したり、リソースを操作したりする可能性があります。
防御回避: 静的 Pod の作成(プレビュー GKE_STATIC_POD_CREATED Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが GKE クラスタに静的 Pod を作成しました。静的 Pod はノードで直接実行され、Kubernetes API サーバーをバイパスするため、モニタリングと制御が難しくなります。攻撃者は静的 Pod を使用して検出を回避したり、永続性を維持したりできます。
初期アクセス: TOR プロキシ IP から行われた成功した API 呼び出し(プレビュー GKE_TOR_PROXY_IP_REQUEST Cloud Audit Logs:
GKE 管理アクティビティ ログ
Tor ネットワークに関連付けられた IP アドレスから GKE クラスタへの API 呼び出しが正常に完了しました。Tor は匿名性を提供します。攻撃者は、多くの場合、身元を隠すために Tor を利用します。
初期アクセス: GKE NodePort サービスが作成されました(プレビュー GKE_NODEPORT_SERVICE_CREATED Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが NodePort サービスを作成しました。NodePort Service は、ノードの IP アドレスと静的ポートに Pod を直接公開します。これにより、クラスタの外部から Pod にアクセスできるようになります。これにより、攻撃者が公開されたサービスの脆弱性を悪用してクラスタまたは機密データにアクセスできるため、重大なセキュリティ リスクが生じる可能性があります。
影響: GKE kube-dns の変更が検出されました(プレビュー GKE_KUBE_DNS_MODIFICATION Cloud Audit Logs:
GKE 管理アクティビティ ログ
誰かが GKE クラスタの kube-dns 構成を変更しました。GKE kube-dns はクラスタのネットワーキングの重要なコンポーネントであり、構成ミスがあるとセキュリティ侵害につながる可能性があります。
非推奨のルールとシャットダウン ルールについては、非推奨をご覧ください。

GKE の脅威検出を有効にする方法

GKE の脅威検出を有効にするには、対象となるクラスタを Kubernetes のセキュリティ対策スキャンの高度な階層に登録します。これにより、ワークロード構成の監査やセキュリティに関する公開情報の表示など、Kubernetes セキュリティ対策スキャンの基本階層に含まれるすべての機能も有効になります。

詳細については、GKE の脅威検出を使用してクラスタ内の脅威を検出するをご覧ください。

制限事項

GKE の脅威検出には次の制限が適用されます。

  • GKE Enterprise でのみ使用できます
  • 組織内のプロジェクトでのみ使用できます
  • データ所在地の構成など、Security Command Center のオプションをサポートしていません
  • フリートに登録されているクラスタの結果のみを表示します
  • GKE は、関連する影響を受けるリソースがなくなった脅威の検出結果を最大 180 日間保持します。
  • 既存のクラスタの結果のみが表示されます。クラスタを削除すると、GKE 脅威検出は GKE セキュリティ対策ダッシュボードに検出結果を表示しなくなります。

次のステップ