はじめに
今回の投稿では、kubernetesのセキュリティベストプラクティスに関するベンチマークであるCIS Kubernetes Benchmarkを用い、RKSのセキュリティについて、他のマネージドKuberneteサービスと比較を行い、どのようなセキュリティ状態でどのあたりに評価点があるのかを比較調査を行った結果をご紹介したいと思います。
本連載についてはリンクページを用意していますため、概要や連載記事は下記URLからご確認ください。
RKSを知る! 概要&連載リンク集
CIS Kubernetes Benchmarkとは
CIS Kubernetes Benchmarkとは、Center for Internet Security(CIS)により定められたkubernetesのセキュリティベストプラクティスに関する推奨事項のベンチマークです。
CISとは「サイバーセキュリティのためのベストプラクティス・ソリューションを特定、開発、検証、促進、維持し、サイバースペースにおける信頼の環境を実現するためのコミュニティ構築、およびリードする」ことを目的としたアメリカの非営利団体です。
kubernetesに関する設定内容に対しての推奨事項を定めており、コントロールプレーンからユーザがクラスタに展開するPodに関してのセキュリティ事項を定めています。
以下より原本が確認できるため、興味がある方はダウンロードをし確認してみることをお勧めします。
https://www.cisecurity.org/benchmark/kubernetes/
なお、今回の調査に使用したCIS Kubernetes Benchmarkのバージョンはv1.6.0となります。(2021年6月現在最新バージョン)
CIS Kubernetes Benchmarkのバージョンアップは頻繁に行われているため、閲覧タイミングによっては本調査の内容と乖離がある可能性があるため、その点についてはご了承ください。
CIS Kubernetes Benchmarkの確認項目
CIS Kubernetes Benchmarkでは項目として、以下のような5つの大項目で構成されています。
今回の比較調査では1~4のNodeに関連する項目のみに着目し、調査を実施しています。
5のPoliciesですが、こちらはユーザがクラスタ上にアプリケーションを展開する際に気にしなければならないセキュリティ事項について定めている内容であり、マネージドKuberneteサービスごとの差異は特にないため、今回は割愛しています。
CIS Kubernetes Benchmark確認項目
- Control Plane Components
- etcd
- Control Plane Configuration
- Worker Nodes
- Policies
CIS Kubernetes Benchmark確認項目詳細
CIS Kubernetes Benchmarkの確認項目について、簡単に各項目の内容について説明します。
1.Control Plane Components
Control Plane ComponentsではKuberneteを構成するコントロールプレーンコンポーネントについてのセキュリティベストプラクティス推奨事項を定めています。
主に各コントロールプレーンコンポーネントの設定ファイルの権限や所有者、設定事項のベストプラクティスについて設定方法や確認方法などを本項目では確認できます。
Control Plane Componentsではさらに4つの小項目に分類されており、各コンポーネントごとのベストプラクティスを定めています。
Control Plane Components小項目
- Master Node Configuration Files
コントロールプレーンコンポーネントの各設定ファイルの権限・所有者のベストプラクティス - API Server
APIサーバの設定事項に関するベストプラクティス - Controller Manager
コントロールマネージャの設定事項に関するベストプラクティス - Scheduler
スケジューラの設定事項に関するベストプラクティス
2.etcd
kubernetesのデータストアであるetcdに関するセキュリティベストプラクティスを定めています。
各認証設定情報や設定内容に関するベストプラクティスを本項目では確認できます。
etcdでは特に小項目は設定されていません。
3.Control Plane Configuration
認証やロギングなど、クラスタ全体に関わる領域のベストプラクティスを定めています。
監査ログの推奨設定や認証についての設定内容等を本項目では確認できます。
Control Plane Configurationではさらに2つの小項目に分類され、認証とロギングのベストプラクティスをそれぞれ定めています。
Control Plane Configuration小項目
- Authentication and Authorization
クラスタ全体の認証設定に関するベストプラクティス - Logging
クラスタのロギングに関するベストプラクティス
4.Worker Nodes
WorkerNodeに関するセキュリティベストプラクティスを定めています。
Control Plane Componentsと同じくNode上に存在する設定ファイルの権限、所有者やWorkerNodeのメインであるkubeletの設定内容や確認方法について本項目では確認できます。
WorkerNodeではさらに2つの小項目に分類され、設定ファイルの権限、所有者のベストプラクティスとkubeletの設定内容に対するベストプラクティスをそれぞれ定めています。
WorkerNode小項目
- Worker Node Configuration Files
WorkerNode上に存在する設定ファイルの権限、所有者についてのベストプラクティス - Kubelet
kubeletにて設定される設定内容に関するベストプラクティス
5.Policies
クラスタ上に展開するアプリケーションについて、コンテナの特権設定禁止やCNIの導入、PodSecurityPolicyについての設定事項などを定義しています。
今回の調査では本項目は対象としていないため、説明も割愛したいと思います。
興味がある方は是非とも原本に目を通してみてください。
評価・比較方法について
CIS Kubernetes Benchmarkの項目数は全122項目と膨大であるため、今回の比較調査では一つ一つの設定事項に関しての比較は実施せず、以下のような調査を実施しました。
- 上記の小項目までの分類に分け、小項目内の設定事項に関し、各マネージドKuberneteサービスがセキュリティベストプラクティスにどれくらい適用されているか調査
- 適用されている項目数を割り出し、全体で何%適用されているか確認
確認が取れ次第、以下のように形で評価する。
例)
対象セクションの項目数が35で適用数が20だった場合、適用割合は57%であるため、評価は○
- 各マネージドKuberneteサービスごとに適用状況についての考察評価を実施
Control Plane Components
本調査にて定めた比較・評価方法に従い、Control Plane Componentsでの各項目の評価と比較を行いました。
項目としては、上記CIS Kubernetes Benchmarkの確認項目にて説明しています4項目に分けて評価を実施しています。
それぞれの項目については前項を確認してください。
Master Node Configuration Files
Master Node Configuration Filesは前項の説明の通り、コントロールプレーンコンポーネントの設定ファイルの権限や所有者についてのベストプラクティスとなります。
しかしながら、マネージドKuberneteサービス全般の特徴としてMasterNodeへのアクセスを全面的に禁止しているため、本項目についてはすべてのサービスが確認できない状態となっています。
クラウドベンダ各社はMasterNode上の設定や設定ファイル自体の権限・所有者について、クラウドベンダ側にてセキュリティを担保するという姿勢を取っているため、確認できないことがある意味、高セキュリティを実現していることに繋がっているとも捉えることが出来ると思います。
API Server
- RKS
監査ログの各種設定や各Kubernetesコンポーネントとの認証設定といった基本的な項目はCIS Kubenetes BenchMarkの推奨設定が行われているため、基本的なセキュリティは担保されていると評価しています。
しかしながらセキュリティを高めるアドミッションコントロールプラグイン等についてはデフォルトの設定以上に追加は行われていないため、一部セキュリティについてユーザ側で対応する必要があると思います。 - EKS
設定を確認できるマネージドKuberneteサービスの中でも、もっともCIS Kubenetes BenchMarkの推奨設定に準拠されています。
AWS側の独自裁量での設定もされている点があり、その点ではCIS Kubenetes BenchMarkと乖離が発生しているため、監査ログの設定など、一部項目について準拠されていない部分があります。
しかしながら、AWSのサービスにて設定内容を担保しているため、セキュリティ的には問題ないと評価しています。 - AKS
AKSではコントロールプレーンコンポーネントに存在するPodなどはAzureベンダ側の管理対象であり、全面的に確認できない仕様となっているため、本項目についても確認不能項目となります。
Controller Manager
- RKS
Controller Managerに対する設定はCIS Kubenetes Benchmarkが定める推奨項目をすべて準拠しているため、セキュリティとして非常に高い設定が行われていると評価しています。 - EKS
EKSでは一点を除いてすべて推奨設定がされているため、Controller Managerのセキュリティは高いと考えています。
bind-addressのみ推奨設定と異なりますが、AWSのVPCの影響によるものであるため、セキュリティ的な影響は少ないと評価しています。 - AKS
前項と同じく、コントロールプレーンコンポーネントはAzureベンダ側の管理対象であり、全面的に確認できない仕様となっているため、本項目についても確認不能項目となります。
Scheduler
- RKS
Schedulerに対する設定はCIS Kubenetes Benchmarkが定める推奨項目をすべて準拠しているため、セキュリティとして非常に高い設定が行われていると評価しています。 - EKS
Schedulerの設定項目はbind-address以外、CIS Kubenetes Benchmarkの推奨項目が設定されています。
Controller Managerと同じ理由となりますが、bind-addressのみ推奨設定と異なるのはAWSのVPCの影響によるものであるため、セキュリティ的な影響は少ないと評価しました。 - AKS
前項と同じく、コントロールプレーンコンポーネントはAzureベンダ側の管理対象であり、全面的に確認できない仕様となっているため、本項目についても確認不能項目となります。
etcd
本調査にて定めた比較・評価方法に従い、etcdの評価と比較を行いました。
etcdの項目については前項の確認項目詳細を確認してください。
- RKS
auto-tlsの設定項目二つがが有効化されているか明示的な設定がなかったのみで、そのほかの推奨設定としては問題なく行われていることが確認できました。
etcdの推奨設定項目としても認証関連の設定のみであり、RKSはCIS Kubenetes Benchmarkが定めるetcdの推奨認証設定を問題なく行われていると評価しています。 - EKS
EKSではetcdに行われている設定項目を確認することは出来なかったため、本項目は確認不能項目となります。 - AKS
AKSでもetcdに行われている設定項目を確認することは出来なかったため、本項目はEKSと同じく確認不能項目となります。
Control Plane Configuration
本調査にて定めた比較・評価方法に従い、Control Plane Configurationでの各項目の評価と比較を行いました。
項目としては、上記CIS Kubernetes Benchmarkの確認項目にて説明しています2項目に分けて評価を実施しています。
それぞれの項目については前項を確認してください。
Authentication and Authorization
- RKS
本項目はユーザのクラスタアクセス時にクライアント証明書を使用するか否かという項目のみであり、RKSではクラスタアクセスはkubectlにアクセストークンを設定する方法しかないため、CIS Kubernetes Benchmarkの推奨設定に問題なく準拠していると評価しました。 - EKS
EKSでのクラスタアクセスはeksctl、ないしkubectlのみに制限しているため、CIS Kubernetes Benchmarkの推奨設定に問題なく準拠していると評価しました。 - AKS
本項目もコントロールプレーンコンポーネントの設定となりますが、あくまでクラスタアクセス時の評価となるため、kubectl、およびAKS APIのみに制限しているAKSも問題なく、CIS Kubernetes Benchmarkの推奨設定に準拠していると評価しました。
Logging
- RKS
RKSではkubernetesの監査ログ設定であるauditPolicyFileを設定していないため、本項目はCIS Kubernetes Benchmarkの推奨設定に準拠していないと評価しました。 - EKS
EKSはkubernetesの監査ログ設定であるauditPolicyFileを設定しており、EKSが定める監査ログポリシーと取得すべき監査情報を収集するよう設定を行っているため、本項目は問題なくCIS Kubernetes Benchmarkの推奨設定に準拠していると評価しました。 - AKS
Control Plane Components,etcdと同じとなりますが、AKSではコントロールプレーンコンポーネントはAzureベンダ側の管理対象であり、全面的に確認できない仕様となっているため、本項目についても確認不能項目となります
Worker Nodes
本調査にて定めた比較・評価方法に従い、WorkerNodeでの各項目の評価と比較を行いました。
項目としては、上記CIS Kubernetes Benchmarkの確認項目にて説明しています2項目に分けて評価を実施しています。
それぞれの項目については前項を確認してください。
Worker Node Configuration Files
- RKS
RKSではkubeletのサービスファイルの権限、所有者は確認することができなかったのですが、その他のkubelet関連ファイルの権限、所有者はCIS Kubenetes Benchmarkが定める設定項目に準拠しているため、セキュリティ的には問題ないと評価しています。 - EKS
EKSではkube-prokyの権限、所有者のみ確認することができませんでしたが、その他のkubelet関連ファイルの権限、所有者はCIS Kubenetes BenchMarkが定める設定項目に準拠しているため、EKSについてもセキュリティ的には問題ないと評価しています。 - AKS
kubelet-configの権限、所有者のみ確認することができませんでしたが、その他のkubelet関連ファイルの権限、所有者はCIS Kubenetes BenchMarkが定める設定項目に準拠しているため、AKSについてもセキュリティ的には問題ないと評価しています。
Kubelet
- RKS
RKSのWorkerNodeは直接アクセスできないため、プロセスからではなく、kubeletの設定ファイルからの判断となりますが、明示的に設定を行っている項目は他のマネージドKuberneteサービスより少なかったため、確認できなかった項目については準拠していないという評価を行っています。
kubeletの細かい設定について、明示的な設定が行われていなかったため、他のマネージドKuberneteサービスよりセキュリティ的には低いように見えますが、他のマネージドKuberneteサービスより厳しいアクセス制限を行っているため、設定していなくてもセキュリティは担保されているとも捉えることが出来ると考えています。 - EKS
EKSのkubelet設定は3項目以外、CIS Kubenetes Benchmarkの推奨項目が設定されていることが確認できました。
セキュリティ的にも他サービスでカバーされている部分であるため、セキュリティ的には問題はないと評価しています。
また、EKSも構築段階ではWorkerNodeにアクセスすることは出来ず、別のAWSサービスを利用しなければターミナルにアクセスすることが出来ないため、準拠状況以上にセキュリティは堅牢であると考えています。 - AKS
AKSのkubelet設定は2項目以外、CIS Kubenetes Benchmarkの推奨項目が設定されていることが確認できました。
AKSではセキュリティとしてはローテーション、およびIPtableの設定をAKSの別機能で別途サポートしているため、セキュリティとして問題ないと評価しています。
総評
全体の評価をまとめた一覧表は以下となります。
全体的な評価内容を見てみますと、RKSは確認できる項目も多く、準拠状況として他のマネージドKuberneteサービスより優っている点が多くみられますが、一部項目についてはほとんど準拠できていなかったりと差が大きい点が確認できます。
EKSは評価状態としてバランスがよく、AWSサービスで担保できる点もあるため、他サービスによるカスタマイズによってはもっともセキュリティが担保されていると考えることが出来るかもしれません。
AKSはユーザがコントロールプレーンコンポーネントを確認できない点があったため、確認不能項目が多く、評価としてはWorkerNodeのみとなってしまいました。
秘匿している分、セキュリティが高いと評価することもできますが、ユーザからしてみるとブラックボックス部分が多く、潜在的にセキュリティ脆弱性があるとも考えられるかもしれません。
あとがき
今回はマネージドKuberneteサービスのセキュリティ調査としてCIS Kubenetes Benchmarkの各マネージドKuberneteサービス準拠状況の比較と評価を実施しました!
実際に比較してみると確認できる項目の違いやセキュリティ的に強い項目、補わなければならない項目などが見えてきたと思います。
次回もコンテナセキュリティに関してRKSがどのような対応を取る必要があるかを調査しましたので、紹介できればと思います!
ここまでお読みいただき、ありがとうございました!