GKE Threat Detection について


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

仕組み

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 管理アクティビティ ログ
bindescalate、または impersonate 動詞を含む 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 の脅威検出を有効にする方法

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

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

制限事項

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

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

次のステップ