米国国家安全保障局(NSA)と米国サイバーセキュリティ・インフラストラクチャセキュリティ局(CISA)は、Kubernetesクラスタのセキュリティ設定(ハードニング)に関するガイダンスを含む59ページの技術報告書を公開しました。
Kubernetesは、Google社のエンジニアによって開発され、Cloud Native Computing Foundationによってオープンソース化された、現在最も普及しているコンテナオーケストレーションソフトウェアの一つです。
主にクラウドベースのインフラで使用されており、システム管理者はソフトウェアコンテナを使用して新しいITリソースを簡単に導入することができます。
しかし、KubernetesとDockerのモデルは、従来のモノリシックなソフトウェアプラットフォームとは大きく異なるため、多くのシステム管理者はKubernetesが安全に動作するように設定することに課題を抱えています
ここ数年、Kubernetesの設定ミスにより、攻撃者は認証なしにオンラインで公開されているKubernetesの管理機能や大規模なKubernetesクラスタ上で動作するアプリケーション(Argo WorkflowやKubeflowなど)をインターネット上で探し、Kubernetesのバックエンドにアクセスして、このアクセスを利用して被害者のクラウドインフラストラクチャ内に暗号マイニングアプリを展開します。
現在では、複数のグループが設定ミスされたクラスター上で互いに奪い合う状態になっています。
CISAとNSAは、発表されたガイダンスを通じて、システム管理者に今後のKubernetesの設定において、このような侵入を回避するための安全なベースラインを提供したいと考えています。
さらに、CISAとNSAの共同報告書では、基本的な構成ガイドラインの他に、企業や政府機関がKubernetesの侵害を防止したり、その深刻度を制限したりするために実施できる基本的な緩和策についても詳述しています。
CISAとNSAのアドバイザリーの全文は、こちらからPDFでダウンロードできます。
https://media.defense.gov/2021/Aug/03/2002820425/-1/-1/1/CTR_KUBERNETES%20HARDENING%20GUIDANCE.PDF
Kubernetesセキュリティ対処方法抜粋
Kubernetes Podのセキュリティ
- 非ルートユーザーとしてアプリケーションを実行するために構築されたコンテナを使用
- 可能であれば、不変のファイルシステムでコンテナを実行
- コンテナイメージをスキャンして、脆弱性や設定ミスがないか確認
- ポッドセキュリティポリシーを使用して、以下のような最低限のセキュリティレベルを確保
- 特権付きコンテナの防止
- hostPID、hostIPC、hostNetwork、allowedHostPathなど、ブレイクアウトによく使われるコンテナ機能の拒否
- ルートユーザとして実行する、またはルートへの昇格を許可するコンテナの拒否
- SELinux、AppArmor、seccomp などのセキュリティサービスを使用して、悪用されないようにアプリケーションを強化
ネットワークの分離と堅牢化
- ファイアウォールとロールベースのアクセスコントロール(RBAC)を用いたコントロールプレーンノードへのアクセスのロックダウン
- Kubernetesのetcdサーバーへのアクセスをさらに制限する
- トランスポート・レイヤー・セキュリティ(TLS)証明書を使用して、認証された暗号化通信を使用するようにコントロール・プレーンのコンポーネントを構成する。
- ネットワークポリシーを設定し、リソースを隔離する。ネットワークポリシーなどの追加的な分離が行われない限り、異なるネームスペースのポッドやサービスは相互に通信可能です。
- すべての認証情報や機密情報は、設定ファイルではなくKubernetes Secretsに置く。強力な暗号化方式でSecretsを暗号化する
認証と認可
- 匿名ログインを無効にする(デフォルトでは有効
- 強力なユーザー認証を使用する
- RBACポリシーを作成し、管理者、ユーザー、サービスアカウントの活動を制限する
ログ監査
- 監査ログを有効にする(デフォルトでは無効
- ノード、ポッド、またはコンテナレベルでの障害が発生した場合の可用性を確保するためにログを永続化する
- メトリクス・ロガーの設定
アップグレードとアプリケーションのセキュリティ対策
- セキュリティパッチやアップデートの即時適用
- 定期的な脆弱性スキャンと侵入テストの実施
- 不要になったコンポーネントを環境から削除する
Comments