Debian には Docker に関する警告項目があります。
Dockerグループのメンバーシップはsudoよりも危険です
私にとって、これはsudo自体が危険であることを意味します(Docker(グループメンバーシップ)よりも少ないですが)。
sudoのリスクは何ですか(おそらく一般的に、間違った構成に加えて)?
特に、どのようにダーバンこれはsudoが危険だということですか?
答え1
dockerとsudoの両方がフルルートアクセスを提供します。最悪のリスクは本質的にどちらの場合も同じです。
ハッカーがフルルートアクセス権を取得した場合、リカバリには通常サーバーの再構築が含まれます。彼らは何でもすることができ、サーバーから何でも隠すことができます。
したがって、sudoは設定を介してルートアクセスを制限する可能性があるため、それほど危険ではありません。 Sudoは、ユーザーに対して実行するコマンドを制御するように構成できます。また、sudoユーザーは(通常)パスワードを入力する必要があります。これにより、ハッカーはそのユーザーアカウントにアクセスできますが、パスワードがない場合は悪意のある攻撃を防ぐことができます。
Dockerの場合、これらの設定機能がないため、「より危険」です。正しい「docker run」コマンドがわかっている場合は、dockerホストからrootにコマンドラインをインポートできます。例:
docker run -it --rm --privileged --pid=host alpine:latest nsenter -t 1 /bin/sh
答え2
Unix権限は通常、権限を持つユーザーがシステムに最小限の永続的な損傷を与えるように設定されています。
sudoコマンドは、信頼できるユーザーの権限をrootに昇格させます。ルートは、オペレーティングシステムを変更して誤動作を引き起こすことを含む、システムですべての操作を実行できます。これにより、sudo アクセスと一般ルートアクセスが危険になります。
sudoアクセス権を持つ素朴なユーザーは、rootアクセスを必要とせず、rootではなくユーザー権限で実行する必要があるコマンドも含め、すべてのコマンドにsudoプレフィックスを付けることができます。ユーザーはしばしば不注意であり、rootでスペルミスしたコマンドを実行すると非常に深刻な結果につながる可能性があります。問題のコマンドが正確であり、オペレーティングシステムを破壊する意図がない場合でも、rootとして実行するとユーザーアカウントに損傷を与える可能性があるため、sudoは特に危険です。ここにユーザーは経験がなく、sudoを使用してGoogleが見つけたコマンドを検索せずに実行する可能性が高く、これはsudoを致命的に危険にする可能性があるという事実を追加します。
sudo アクセスを許可することによって付与されるデフォルト権限は、完全なルートアクセスです。ただし、sudoを微調整して、root以外の特定のユーザーまたはグループにアクセス許可を増やしたり、特定のコマンドへのroot(またはrootではない)アクセスを制限したりするなど、より制限されたアクセスを提供できます。ただし、これには特別な設定が必要で、通常「sudo」アクセスを要求するときの意味ではありません。
答え3
sudoerで他のユーザーグループを列挙したくない多くの管理者は、そうすることができるはずです。
各管理者をsudoグループに追加し、sudoersでデフォルトの「%sudo ALL = ALL ...」エントリを有効にします。
sudoのより良い使い方
代わりに役割について考えてください。したがって、システムの一部にpostgresクラスタを担当する管理者グループがある場合:
postgresスーパーユーザー(debianのpostgres)として、postgres管理コマンドを実行できるシステムのグループにこれらのユーザーを追加します。したがって、postgres自体のみを変更できます。たとえば、postgres / usersから新しいデータベース/役割を作成できますが、postgresは変更できません。システムユーザーをpostgresユーザーにマッピングする方法。
ドッカーとsudo
dockerデーモンはsuid rootとしてマークされているので、dockerの役割を考えてください。 dockerの各アプリケーションに対してこれをロールに切り替え、ユーザーがsudoを使用してdockerを起動できるようにします。
Sudo は、sudoers.d に独自の定義を持つように各ロールに対して構成されます。
私はdockerを使用しません。誰でもdockerを使用する方法の例を提供できますか?まず、他のユーザーのdockerコマンドからexecビットを削除します。つまり、次のようになります。
chmod o-x /usr/bin/docker
ドッカーをこのように呼び出すのですか?ドッカー画像はいくつありますか?その場合は、各役割に役割を付与し、sudoers.dでその定義を定義してください。