2020.12.21

各クラウドプラットフォームでのCIS Kubernetes Benchmarkの準拠、確認方法

文:

タグ

CONTENTS

この記事をシェア:

Facebook Twitter LINE

前書き

CIS Benchmarkは、IT システムおよびデータをサイバー攻撃から守るためのセキュリティ規格とし、 何千もの企業で採用され規範的なガイダンスを提供しています。
セキュリティ保護の規格として導入することがまったく珍しくない現環境下において各クラウドプラットフォームでCIS Benchmarkに準拠しているのかを確認する方法をこちらについて記載させていただきます。

前提として

まず前提としてクラウドプラットフォームにおけるKubernetesクラスタのセキュリティ責任範囲を理解しておく必要があります。
Kubernetesは大まかな構成として各コンテナを動作させるための実行ホストとなるWorkerNode、そして各WorkerNodeとコンテナリソースを管理するMasterNodeの2つあります。クラウドプラットフォームでのMasterNodeに付随するコンポーネントの管理と保守はベンダーによって行われるため、利用者側の範囲対象外、言い換えれば利用者でCIS Benchmarkの導入、およびポリシーに準拠しているかの確認はできないことになります。つまり、利用者側確認できる範囲はWorkerNodeの範囲となります。

また、確認方法はAqua Security社が開発、提供しているkube-benchを用いてCIS Kubernetes Benchmark に記載されている推奨事項に準拠しているかどうかをチェックしていきます。

AKS(Azure Kubernetes Service)での導入方法

1.まず、kubectl-node_shellプラグイン(以前はkubectl-enterという名称でした)を作成し、対象のWorkerNodeにアクセスします。

$ curl -LO https://github.com/kvaps/kubectl-node-shell/raw/master/kubectl-node_shell
$ chmod +x ./kubectl-node_shell
$ sudo mv ./kubectl-node_shell /usr/local/bin/kubectl-node_shell
$ kubectl node-shell <node_name>

2.確認として以下のコマンドを実行します。

$ docker run --rm -v `pwd`:/host aquasec/kube-bench:latest install ./kube-bench node

3.下記のような実行結果が出力されれば問題なしとなります。

[INFO] 2 Worker Node Security Configuration
[INFO] 2.1 Kubelet
[PASS] 2.1.1 Ensure that the --anonymous-auth argument is set to false (Scored)
[PASS] 2.1.2 Ensure that the --authorization-mode argument is not set to AlwaysAllow (Scored)
[PASS] 2.1.3 Ensure that the --client-ca-file argument is set as appropriate (Scored)
[FAIL] 2.1.4 Ensure that the --read-only-port argument is set to 0 (Scored)
[PASS] 2.1.5 Ensure that the --streaming-connection-idle-timeout argument is not set to 0 (Scored)
[PASS] 2.1.6 Ensure that the --protect-kernel-defaults argument is set to true (Scored)
[PASS] 2.1.7 Ensure that the --make-iptables-util-chains argument is set to true (Scored)
[PASS] 2.1.8 Ensure that the --hostname-override argument is not set (Scored)
[PASS] 2.1.9 Ensure that the --event-qps argument is set to 0 (Scored)
[PASS] 2.1.10 Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate (Scored)


※ベンダーによってはCIS BenchmarkのMasterNodeの準拠項目をサポートに確認し、回答いただける場合もございます。つきましては、今回の導入手順はCIS BenchmarkのWorkerNodeに対する項目が確認できる手順となります。

EKS(Elastic Kubernetes Service)での導入方法

1.Amazon Elastic Container Registry(ECR)リポジトリを作成して、kube-benchコンテナイメージをホストします。

aws ecr create-repository --repository-name k8s/kube-bench --image-tag-mutability MUTABLE

2.kube-benchコンテナイメージをダウンロードしてビルドし、ECRリポジトリにプッシュします。

$ git clone https://github.com/aquasecurity/kube-bench.git
$ cd kube-bench
$ aws ecr get-login-password --region <AWS_REGION> | docker login --username <AWS_USERNAME>
 --password-stdin <AWS_ACCT_NUMBER>.dkr.ecr.<AWS_REGION>.amazonaws.com
$ docker build -t k8s/kube-bench .
$ docker tag k8s/kube-bench:latest <AWS_ACCT_NUMBER>.dkr.ecr.<AWS_REGION>.amazonaws.com/k8s/kube-bench:latest
$ docker push <AWS_ACCT_NUMBER>.dkr.ecr.<AWS_REGION>.amazonaws.com/k8s/kube-bench:latest

3. 2で記載した「.dkr.ecr..amazonaws.com/k8s/kube-bench:latest」をコピーし、job-eks.yamlの値をコピーした値に書き換えます。

4.job-eks.yamlをデプロイし、作成されたポッドを確認します。

$ kubectl apply -f job-eks.yaml
$ kubectl get pods --all-namespaces

5.kubectl get pods –all-namespacesで確認したポッドの値を取得し、以下のコマンドを出力し、レポートを出力させます。

レポートに下記のような出力があれば完了です。

[INFO] 2 Worker Node Security Configuration
[INFO] 2.1 Kubelet
[FAIL] 2.1.1 Ensure that the –allow-privileged argument is set to false (Scored)
[PASS] 2.1.2 Ensure that the –anonymous-auth argument is set to false (Scored)
[PASS] 2.1.3 Ensure that the –authorization-mode argument is not set to AlwaysAllow (Scored)
[PASS] 2.1.4 Ensure that the –client-ca-file argument is set as appropriate (Scored)
[FAIL] 2.1.5 Ensure that the –read-only-port argument is set to 0 (Scored)
[PASS] 2.1.6 Ensure that the –streaming-connection-idle-timeout argument is not set to 0 (Scored)

【外伝】GKE(Google Kubernetes Engine)での導入方法

GKEにおいては、AWSと同じく「https://github.com/aquasecurity/kube-bench.git」に含まれているGKE用kube-benchコンテナから確認することができますが、そもそもCIS Benchmarkの対応状況が公式資料に記載されていますのでそちらを確認する方が確実かと思います。
https://cloud.google.com/kubernetes-engine/docs/concepts/cis-benchmarks

文:

タグ

今解決したいDXの
お困りごとなんですか?

DXの知識、導入事例を知りたい DXの知識、導入事例を知りたい セミナーに参加する

今取り組むべき事業のDX推進や、本当に活用できるコンテナ製品の導入プランをご紹介しています。お気軽に無料ウェビナーにご参加ください。

何から手をつけていいか分からない 何から手をつけていいか分からない サービスソリューションをみる

DX推進に取り組みたいが詳しい人材がいない。
まずどこから始めればいいのか、どういう方法があるのかイメージが掴め切れていない。

自社の具体的な導入を検討している 自社の具体的な導入を検討している 各種お問い合わせへ

コンテナ製品のご提案や人材育成支援も行います。事業のDX推進でお困りの方は、こちらからお問い合わせください。