LoginSignup
2
0

rootlessコンテナの必要性と現状

Last updated at Posted at 2023-12-13

rootlessコンテナについて理解するために現状を調査しました

rootlessコンテナの必要性

コンテナ内でのrootは何も対策をしていない場合は、ホストのrootと同じため、設定ミスやコンテナを脱出出来る脆弱性等があるとホストのroot権限を悪用される恐れがある

この問題を解決する仕組みとしてrootlessコンテナがある。

rootlessコンテナとは

コンテナランタイムをroot権限なしで動作させることで、非特権ユーザがコンテナを作成、実行出来るようになる
このようにして実行されるコンテナをrootlessコンテナと呼ぶ

このようなコンテナにおいては、コンテナ内でのrootユーザは、ホストから見ると非特権ユーザとなる

※後に記載しますがコンテナ内で動作するユーザを非rootにすることとは別の話です

定義については https://rootlesscontaine.rs/#what-are-rootless-containers-and-what-are-not が詳しいです

ホストのroot権限を奪取されると何が問題か

rootを取られるとまずい、というのはよく言われますが、具体的にどのような問題があるかを改めて整理します

  • CPU資源の濫用
  • クレデンシャルの窃盗
  • 同一ホストで動くほかプログラムへの干渉
    • 特にKubernetesのような1つのマシンを複数の組織で利用する、いわゆるマルチテナントの環境では、別テナントのコンテナにアクセス出来る事自体が大きな脅威となります

kubernetesにおいてrootlessコンテナで稼働させる例

rootlessコンテナの課題

セキュリティ上rootlessコンテナが良いことはわかりましたが、なぜ普及していないのか?
ここでは、いくつかの課題を紹介します。

  • ネットワークパフォーマンスが悪い
  • well-knownポートをLISTEN出来ない
    • KubernetesではServiceなどを利用しポートを付け替えられるので大きな問題にならない

世の中の動き

別の解決策

コンテナ内で動作するユーザをroot以外のみに制限することでもコンテナを脱出できる脆弱性による脅威の影響を軽減することが出来るが、コンテナにroot昇格の脆弱性があるとこの対策も意味がない

rootlessでコンテナを動かしておくと、コンテナ内でrootに昇格され、さらにコンテナから脱出されても、ホストのrootとは無関係のユーザであるため、ホストのrootを乗っ取られることにはならない。

rootlessのほうがより根本的な解決策となっている

このような手法の例としては、以下がある

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0