Kubernetesの普及に伴い、セキュリティに注力する組織では、その知識基盤やドキュメントをKubernetesにも対応させる動きが広がりつつあります。Kubernetesセキュリティテストガイドです。
本記事では、OWASPが提供するリソースの一部をご紹介いたします。具体的には、同団体が最もよく知られているセキュアコーディング実践クイックリファレンス、そしてKubernetes分野におけるその他の新興プロジェクトについて探っていきます。
OWASPとは何でしょうか?あるいは誰でしょうか?
OWASP.orgによれば、
「オープン・ウェブ・アプリケーション・セキュリティ・プロジェクト®(OWASP)は、ソフトウェアのセキュリティ向上に取り組む非営利財団です。コミュニティ主導のオープンソースソフトウェアプロジェクト、世界中に数百ある地域支部、数万人の会員、そして主要な教育・トレーニングカンファレンスを通じて、OWASP財団は開発者や技術者がウェブを安全にするための情報源となっています。」
紹介文にもある通り、OWASPの活動は次の3つのカテゴリーに分類されます:
- ツールとリソース
- コミュニティとネットワーキング
- 教育とトレーニング
OWASPトップ10
OWASPトップ10は、アプリケーションセキュリティに影響を与える最もリスクの高い領域をまとめた、広く認知され頻繁に引用されるリストです。このリストは開発者が容易に理解できるよう設計されています。2021年に更新された最新版には、以下の項目が含まれています:
- A01 アクセス制御の不備
- A02 暗号化の失敗
- A03 インジェクション
- A04 不適切な設計
- A05 セキュリティ設定の不備
- A06 脆弱なコンポーネントおよび古いコンポーネント
- A07 識別および認証の不備
- A08 ソフトウェアおよびデータの完全性の失敗
- A09 セキュリティログおよび監視の不備
- A10 サーバーサイドリクエストフォージェリ(SSRF)
OWASPセキュアコーディングプラクティス クイックリファレンス
OWASPセキュアコーディングプラクティス クイックリファレンスの目的は、アプリケーション開発時にセキュリティの観点から考慮すべき事項を網羅した、技術に依存しないチェックリストを提供することです。わずか17ページのため、まさにクイックリファレンスと言えます。(比較として、CIS Kubernetes Benchmarkは254ページです。)
このリストの考え方は、特定の脆弱性や脅威ではなく、ベストプラクティスに焦点を当てることにあります。ここで概説されているセキュアコーディングプラクティスに従えば、OWASP Top 10 に掲載されているものに対するリスクに晒されることはないはずです。とはいえ、最も注意深い組織であっても見落としが生じる可能性があるため、追加のチェックやスキャンを実施することは常に推奨されます。
セキュアコーディングプラクティスクイックリファレンスは、メインのPDFまたはMS Word文書としてダウンロード可能です。英語版に加え、中国語、韓国語、ポルトガル語、スペイン語の翻訳版も用意されています。
OWASP Kubernetes セキュリティ チートシート
Kubernetesセキュリティに関するチートシートを公開しました。
Kubernetesセキュリティチートシートは、Kubernetesアーキテクチャの基本概要から始まり、コンポーネントのセキュリティ確保に関するセクション、そして使用タイミングに基づいた3つのベストプラクティス群で構成されています。ビルドフェーズのベストプラクティスでは、コンテナイメージの種類やレジストリスキャンといった基礎的な要素をカバーしています。デプロイフェーズのベストプラクティスでは、アクセス制御、サービスメッシュの使用タイミング、さらにはネームスペースの価値といった領域に言及しています。最後に、実行フェーズ向けのベストプラクティスには、ログ記録、サンドボックス化、認証情報のローテーションなど、数多くのトピックが含まれています。
OWASP Kubernetes セキュリティテストガイド
現在のガイド版は、Kubernetes クラスターのセキュリティを検証するためのトップダウンアプローチを提供することを意図しており、評価を実施するために必要なすべてのツール、技術、手順に関する情報を含んでいます。また、テスト担当者が業務中に必要な項目をすべて網羅できるようにするためのチェックリスト形式の二次成果物も含まれています。
テストガイドの以下のセクションでは、関連付けられている情報の種類を強調しています:
OWASP Kubernetes トップ10
Kubernetesクラスター上で実行されるワークロードを保護するために取り組むべき、最も一般的な領域の優先順位付けされたリストを提供します。以下に、これらの領域を列挙し、それぞれが何を意味するかを簡潔に説明いたします。
K01:2022 不安全なワークロード設定
ワークロードのセキュリティコンテキスト全体は、クラスター全体に及ぼすリスクの大きさに重大な影響を与えます。ルートファイルシステムへのアクセス権限や強化された特権を持つコンテナを実行することは、本来必要のないリスクを追加します。コンテナのセキュリティコンテキストを、その機能に必要なアクセス権限のみを許可するように設定することで、コンテナ内に存在する脆弱性が、中核的かつ重要なシステムへのアクセスを得るための足がかりとして悪用されるのを防ぐことができます。
K02:2022 サプライチェーンの脆弱性
ソフトウェアの開発には様々なコンポーネントが関与し、コンポーネントが増えるほど脆弱性が生じる可能性が高まります。SBOMの作成や信頼できるプロバイダーのみの利用など、複数のアプローチを組み合わせた堅牢で実績のあるサプライチェーンの構築により、この経路による脆弱性の導入リスクを大幅に低減できます。
K03:2022 過度に寛容なRBAC設定
セキュリティの観点から、最小権限の原則に従ってアクセス制御を設定することが常に最善のアプローチです。OWASPでは、Kubernetesで標準で利用可能な機能と、その改善方法について詳しく説明しています。
K04:2022 集中管理されたポリシー適用機能の不足
あらゆるインフラストラクチャにおいて、すべてのKubernetesクラスターに一貫してセキュリティポリシーを適用する集中管理された方法を確保することは、環境を保護する上で極めて重要です。
K05:2022 不十分なロギングと監視
すべてのKubernetesコンポーネントおよび基盤インフラから、どのような種類のログとメトリクスを生成できるか、また生成すべきかを把握することが不可欠です。これらは貴重な知見を提供し、悪意のある攻撃者が既存の脆弱性を悪用する前に検知する可能性を秘めています。
K06:2022 認証メカニズムの不備
Kubernetesの認証は設計上柔軟性があります。しかしながら、この柔軟性は最適なセキュリティプロファイルを維持する上で課題となる可能性があります。Dexなどのツールを活用することです。
K07:2022 ネットワークセグメンテーション制御の欠如
単一のクラスター内で複数の異なるアプリケーションやサービスを実行する場合、ネットワークを完全に開放しておくことは好ましくありません。ネットワークポリシーによるネットワークセグメンテーション、あるいはIstioのような完全なサービスメッシュを利用することで、攻撃対象領域を最小限に抑える隔離と制御を実現できます。
K08:2022 シークレット管理の不備
Kubernetesでは機密情報(APIキーなど)を保護するため、シークレットと呼ばれる仕組みを用いて、意図しない開示を防ぐよう難読化して保存します。シークレットを保護する方法は複数あり、例えばVaultなど)も利用可能です。
K09:2022 クラスターコンポーネントの設定ミス
最もシンプルなKubernetesクラスターでさえ、多くの可動要素が存在します。少なくともクラスターコンポーネント全てが適切なデフォルト設定で運用されているかを確認することは、セキュリティ上の良い習慣とされています。これによりクラスターのセキュリティプロファイルが向上します。
K10:2022 古くなった脆弱なKubernetesコンポーネント
信頼できるソフトウェア供給チェーンを確立したら、GitOpsのような手法を組み合わせて、パッケージの最新パッチバージョンへ自動的に更新することが可能となります。これにより、開発環境やテスト環境へ導入可能な状態に最新のセキュリティ修正が準備され、上流コンポーネントに脆弱性が存在することを発見してから本番環境へ修正を展開するまでの時間を短縮できます。
次のステップ
OWASPとは何か、またKubernetes向けにどのような提供を行っているかをご理解いただきましたが、これで終わりではありません。まだまだ学ぶべきことは多く、次のステップとしてOWASP Kubernetes Top 10の適用方法について学ぶことが考えられます。
