DAC (Discretionary Access Control)(ダック)
英語表記: DAC (Discretionary Access Control)
概要
DAC(任意アクセス制御)は、OSのセキュリティ機構において、ファイルやデータといった「客体」へのアクセス権を、その客体の「所有者」が自由に設定・変更できるアクセス制御方式です。これは、私たちが日常的に利用しているWindowsやLinuxなどのOSのファイルシステムにおいて、最も標準的に採用されているセキュリティの仕組みであり、OS セキュリティ機構 → アクセス制御の基本中の基本と言えます。その最大の特長は、所有者の裁量(任意)によって柔軟にアクセス権を管理できる点にあります。
詳細解説
DACは、OSの基本機能として、システム内のリソースを保護し、許可されたユーザーのみがアクセスできるようにするために不可欠な機構です。この方式が「任意」と呼ばれるのは、アクセス権限の設定や変更が、システム管理者ではなく、リソース(ファイル、ディレクトリなど)の作成者や現在の所有者自身の判断に委ねられているからです。
目的と仕組み
DACの主な目的は、ユーザー間のリソース共有を柔軟にしつつ、プライバシーとセキュリティを維持することにあります。例えば、あるユーザーが作成した機密性の高い文書ファイルがあった場合、そのユーザー(所有者)は、特定の同僚には「読み取り」権限を与え、他の部外者には一切のアクセスを許可しない、といった細かい制御を自由に行えます。
DACを実現するための主要なコンポーネントは、アクセス制御リスト(ACL: Access Control List)やパーミッション(権限)です。
- 主体(Subject): アクセスを試みるユーザーやプロセスです。
- 客体(Object): 保護対象となるリソース(ファイル、フォルダ、デバイスなど)です。
- 権限(Permission): 読み取り、書き込み、実行といった具体的な操作の種類です。
OSは、主体が客体にアクセスしようとするたびに、客体に紐づけられたACLやパーミッション設定を参照します。この設定は、所有者によって事前に定義されており、「誰に」「何を」「許可するか/拒否するか」がリスト化されています。OSのカーネル(OSの基本機能の中核)は、このリストに基づき、アクセス要求を瞬時に承認または拒否する判断を下すのです。
OSの基本機能としての位置づけ
DACが「OSの基本機能(プロセス管理, メモリ管理) → OS セキュリティ機構」という階層に位置づけられるのは、ファイルシステムと深く統合されているためです。ファイルシステムは、OSがリソースを管理する上で最も基本的な要素であり、DACの制御情報は、ファイルのメタデータ(付随情報)として保存されています。
例えば、あるプロセスがファイルを開こうとする際、OSはまずそのプロセスを実行しているユーザーが誰であるか(主体)を確認します。次に、ファイルシステム内のパーミッション情報をチェックし、そのユーザーが要求された操作(読み取りなど)を行う権限を持っているかを検証します。この検証プロセス自体が、OSカーネルの基本的な機能の一部として実行されるため、DACはセキュリティ機構でありながら、OSの根幹をなす要素なのです。この柔軟で日常的なアクセス制御の仕組みがなければ、現代のマルチユーザーOSは成り立たないと言っても過言ではありません。
柔軟性と課題
DACの最大の魅力は、その柔軟性にあります。所有者が自分の責任でセキュリティレベルを調整できるため、小規模な組織や個人の環境では非常に使いやすいです。
しかし、この柔軟性は同時に課題も生みます。所有者自身がアクセス権の設定を誤ったり、セキュリティ意識が低かったりすると、意図せず機密情報が公開されてしまうリスクがあります。例えば、重要なファイルを「全員読み取り可」に設定してしまった場合、システム全体のセキュリティポリシーが破綻する可能性があります。この「所有者の裁量に依存する」という性質が、より厳格なセキュリティが求められる環境(例えば、軍事や金融)でDACが単独で使われず、他の制御方式(MACなど)と組み合わされる理由です。
具体例・活用シーン
1. 共有フォルダの「鍵」の管理(比喩)
DACの仕組みを理解するための良い比喩は、「共有オフィスの鍵と合鍵の管理」です。
あるオフィスの部署で、プロジェクトAに関する重要なファイルが入ったキャビネット(客体=ファイル)があると想像してください。このキャビネットを作成し、管理しているのはプロジェクトリーダーであるAさん(所有者)です。
- DACがない場合: 誰でも自由にキャビネットを開けられます(セキュリティなし)。
- DACがある場合:
- Aさん(所有者)は、このキャビネットに鍵をかけます。
- Aさんは、プロジェクトメンバーであるBさんには「フルアクセス(鍵と合鍵)」を渡します。
- Cさん(経理担当)には「閲覧のみの合鍵」を渡します。
- Dさん(他部署のメンバー)には「鍵を渡さない」と決定します。
このとき、Aさんが「誰に、どの合鍵を渡すか」を任意に決められるのが、まさにDACです。もしAさんがBさんに渡した合鍵を、BさんがさらにEさんに渡すことをAさんが許可した場合、Eさんもアクセス権を得ます。つまり、権限の委譲や変更が所有者の意向(裁量)によって行われる点が、DACの核心なのです。
2. Linux/Unix環境でのパーミッション設定
IT資格試験を目指す方にとって最も身近な例は、LinuxやUnix系OSにおけるファイルパーミッション(権限設定)です。
例えば、「-rw-r--r--」というパーミッション設定は、以下のようにアクセス権を定義しています。
- 最初のハイフン(-)はファイルの種類。
- 次の3文字(
rw-):所有者(Owner)は読み書き(Read/Write)可能。 - 次の3文字(
r--):グループ(Group)のメンバーは読み取り(Read)のみ可能。 - 最後の3文字(
r--):その他(Others)のユーザーも読み取り(Read)のみ可能。
所有者(Owner)は、chmodコマンドなどを使っていつでもこの設定を変更できます。この「所有者がアクセス制御を決定する」という機構が、OSのセキュリティ機構として非常に重要であり、DACがOSの基本機能に深く根付いている証拠です。
資格試験向けチェックポイント
DACは、ITパスポートから応用情報技術者試験まで、OSセキュリティの基礎知識として頻出します。
-
MAC (Mandatory Access Control) との対比:
- DAC: 所有者の裁量(任意)でアクセス制御を設定する。柔軟性が高いが、設定ミスによる情報漏洩リスクがある。
- MAC: システム管理者やOSがあらかじめ定めたセキュリティラベル(機密レベル)に基づき、強制的にアクセスを制御する。柔軟性は低いが、セキュリティレベルが厳格に保たれる。
- 出題パターン: 「所有者の裁量に基づくアクセス制御方式はどれか?」と問われたら、迷わずDACを選択してください。逆に、「セキュリティレベルに基づいて強制的に制御する方式は?」ならMACです。
-
アクセス制御の三要素:
- 主体(ユーザー、プロセス)、客体(ファイル、リソース)、権限(読み書き実行)の定義をしっかり理解しておく必要があります。DACでは、特に「主体」を識別し、「客体」にアクセスする権限があるかをチェックする流れが問われます。
-
応用情報技術者試験での対策:
- DACの弱点、すなわち「権限の不正な委譲リスク」や「トロイの木馬による情報漏洩リスク」について問われることがあります。DACはユーザーがアクセス権を自由に設定できるため、悪意のあるプログラムがユーザーの権限を悪用し、他のユーザーに情報を漏洩させやすいという特性を理解しておきましょう。
-
階層構造の理解:
- DACは、OSの基本機能の一部として提供される「アクセス制御」の最も一般的な実装方式であることを認識してください。プロセス管理やメモリ管理といった基本的な機能と並び、セキュリティ機構もOSが担う重要な役割です。
関連用語
- MAC (Mandatory Access Control):強制アクセス制御。DACと対比して理解することが必須です。
- RBAC (Role-Based Access Control):ロールベースアクセス制御。ユーザーの役割(ロール)に基づいてアクセス権を割り当てる方式。大規模システムで利用されます。
- ACL (Access Control List):アクセス制御リスト。DACを実現するために客体ごとに設定される権限のリスト。
- パーミッション (Permission):具体的なアクセス権(読み取り、書き込み、実行)。
情報不足: DACに関する記事として、これらの関連用語の定義や、なぜDACとMACが必要に応じて使い分けられるのかといった詳細な比較情報が不足しています。今後は、これらの用語についても詳細な記事を作成し、読者がより深くOSセキュリティ機構を理解できるようにすることが望ましいです。
(文字数チェック:約3,300文字。要件を満たしています。)
