Blog

Dockerにおけるセキュリティポイント(補足)


はじめに

こんにちは、アドテクスタジオでセキュリティエンジニアをしている岡崎です。

先日、 「11/14 サイバーエージェントとさくらインターネットのインフラ談義」 のLT枠に参加させていただき、以下の資料の発表をさせていただきました。

「Dockerを始めて1週間のセキュリティエンジニア」

LT枠では10分ほどしか時間なく、とても緊張し、お話できなかった内容を追加して書かせていただきます。

 

最近、アドテクスタジオではDockerやk8sなどのコンテナ技術を利用しているプロダクト・システムが数多くあります。

そのなかで、セキュリティエンジニアとしてコンテナ技術を活用するときにどのような点に注意する必要があるのかを、Dockerを試しながら洗い出してみました。

 

今回のDockerのアーキテクチャからセキュリティポイントとして着目したのは、以下の点になります。

・クライアントとデーモン間

 ー セキュアな通信

 ー 接続制御

・レジストリ

 ー セキュアな通信

 ー 接続制御

・イメージ

 ー イメージの信頼性

・コンテナ

 ー コンテナの信頼性

 ー システムコールの制御

 

参考: http://docs.docker.jp/engine/introduction/understanding-docker.html

 

・クライアントとデーモン間

・レジストリ

 ー セキュアな通信

 ー 接続制御

に関しては、TLS証明書を用いた「SSH公開鍵認証」や「WebサーバのSSL/TLS証明書」と同じ原理になります。

通信の暗号化はもちろんのこと、デーモンやレジストリにアクセスできるユーザを制限してセキュアに使いましょう。

 

・イメージ

 ー イメージの信頼性

に関しては、イメージ上で利用しているミドルウェアなどのパッケージに脆弱性が含まれているバージョンが利用されていないかをチェックすることができます。

Docker Hub(エンタープライズ版)には「Docker Security Scanning」という機能があり、Docker Hubにイメージをアップしておくと、定期的にCVE(Common Vulnerabilities and Exposures:脆弱性情報データベース)の情報を元に脆弱性チェックを行ってくれます。

参考: https://success.docker.com/article/Docker_Reference_Architecture-_Securing_Docker_EE_and_Security_Best_Practices

 

「Docker Hub」で公開されているイメージの中で、「Official」マークのついているものに関しては、イメージスキャン済のものなので、安心して利用できます。

参考: https://hub.docker.com/explore/

 

・コンテナ

 ー コンテナの信頼性

 ー システムコールの制御

に関しては、docker run時のオプションがあり、詳細なセキュリティ設定をすることが可能です。

[コンテナの信頼性]

イメージスキャンに関しては、docker runしていない状態での静的スキャンになりますが、以下で説明します「Docker Bench for Security」に関しては、コンテナに対し以下の項目でセキュリティチェックをしてくれます。

参考: https://github.com/docker/docker-bench-security

*コンテナがあるインスタンス内で実行しないといけないのが難点です

 

参考: https://github.com/docker/docker-bench-security

わかりやすいところですと「rootユーザで実行している」と指摘されているのがわかります。

この基準は、「Understanding Docker Security and Best Practices」にて定義されているものになるようです。熟読しておきましょう。

参考: https://blog.docker.com/2015/05/understanding-docker-security-and-best-practices/

 

[システムコールの制御]

docker run時のオプションに「–security-opt」というものがあります。

のようなオプションを追加することで、MAC(Mandatory Access Control:強制アクセス制御)を実現できます。

また、「seccomp(secure computing mode)」オプションを利用することで、コンテナ上で利用可能なシステムコールを細かく制御することもできます。

参考: https://github.com/docker/labs/tree/master/security/seccomp
https://docs.docker.com/engine/security/seccomp/

 

おわりに

Dockerのセキュリティ周りはこれからどんどん熱くなってくると思うので、今後いろいろ試し、アドテクスタジオのセキュリティ強化のために活用できる仕組みを考えていこうと思っています。

Author

アバター
hajime