4

「特権」フラグを true にしたくない Docker コンテナーを作成しています。これは、より安全な状態に保ち、より適切に制御できるようにするためのものです。コンテナは主に次のタスクに従事しています (これは、リソース アクセス スコープを定義し、それに応じてアクセス制御を適用するのに役立ちます) 1. gluster ファイル sys をコンテナにマウントします 2. SSH デーモンを実行して、着信 SSH 接続を受け入れます 3. 通常利用可能な bash コマンドをいくつか実行します

これを実現するために、docker コンテナーの実行中に「--cap-add=SYS_ADMIN」オプションを使用しました。ただし、SYS_ADMIN は、必要なものよりも多くの権限 (以下にリスト) を追加します。SYS_ADMIN 機能のサブセットのみを実現するにはどうすればよいですか?

SYS_ADMIN:

quotactl(2)、mount(2)、umount(2)、swapon(2)、swapoff(2)、sethostname(2)、および setdomainname(2) を含む一連のシステム管理操作を実行します。

  • 特権 syslog を実行する (2)

  • 操作 (Linux 2.6.37 以降、
    そのような操作を許可するには CAP_SYSLOG を使用する必要があります)。VM86_REQUEST_IRQ vm86(2) コマンドを実行します。

  • 任意の System V IPC オブジェクトに対して IPC_SET および IPC_RMID 操作を実行する

  • 信頼できる拡張属性とセキュリティ拡張属性で操作を実行する (
    attr(5) を参照)

  • lookup_dcookie(2) を使用します。
  • ioprio_set(2) を使用して割り当てる

  • IOPRIO_CLASS_RT および (Linux 2.6.25 より前の) IOPRIO_CLASS_IDLE I/O
    スケジューリング クラス。

  • ソケット資格情報を渡すときに UID を偽造します。

  • ファイルを開くシステムコール (例: accept(2)、execve(2)、open(2)、pipe( 2))。

  • clone(2) と unshare(2) で新しい名前空間を作成する CLONE_* フラグを使用します。
  • perf_event_open(2) を呼び出します。
  • 特権パフォーマンス イベント情報にアクセスします。
  • setns(2) を呼び出します。
  • fanotify_init(2) を呼び出します。
  • KEYCTL_CHOWN および KEYCTL_SETPERM keyctl(2) 操作を実行します。
  • madvise(2) MADV_HWPOISON 操作を実行します。
  • TIOCSTI ioctl(2) を使用して、呼び出し元の制御端末以外の端末の入力キューに文字を挿入します。廃止された nfsservctl(2) システム コールを使用します。
  • 廃止された bdflush(2) システム コールを使用します。
  • さまざまな特権ブロックデバイス ioctl(2) 操作を実行します。
  • さまざまな特権ファイルシステム ioctl(2) 操作を実行します。
  • 多くのデバイス ドライバーで管理操作を実行します。
4

0 に答える 0