コンテンツにスキップ

4章 アクセス制御

Created: 2023/10/09

基本

リソースと所有権

  • ユーザアカウント
    • ↑ ユーザIDが紐づいている
    • 人間はユーザアカウントでログインできる
    • プロセスはユーザアカウントによって実行できる
graph LR
    user(ユーザ) -->|起動| proc(プロセス)
    proc -->|使用| file(ファイル)
    file -->|所有| user

Linuxにおけるユーザ、プロセス、ファイルの関係は次の通り。

  • ユーザ
    • プロセスを起動し、ファイルを所有
    • プロセスとは、カーネルがメインメモリにロードして実行するプログラムのことを指す
  • ファイル
    • デフォルトではファイルを作成したユーザがそのファイルを所有する
  • プロセス
    • 他プロセスとの通信およびデータの永続化のためにファイルを使用する
    • ユーザもファイルを使用するが、それhあプロセスを介した直接的な使用となる

サンドボックス化

FreeBSD jail、コンテナ、仮想マシンなどの様々な手法を指すことがある、曖昧な言葉。

アクセス制御の種類

  • 任意アクセス制御
    • ユーザのアイデンティティ(ユーザIDなど)に基づいてリソースのアクセスを制限する。
    • ある権限を持つユーザは他のユーザ位にその権限を譲ることができる(ので任意)
  • 強制アクセス制御
    • ユーザにはクリアランスレベルが、リソースにはセキュリティレベルが割り当てられる
    • ユーザは自分のクリアランスレベルと同等またはそれいかのクリアランスレベルに対応するリソースにのみアクセスできる
    • この強制アクセスモデルでは管理者が「厳密に」アクセスを制御し、すべての権限を設定する
    • ユーザは、たとえ自分の所有するリソースであっても、自分自身でアクセス権を設定できない

Linuxは、すべてを変更できるスーパーユーザーか、アクセスが制限された一般ユーザーかのどちらかである。

SELinuxはLinuxにおける強制アクセス制御の実装である。

ユーザ

2種類のユーザアカウントがある。

  • いわゆるシステムユーザ、またはシステムアカウント
    • デーモン、システムユーザ権限でバックグラウンドプロセスとして実行される
  • 一般ユーザ
    • シェルを介して対話的にLinuxを利用するユーザを指す

システムユーザと一般ユーザは組織形態によって区別する。

  • ユーザID(UID)
    • Linuxが管理する32bitの数値
    • LinuxはUIDでユーザを識別する
      • かつ、グループID(GID)