More Related Content Similar to Docker最新動向2017秋+セキュリティの落とし穴 (20) More from Masahito Zembutsu (20) Docker最新動向2017秋+セキュリティの落とし穴1. 1
Engineer / Technology Evangelist, SAKURA Internet, Inc.
@zembutsu 前佛 雅人 ZEMBUTSU Masahito
2017年9月22日(金) Developers Summit 2017 KYUSYU
Docker CEの最新動向等What’s new in Docker for Developers (2017 Fall version)
3. とある事例
Docker Engine "swarm mode" (SwarmKit)≠ Docker Swarm
・「簡単にアプリケーションを実行できる環境を提供」する目的
・swarm mode はクラスタを簡単に組める、manager と worker の role
・swarm モードではIngress Network と Routing mesh、サービスディスカバリ機能を持つ
・swarm mode は docker stack / docker-compose に対応、その使い分けは用途に準じる
・docker secret コマンドで、swarm mode でのシークレット管理
・v3 format では、--linkやcompose fileの :links はレガシー(OWACON)→networks:の活用を
・constraint: (条件)でデプロイ先サーバの制限
セキュリティは基本的だけれど、見落としている所がおおいかも
・docker build 時の罠、見落としはありませんか?
今日の内容
12. 12
$ docker run -it centos
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
Digest:
sha256:26f74cefad82967f97f3eeeef88c1b6262f9b42bc96f2ad61d6f3fdf544759b8
Status: Downloaded newer image for centos:latest
[root@085d5f02743d /]# mkdir secret
[root@085d5f02743d /]# echo 'himitsu' > secret/password.txt
[zem@docker ~]$ sudo find /var/lib/docker -name password.txt
/var/lib/docker/overlay/d04efbadefe24a7a2238d943fc18e6036e01234fde1da9b7363c56f
121f6de77/upper/secret/password.txt
/var/lib/docker/overlay/d04efbadefe24a7a2238d943fc18e6036e01234fde1da9b7363c56f
121f6de77/merged/secret/password.txt
[zem@docker ~]$ sudo cat
/var/lib/docker/overlay/d04efbadefe24a7a2238d943fc18e6036e01234fde1da9b7363c56f
121f6de77/merged/secret/password.txt
himitsu
25. 25
$ docker login
Login with your Docker ID to push and pull images from Docker Hub.
If you don't have a Docker ID, head over to https://hub.docker.com
to create one.
Username: <username>
Password:
Login Succeeded
$ cat ~/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "emVtYnV1c3U6a2F0YW5hMjkyOSNS"
}
}
}
33. 33
$ docker history simplepot:latest
IMAGE CREATED CREATED BY SIZE COMMENT
0b9e5d88390d About an hour ago /bin/sh -c #(nop) CMD ["/usr/sbin/sshd" "... 0B
99d01bb57aa0 About an hour ago /bin/sh -c #(nop) EXPOSE 22/tcp 0B
8431c888c464 About an hour ago /bin/sh -c /usr/bin/ssh-keygen -q -t rsa -... 2.06kB
d17fb17a5f1e About an hour ago /bin/sh -c echo "root:admin" | chpasswd 1kB
fae9166d1392 About an hour ago /bin/sh -c yum -y install openssh-server 109MB
328edcd84f1b 13 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 13 days ago /bin/sh -c #(nop) LABEL name=CentOS Base ... 0B
<missing> 13 days ago /bin/sh -c #(nop) ADD file:63492ba809361c5... 193MB
$ docker diff 9b
C /run
C /run/utmp
C /var
C /var/log
C /var/log/lastlog
C /var/log/wtmp
D /root
36. 36
$ ls -al /var/run/docker.sock
srw-rw---- 1 root docker 0 Aug 17 12:49 /var/run/docker.sock
46. 46
コンテナな間で見えないファイルも、ホスト側からは見える
Docker Hub 上のリポジトリは安全ではない可能性がある
残念ながら「automated build」も信頼すべきではない
Dockerfileを常に確認すべし
共用環境ではdocker login、logoutをセットで忘れずに
Dockrfileで「ADD」は使うべきではない
Dockerfileの「ENTRYPOINT」は上書き可能
docker history や docker diff 、docker inspectで詳細確認
dockerグループに所属するユーザは、事実上のroot
/var/run/docker.sockをマウントさせてはいけない
docker ネットワークは動的に接続・接続解除できる
docker はホスト側のfirewalld/iptablesの設定に関係なく、
ポートをマッピングできる
dockerd のリモート制御時は TLS 認証を有効にすべき
49. Docker CE (Community Edition) のバージョン変更
・CentOS 系のパッケージはは「docker-engine」→「docker-ce」に変更(17.06移行)
・Moby Project の誕生と、役割毎に各パーツが分散(○○Kit)
Docker Engine "swarm mode" (SwarmKit)≠ Docker Swarm
・「簡単にアプリケーションを実行できる環境を提供」する目的
・swarm mode はクラスタを簡単に組める、manager と worker の role
・swarm モードではIngress Network と Routing mesh、サービスディスカバリ機能を持つ
・swarm mode は docker stack / docker-compose に対応、その使い分けは用途に準じる
・docker secret コマンドで、swarm mode でのシークレット管理
・v3 format では、--linkやcompose fileの :links はレガシー(OWACON)→networks:の活用を
・constraint: (条件)でデプロイ先サーバの制限
セキュリティは基本的だけれど、見落としている所がおおいかも
・docker build 時の罠、見落としはありませんか?
51. コンテナな間で見えないファイルも、ホスト側からは見える
Docker Hub 上のリポジトリは安全ではない可能性がある
残念ながら「automated build」も信頼すべきではない
Dockerfileを常に確認すべし
共用環境ではdocker login、logoutをセットで忘れずに
Dockrfileで「ADD」は使うべきではない
Dockerfileの「ENTRYPOINT」は上書き可能
docker history や docker diff 、docker inspectで詳細確認
dockerグループに所属するユーザは、事実上のroot
/var/run/docker.sockをマウントさせてはいけない
docker ネットワークは動的に接続・接続解除できる
docker はホスト側のfirewalld/iptablesの設定に関係なく、
ポートをマッピングできる
dockerd のリモート制御時は TLS 認証を有効にすべき
53. References
Announcing Docker 17.06 Community Edition (CE) - Docker Blog
https://blog.docker.com/2017/06/announcing-docker-17-06-community-edition-ce/
Docker CE release notes | Docker Documentation
https://docs.docker.com/release-notes/docker-ce/
Docker Success Center ( Knowledge Base, Reference Architecture )
https://success.docker.com/