web-dev-qa-db-ja.com

Dockerコンテナーが複数のユーザーによってアタッチされるのを防ぐ方法は?

Dockerコンテナーを実行すると、docker psを使用して実行中のコンテナーを一覧表示できます

次に、docker attach <container id>で添付できます

問題は、実行中のコンテナを同時に接続でき、同時に実行中の作業を確認できるすべての人が、オンラインコースにとってはクールかもしれませんが、仕事ではあまり良くないということです。

どうすればそれを防ぐことができますか?

4
aurelien

Sudoを使用したDockerサブコマンド

1つの解決策は、Sudoを使用して選択したdockerコマンドを提供し、docker attachまたはdocker runコマンドを提供しないことです。

実行を制限することができますdocker ps

ユーザーに許可したいサブコマンドのみを提供する方法については、Sudoのドキュメントまたはmanページを参照してください。とにかく、ユーザーをDockerグループにすぐに配置する代わりに、Sudoを使用してDockerアクセス​​を提供することをお勧めします。

例:

visudoを実行するか、/etc/sudoers.d/<username>の下にファイルを作成し、許可する必要のあるコマンドごとに1行を作成します(これは大雑把ですが、本番環境では、いくつかの構成を使用してSudo構成を管理すると思いますpuppetchefまたはansibleのような管理ツールは、設定コードを記述した後でこれを実行します)

<user_account> ALL=(root) NOPASSWD: /usr/bin/docker ps

詳細:

詳細

注:自動ボットユーザーがdocker pullコマンドのみを必要とするようなユースケースがあったため、Sudoを通じてのみdocker pullを実行するようにそのアカウントを制限しました。このアプローチにより、次のことが確実になります。

  • 可用性(必要なものを提供)

  • 最小特権の原則

2
Ijaz Ahmad Khan

Docker Engineホストのユーザーが(Sudo特権またはDockerグループのメンバーシップのいずれかを介して)Dockerコマンドを実行する権限を持っている場合、ホストで実行されているコンテナーへの接続を制限する方法は(ベースDocker製品では)ありません

Dockerアクセス​​を効果的に提供することは、ホストにルートを提供することと同じです。

したがって、それを防ぐための鍵は、他のユーザーがそのホスト上でdockerコマンドを実行する権限を持てないようにすることです。

6
Rory McCune