rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
by
Azuma
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
rootlessコンテナのすゝめ 研究室サーバーでもできる安全なコンテナ管理 Azuma (@azuma_alvin) 学生と社会人LT #2
Slide 2
Slide 2 text
1 自己紹介 • 修士1年 • Go, Kubernetes, Vimが好き • 研究室サーバーの管理人 Azuma @azuma_alvin @kitsuya0828
Slide 3
Slide 3 text
突然ですが 2
Slide 4
Slide 4 text
3 Dockerを使ったことがある人!
Slide 5
Slide 5 text
4 Dockerに「rootlessモード」が あるのを聞いたことがある人!
Slide 6
Slide 6 text
実は… ((((;゚Д゚)))) 5
Slide 7
Slide 7 text
6 デフォルトのroot権限で動作する Dockerは設定次第でホストに 深刻なリスクをもたらす!
Slide 8
Slide 8 text
7 $ sudo usermod -aG docker \ azuma dockerグループにユーザーを追加 すると何ができるようになる?
Slide 9
Slide 9 text
8 $ docker run –it \ --rm \ -v /:/tmp \ ubuntu \ rm -rf /tmp Q1. 実行結果は? ※ 検証環境以外で実行しないでください
Slide 10
Slide 10 text
9 $ docker run -ti \ --name hacker \ --privileged \ -v /:/host \ ubi8 \ chroot /host Q2. 実行結果は? ※ 検証環境以外で実行しないでください
Slide 11
Slide 11 text
10 https://docs.docker.com/engine/install/linux-postinstall/ • dockerグループはrootレベルの権限付与 • 非rootで実行するにはrootlessモード
Slide 12
Slide 12 text
11 rootlessモード移行を 検討する前に
Slide 13
Slide 13 text
コンテナエンジンの比較 12 rootlessモード デフォルトで rootless かつ daemonless ユーザーごとに daemonを起動させる
Slide 14
Slide 14 text
13 DockerとPodmanはほぼCLI互換 $ docker run -d \ --name my-nginx \ -p 8080:80 \ nginx $ podman run -d \ --name my-nginx \ -p 8080:80 \ nginx alias docker=podmanで切り替え可能
Slide 15
Slide 15 text
14 rootlessコンテナに 話を戻しましょう
Slide 16
Slide 16 text
15 rootlessコンテナ内でも apt-get installするために root権限を使える? → 可能 コンテナ内のrootユーザーは ホスト側から見た一般ユーザー
Slide 17
Slide 17 text
ユーザー名前空間 16 ホスト コンテナ 65536 0 … 2401 … 1083040 … 1148575 … 232 0 1 … 1000 1001 … 65536 nobody ... azuma:1083040:65536 /etc/subuid の内容: コンテナ内のrootユーザー = ホストから見た一般ユーザー azuma
Slide 18
Slide 18 text
17 $ podman run –it \ --rm \ -v /:/tmp \ ubuntu \ rm -rf /tmp Q3. 実行結果は? ※ 検証環境以外で実行しないでください
Slide 19
Slide 19 text
18 研究室サーバー…|д゜)チラッ
Slide 20
Slide 20 text
研究室サーバーのPodman移行 19 • rootless • daemonless • Dockerと 高いCLI互換性 メリット デメリット • 認知負荷? • 引き継ぎ?
Slide 21
Slide 21 text
NASをコンテナにマウントして書き込む 20 $ id uid=2401(azuma) gid=2401(azuma) groups=2401(azuma),995(nas_access),998(docker) の場合 $ docker run -it --rm \ -u $(id -u):$(id -g) \ --group-add 995 \ -v $NAS_SOURCE:$DESTINATION \ myimage
Slide 22
Slide 22 text
NASをコンテナにマウントして書き込む 21 $ id uid=2401(azuma) gid=2401(azuma) groups=2401(azuma),995(nas_access),998(docker) の場合 $ podman run -it --rm \ --userns keep-id \ --group-add keep-group \ -v $NAS_SOURCE:$DESTINATION \ myimage
Slide 23
Slide 23 text
22 コンテナって面白い!
Slide 24
Slide 24 text
23 もっと詳しく Podman入門とrootlessコンテナ(#9) てっく・ざ・ぶろぐ! https://alvinvin.hatenablog.jp/entry/9
Slide 25
Slide 25 text
24 参考書籍 Podman in Action Daniel Walsh https://developers.redhat.com/e-books/podman-action Podmanイン・アクション Daniel Walsh (著)、磯田雄輝 ほか (翻訳)、秀和システム http://www.shuwasystem.co.jp/book/9784798070209.html