Dockerの秘密は安全と見なされるので、セキュリティレベルを知りたいです。予想どおり、秘密へのサービスアクセスを許可すると、一時ファイルシステムが/var/lib/docker/containers/<container ID>/mounts/secrets
サービスジョブをホストしているノードのコンテナパス()にマウントされることがわかります。ただし、このパス内のファイルをキャプチャして秘密の内容を表示できます。
それでは、構成よりも秘密をより安全にすることが何であるか疑問に思いました。私が知る限り、RAMディスクに保存されるという事実は、RAMディスクと構成の主な違いです。構成と秘密は、どちらもRaftで内部的に暗号化されています。唯一の違いは、構成がRAMディスク上の秘密ではなく、コンテナにインストールされたときにディスク上のファイルに保存されることです。しかし、秘密の内容を見ることができれば本当に変わりますか?
答え1
残念ながら、安定感これは簡単な用語ではありません。むしろ話したいリスク評価そしてリスクの受け入れ。それはあなたがどれほど編集的であるか、そしてどの解決策が安全であると主張するかについての質問に答えることです。
文書によると、私たちは:
Swarmに秘密を追加すると、Dockerは相互TLS接続を介してSwarm管理者に秘密を送信します。秘密は Raft ログに保存され暗号化されます。 Raftログ全体は異なる管理者間で複製され、秘密が残りのクラスタ管理データと同じ高可用性を保証するようにします。
秘密の可用性。コンテナあたりゾロ。コンテナがどのノードで実行されるのかわからないため、これを気にする必要はありません。つまり、この秘密はコンテナが実行されているすべての場所で利用できる必要があります。
記憶の中の秘密。秘密を覚えておくことに関する記事がありますが、ここ問題は、システムとメモリ管理を信頼しないと、メモリに保存されているパスワードよりも大きな問題に直面することです。
違い。
あなたがそれを実現できると言うほぼ秘密ファイルを暗号化されたままにすることも同様です。OpenSSL、暗号化されていないコンテンツを復号化し、メモリに保存します。これらすべてを手動で実行する必要があります。