日本語

開発者ツール · Docker run から Docker compose コンバーター

--privileged、--cap-add、および --device: Compose ファイル内での意味

· なぜそれが重要なのか

ドッカー 作成 セキュリティ

--privileged、--cap-add、および --device を示す抽象図: 構成ファイル内での意味
オリジナル ToolAcre ベクトル イラスト

1 つのフラグにより、Docker の分離の大部分がオフになります。この投稿では、 --privileged が実際に何を付与するのか、より狭い代替手段、および変換後の特権:、cap_add:、およびデバイス: でどのように見えるかを説明します。

フォーラムには、 --privileged を追加するとありました。コンテナは現在動作しており、コンテナを魅力的にしていた分離機能はほとんどなくなっています。

フォーラムには、 --privileged を追加すると書かれています。コンテナは機能するようになり、コンテナの魅力となっていた分離性はほとんどなくなりました。証拠: --privileged は、安全性の承認がなければ、privileged true になります。使い捨てリテラルを使用して最小特権を再現します。各ソース オカレンスを特権機能デバイスとペアリングします。宛先レビューのためにホストの制限とアクセスを予約します。

このセキュリティ インシデントでは、別のセキュリティ インシデントの境界として、--device は認識されているものの、ホスト依存として警告され、省略されていることも明らかになりました。証拠: --device は認識されますが、ホストに依存するものとして警告され、省略されます。この最小特権制約は停止点です。製造動作を行わずに特権機能デバイスを検査し、ホストの制限とアクセスに関するホスト チェックを文書化します。

--privileged の機能 - すべての機能、すべてのデバイスへのアクセス、緩和された seccomp および AppArmor 制限

--privileged の機能 - すべての機能、すべてのデバイスへのアクセス、緩和された seccomp と AppArmor の制限。証拠: ホスト閉じ込めの影響はコマンド テキストから列挙することはできません。最小特権トークンを特権機能デバイスにトレースします。順序付けされた値を最終値フィールドから分離します。ホストは閉じ込められており、アクセスはコレクション外です。

関連するセキュリティ メカニズムの境界は、別のセキュリティ文法の境界は、必要な Zigbee アクセスが以前の特権コマンドから推測できないことです。証拠: 必要な Zigbee アクセスは、以前の特権コマンドからは推測できません。この最小特権事実を使用して、特権機能デバイスの 1 つのメンバーまたはスカラーを予測します。ホストの制限とアクセスについて決定する前に、警告を確認してください。

代わりの機能 — cap_add: NET_ADMIN、SYS_TIME などを狭いバージョンとして使用し、cap_drop: ALL をベースラインとして使用します

代わりの機能 — cap_add: NET_ADMIN、SYS_TIME などを狭いバージョンとして使用し、cap_drop: ALL をベースラインとして使用します。証拠: --cap-add と --cap-drop は明示的な順序付きリストになります。最小権限のシリアル化をそのモデルから判断します。特権機能デバイスでの引用はタイプを保護しますが、ホストの制限とアクセスの動作証明は提供しません。

2 番目のセキュリティシリアル化の観察は、別個のセキュリティ出力境界は、警告によってギャップが維持される一方で、可視の特権キーがレビューをサポートすることです。証拠: 可視の特権キーはレビューをサポートし、警告はギャップを維持します。この最小権限の出力により、設定と使用できないコンテキストが分離されます。特権機能デバイスをレビュー可能な状態に保ち、ホストの制限とアクセスを個別にチェックします。

--device は認識されますが、意図的に変換されません。ホスト固有のデバイスリストを手動で追加する

デバイス — --device /dev/ttyUSB0 がデバイスになります:、人々が --privileged に到達する通常の本当の理由。証拠: --device は認識されますが、ホストに依存するものとして警告され、省略されます。 --device は認識されますが、意図的に変換されません。ホスト固有のデバイス リストを手動で追加します。推測するのではなく、少なくとも特権の例外を停止してください。特権機能に近いデバイスを追加するには、ホストの制限とアクセスに関連する展開固有の理由が必要です。

もう 1 つのセキュリティ例外制約は、このセキュリティ セクションについては、このセキュリティ セクションのコマンドと警告のオリジナルをこの候補ファイルの横に保持することです。証拠: リポジトリは、より広範な実行時または歴史的な証拠を提供しません。元の最小特権コマンドは警告の横に残しておきます。この比較により、デバイスにどのような特権機能が含まれているか、どのホストの制限とアクセスの決定が手動のままであるかがわかります。

このコンバーターは必要なデバイスまたは機能を推測できないため、権限を剥奪する編集にはオペレーターの判断が必要です。

有効な例: Zigbee ブリッジ コマンドの特権を剥奪する — --privileged をデバイス エントリと単一の機能に置き換えます。証拠: 必要な Zigbee アクセスは、以前の特権コマンドからは推測できません。このコンバータは必要なデバイスや機能を推測できないため、権限を剥奪する編集にはオペレータの判断が必要です。合成名から最小権限の例を構築します。本番ホストの制限やアクセスの詳細を公開することなく、すべての特権機能デバイス項目を追跡可能にします。

同じセキュリティのサンプル サンプルは、このセキュリティ セクションについて、このセキュリティ セクションのコマンドと警告のオリジナルをこの候補ファイルの横に保持することを示しています。ペアになった最小特権事実は、特権機能デバイスで表示される必要があります。その行を記録し、ホストの制限とアクセスに関する思い込みを避けてください。

変換された YAML をレビューとして読み取る — 特権: true は、シェル行のフラグとは異なり、差分内で目立ちます。

変換された YAML をレビューとして読み取る — 特権: true は、シェル行のフラグとは異なり、diff 内で目立ちます。最小特権の結果を 1 つの観察可能な特権機能デバイスの違いに変換します。 Docker は、その後のホストの制限とアクセスの判定を所有します。

セキュリティ影響の実装では、別のセキュリティ影響境界として、 --privileged が安全性の承認なしで特権 true になることも示されています。最小権限の責任を分割します。変換は特権機能デバイスを書き込み、リポジトリはシークレットを削除し、オペレータはホストの制限とアクセスを検証します。

これでカバーされないもの — GPU アクセス、カスタム seccomp プロファイル、および Kubernetes セキュリティ コンテキスト

これでカバーされないもの — GPU アクセス、カスタム seccomp プロファイル、および Kubernetes セキュリティ コンテキスト。証拠: GPU 予約とカスタム プロファイルは生成されません。最小特権の範囲を、ここに示されている特権機能デバイス ブランチに制限します。隣接するフォームとデフォルトは、ホストの制限とアクセスの質問に答えることができません。

もう 1 つのセキュリティ スコープ制限は、別のセキュリティ制限境界に続き、ホスト制限の影響をコマンド テキストから列挙できないことです。この最小権限の境界は除外として扱います。ホストの制限とアクセスについての推測よりも、正確な特権機能を持つデバイスを優先します。

マッピング時に特権が表示されますが、サポートされていないデバイスへのアクセスは生成されたキーではなく警告のままです

要点: 特権は明示的かつ最小限である必要があり、コンバーターはそれを質問できるキーとして表示します。証拠: 最小限の特権には、変換を超えた人間の設計が必要です。権限はマッピング時に表示されますが、サポートされていないデバイスへのアクセスは、生成されたキーではなく警告のままになります。ソース オプション、モデル フィールド、特権機能デバイスの行および警告として最小権限を監査します。ホストの制限とアクセスを確認する前に、シークレットを削除してください。

最後に、セキュリティ テイクアウェイ ソースは、このセキュリティ セクションの元のコマンドを維持することを確認し、このセキュリティ セクションのこの候補ファイルの横に、セキュリティ テイクアウェイの結論により、このセキュリティ セクションの解析に対する等価シェルを約束することなく、セキュリティ テイクアウェイの結論がこのセキュリティ セクションの監査可能性を向上させるという警告がセキュリティ テイクアウェイの保証の範囲外であることを確認します。最小特権を狭く絞り込む: 特権機能のあるデバイスが候補です。ホストの制限とアクセス、およびシェルの同等性は保証されません。