Kubernetes v1.23:セキュリティの新機能は? #aqua #コンテナ #セキュリティ #k8s
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは「Aqua Security」社の技術ブログで2021年12月7日に公開された「 Kubernetes Version 1.23: What’s New for Security? 」の日本語翻訳です。
Kubernetes v1.23:セキュリティの新機能は?
再び Kubernetes の新しいリリースが迫ってきました。Kubernetes v1.23 の主要な機能のいくつかはベータレベルに達し、デフォルトで有効になります。この記事では、これらの機能がセキュリティにとってどのような意味を持つかを説明します。クラスターのセキュリティを向上させるという観点と、このバージョンで新しいクラスターを展開する際に考慮しなければならない観点の両方について説明します。
ephemeralContainerのサポート
コンテナ化されたアプリケーションを保守する際の課題の1つは、トラブルシューティングの方法です。イメージのサイズを小さくしようとすると、イメージに多くの診断ツールを含めないようにする必要があります。しかし、それでは本番環境の問題をトラブルシューティングする際に問題が生じてしまいます。ephemeralContainer は、この問題を解決することを目的としており、稼働中の Pod に一時的なコンテナを追加することで、問題の診断やトラブルシューティングを容易にします。
Kubernetes のセキュリティの観点からも、この機能は直接的なメリットがあります。これまでツールを必要としていたベースコンテナイメージをスリム化でき、攻撃対象を減らして脆弱性管理を容易にします。
しかし、この機能を実装する際には、いくつかの作業が必要です。クラスターが AdmissionController を使用してワークロードのセキュリティを管理している場合、使用しているポリシーを更新して、ephemeralContainer のサポートを追加する必要があります。そうしないと、制御がバイパスされてしまう危険性があります。
その理由は、ephemeralContainer が Pod.spec 内の別セクションを使用しているからです。ほとんどの AdmissionController は、セキュリティ構成情報のために container.Spec および initContainer.spec を探すように設計されているため、Pod.spec の ephemeralContainer セクションを含めるように更新する必要があります。
Windows HostProcess containersのサポート
v1.23 のベータ版では、Windows HostProcess コンテナも登場します。この機能を追加することで、Windows コンテナの世界でいくつかのユースケースが可能になり、コンテナからホストリソースの管理ができるようになります。HostProcess コンテナでは、NT AUTHORITY\SYSTEM のような特権ユーザとして、基盤となるホストにアクセスできます。
しかし、セキュリティの観点からは、いくつか注意すべき点があります。まず、Windows コンテナを使用する企業は、特権コンテナを作成する権限を慎重に管理する必要があることは言うまでもありません。これまでは、Windows コンテナから基盤となるホストに特権を昇格させる簡単な方法は限られていました。ですが、今回の新機能により、新しい Windows コンテナを作成できる攻撃者は、基盤となるホストにも広くアクセスできるようになる可能性があります。
また、ephemeralContainer の機能と同様に、セキュリティ対策を必要とする領域があります。この機能は、特権のような既存の設定を再利用するのではなく、新しい hostProcess 設定を使用するため、Kubernetes クラスターが使用する AdmissionController を更新する必要があります。詳細については、Kubernetes の公式ドキュメントを参照してください。
また、廃止された Pod Security Policy 機能を使用しているクラスターでは、Windows HostProcess コンテナを制限するための直接的なサポートはありませんので、注意が必要です。現時点では、HostProcess コンテナが必要とする他の機能(ホストのネットワークアクセスなど)をブロックすることで間接的に制御できますが、これは長期的には推奨されるソリューションではありません。
PodSecurity AdmissionController がベータ版に移行
Kubernetes v1.21 で PodSecurityPolicy が非推奨になったことで、Pod のセキュリティ管理に役立つ外部 AdmissionController ソリューションを補完する代替機能が必要になりました。
この機能は、使いやすい Pod のセキュリティ機能を提供することに重点を置いています。これは、クラスター管理者が Kubernetes の Namespace 単位で3つの PodSecurityStandard レベルのうちの1つを設定できるようにするもので、よりシンプルなクラスター構成にマッチしているはずです。この機能がお客様の要件に合っているか、あるいはより柔軟なソリューションが必要かどうかを評価する必要があります。
まとめ
すべての Kubernetes のリリースと同様に、セキュリティの観点から考慮すべきことは常にあります。新たな改善はクラスターの安全性を高めるのに役立ちますが、それらの新機能を考慮に入れたポリシーやコントロールの更新について考える必要があります。