このページでは、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 データアクセス ログ |
潜在的に悪意のある行為者が
|
権限昇格: Kubernetes RBAC 機密オブジェクトの変更 | GKE_CONTROL_PLANE_EDIT_SENSITIVE_RBAC_OBJECT |
Cloud Audit Logs: GKE 管理アクティビティ ログ |
権限の昇格を目的として、悪質な可能性のある行為者が PUT または PATCH のリクエストを使用して、機密性の高い cluster-admin ロールの ClusterRole 、RoleBinding または 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 を作成しました。
特権コンテナの |
認証情報アクセス: 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 バインディングを作成しました。
これらのユーザーとグループは実質的に匿名であるため、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 管理アクティビティ ログ |
誰かが、bind 、escalate 、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_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・つ以上の機能を備えたコンテナが作成されました。
|
永続性: 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 セキュリティ対策ダッシュボードに検出結果を表示しなくなります。