マネージド Kubernetes の脅威要因
マネージド Kubernetes 環境では、セキュリティへの対処には、さまざまなインスタンスの脅威を理解して軽減する必要があります。 特定のインスタンスにおける脅威要因の内訳を次に示します。
セキュリティ侵害を受けたアカウント
- 脅威要因: 攻撃者は、盗まれた資格情報、API トークン、またはキーを使用して Kubernetes クラスターにアクセスします。 これにより、不正アクセス、データの盗難、悪意のあるデプロイにつながるおそれがあります。
- 軽減策: 強力な認証メカニズム、多要素認証 (MFA)、資格情報の定期的なローテーション、最小特権アクセスの原則を実装します。
脆弱なイメージまたはイメージの構成ミス
- 脅威要因: 脆弱性や構成の誤りがあるコンテナー イメージは、デプロイ後に攻撃者によって悪用される可能性があります。 これらの脆弱性には、古いソフトウェア、セキュリティで保護されていない既定の設定、または埋め込みシークレットが含まれる可能性があります。
- 軽減策: イメージ スキャン ツールを使用して、デプロイ前に脆弱性を検出し、画像の出所ポリシーを適用し、コンテナー イメージ署名プロセスを採用します。
環境の構成の誤り
- 脅威要因: Kubernetes の設定またはデプロイ記述子の構成が間違うと、クラスターが攻撃にさらされる可能性があります。 一般的な問題には、公開されているダッシュボード インターフェイス、過度に制限されていない RBAC 設定、セキュリティで保護されていないエンドポイントなどがあります。
- 軽減策: セキュリティで保護された構成のベスト プラクティスに従い、自動化されたツールを使用して構成を定期的に監査し、アドミッション コントローラーを使用してポリシー コンプライアンスを適用します。
アプリケーション攻撃レベル
- 脅威要因: コンテナーで実行されているアプリケーションは、SQL インジェクションやクロスサイト スクリプティング (XSS) などの従来の Web 攻撃ベクトルに対して脆弱である可能性があります。これにより、コンテナーが侵害されたり、さらにクラスターが悪用されたりする可能性があります。
- 軽減策: 入力検証や出力エンコードなどのアプリケーションのセキュリティに関するベスト プラクティスを採用し、Web アプリケーション ファイアウォール (WAF) を使用します。 静的および動的な分析ツールなど、継続的インテグレーション (CI)/継続的デリバリーまたはデプロイ (CD) パイプラインにセキュリティを実装します。
ノード レベルの攻撃
- 脅威要因: 攻撃者が Kubernetes ノードにアクセスすると、特権をエスカレートしてクラスター全体を制御できる可能性があります。 古いオペレーティング システムまたは Kubernetes コンポーネントから脆弱性が発生する可能性があります。
- 軽減策: 最新のセキュリティ パッチでノードを更新し、ネットワーク ポリシーとファイアウォールを使用してノードへのアクセスを制限し、ホストベースの侵入検出システム (HIDS) を使用します。
未承認のトラフィック
- 脅威要因: ネットワーク ポリシーが正しく構成されていない場合、クラスターへの、またはクラスターからの不正アクセスが発生する可能性があります。これにより、攻撃者はデータを流出させ、マルウェアを配信し、公開されたサービスを悪用できるようになります。
- 軽減策: 厳密なネットワーク ポリシーを実装して、イングレス トラフィックとエグレス トラフィックを制御し、名前空間を使用して機密性の高いワークロードを分離し、異常なパターンのトラフィックを監視します。
マネージド Kubernetes 環境でこれらの脅威に対処するには、Kubernetes 固有のプラクティスと従来のセキュリティ対策の両方を含む多層セキュリティ アプローチが必要です。 継続的な監視、定期的な監査、クラスターのあらゆる側面での最小特権原則の遵守は、堅牢な Kubernetes セキュリティ戦略に不可欠な要素です。
一般的な攻撃手法
- 脆弱なイメージを悪用する - クラスターへの初期アクセスを可能にするクラスター内の一般向けの脆弱なアプリケーション。 悪名高いケース: SolarWinds、Log4j
- 公開されているアプリケーションへのアクセス - インターネットに公開されている機密性の高いインターフェイスは、セキュリティ上のリスクを伴います。 一部の一般的なフレームワークはインターネットに公開されることを意図していないため、既定では認証を必要としません。 したがって、それらをインターネットに公開すると、機密性の高いインターフェイスへの認証されていないアクセスが可能になり、悪意のあるアクターによるコードの実行やクラスター内のコンテナーのデプロイが可能になります。 このようなインターフェイスの例としては、Apache NiFi、Kubeflow、Argo Workflows、Weave Scope、Kubernetes ダッシュボードなどがあります。
- バックドア コンテナーのデプロイ - 攻撃者は、クラスター内のコンテナーで悪意のあるコードを実行します。 攻撃者は、DaemonSet や Deployments などの Kubernetes コントローラーを使用して、クラスター内の 1 つまたはすべてのノードで一定数のコンテナーが確実に実行されるようにしました。
- ロールの制限が少なすぎる SA の悪用 - サービス アカウント (SA) は、Kubernetes 内のアプリケーション ID を表します。 既定では、SA はクラスター内で作成されたすべてのポッドにマウントされます。 ポッド内のコンテナーは SA を使用して、Kubernetes API サーバーに要求を送信できます。 ポッドにアクセスできる攻撃者は、SA トークンにアクセスし、SA アクセス許可に従ってクラスターでアクションを実行します。 RBAC が有効になっていない場合、SA にはクラスター内の無制限のアクセス許可があります。 RBAC が有効になっている場合、そのアクセス許可は、それに関連付けられている RoleBindings と ClusterRoleBindings によって決定されます。
- ホストへのエスケープ - hostPath ボリュームは、ホストからコンテナーにディレクトリまたはファイルをマウントします。 クラスター内に新しいコンテナーを作成するアクセス許可を持つ攻撃者は、書き込み可能な hostPath ボリュームを持つコンテナーを作成し、基になるホストに常駐する可能性があります。 たとえば、後者はホスト上で cron ジョブを作成して実現できます。