DevOpsを取り入れ、迅速なアプリケーション開発にDockerコンテナを使用する企業が増加し、同時にそのセキュリティについても注目が集まっている。ただし、セキュリティ対策によって開発速度が鈍化することは決して望ましいことではない。

Tenable.io Container Security(以下Container Security)はCI/CDに組み込む事の出来るコンテナ向けのセキュリティ製品である。今回はContainer Securityを使用してDockerイメージで使用されるアプリケーションやライブラリの脆弱性を可視化してみたいと思う。

まず、事前準備としてCentOS7上にDockerをインストールし、Docker Hubからcentosのオフィシャルイメージを入手する。

[root@localhost ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
aeb7866da422: Pull complete

このcentosのDockerイメージをそのままTenable.io Container Security(以下Container Security)へPushしセキュリティチェックを行わせてみる。 なお、Container SecurityではAmazon ECRやDocker Hubから直接イメージをインポートすることも可能だ。

まず、あらかじめContainer Securityへログインしておく。

[root@localhost ~]#docker login -u $TENABLE_IO_ACCESS_KEY -p $TENABLE_IO_SECRET_KEY
registry.cloud.tenable.com

この時必要となる、

$TENABLE_IO_ACCESS_KEY

$TENABLE_IO_SECRET_KEY

はTenable.ioのMy Accountから入手が可能だ。

続いて、先ほど入手したcentosイメージに、タグ付けを行う。

[root@localhost ]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 75835a67d134 4 weeks ago 200MB

[root@localhost ]# docker tag 75835a67d134 registry.cloud.tenable.com/centos/centos1
[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cloud.tenable
.com/centos/centos1
latest latest 4 weeks ago 200MB

"registry.cloud.tenable.com/centos/centos1"

とタグ付けを行うことで、Container SecurityへPushした際に、Container Security上の任意のRepository(今回の場合はcentos/centos1)にPushするためだ。 準備が整ったので、Container Securityへ先ほど入手したcentosイメージをPushする。

[root@localhost ~]# docker push registry.cloud.tenable.com/centos/centos1
The push refers to repository [registry.cloud.tenable.com/centos/centos1]
f972d139738d: Layer already exists
latest: digest: sha256:dc29e2bcceac52af0f01300402f5e756cc8c44a310867f6b94f5f72
71d4f3fec
size: 529

Container Securityでは非常に高速に(概ね30秒以内)にスキャンを完了させることが出来るため、Push完了後すぐに結果が表示されている。

上図にご覧いただいているように、実に32個ものの脆弱性が発見された、さらにはそのうち6個の脆弱性はCVSSスコアが最大の10であった。最新のイメージであればセキュリティ上問題ないと考えがちであるがそんなことはないということがお分かりいただけただろう。また、Container Securityではポリシーを作成し、違反した場合にイメージをPull出来ないように強制することが可能である。

設定は非常にシンプルで、Container SecurityのPolicies設定から下図の通り条件とアクションを指定するだけである。今回はCVSSスコアが7.0を超えた場合に"docker pull"をブロックするというアクションを取るように設定する。

この状態で"docker pull"を実行した場合、以下の通りエラー通りPullする事が出来なくなる。

[root@localhost ~]# docker pull registry.cloud.tenable.com/centos/centos1 Using default tag: latest Error response from daemon: received unexpected HTTP status: 503 Service Unavailable [root@localhost ~]#

以上見てきたように、Container Securityを使用することで、アプリケーションの開発速度に影響を与えずに、コンテナイメージのリスクを可視化する事が出来、CI/CDのPipelineに組み込む事で、セキュリティポリシーに沿ってコントロールすることが可能になることがわかる。

次回はPCI ASV機能についてご紹介する。

[PR]提供:Tenable Network Security Japan