Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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