# ACLとは

ACLは、**Access Control List(アクセス制御リスト)**の略称です。コンピューターシステム、ネットワーク機器、ファイルサーバー、クラウドサービスなどで、誰がどの対象に対して、どのような操作を実行できるかを定義する仕組みです。日本語では、一般的に「アクセス制御リスト」または「アクセス管理リスト」と呼ばれます。

ACLでは、保護したい対象と、それに対する許可または拒否のルールを一覧として管理します。保護対象には、ファイル、フォルダー、データベースのテーブル、ネットワークパケット、Web API、クラウドストレージのオブジェクトなどがあります。利用者、利用者グループ、コンピューター、IPアドレス、ポート番号、プロトコルなどを条件として指定し、読み取り、書き込み、実行、削除、通信許可などの操作を制御します。

例えば、会社の共有フォルダーにACLを設定する場合があります。人事部のグループには給与情報の読み取りと更新を許可し、一般社員にはアクセスを拒否します。また、システム管理者には管理目的で完全なアクセス権を与えることができます。このように、ACLを利用すると、対象ごとに細かい権限設定を行うことができます。

ACLには、主にファイルシステムACLとネットワークACLがあります。ファイルシステムACLは、ファイルやフォルダーに対する利用者の権限を制御します。LinuxのPOSIX ACL、WindowsのNTFS ACL、クラウドストレージのバケットポリシーなどが代表例です。一方、ネットワークACLは、ネットワークを流れる通信を制御します。送信元IPアドレス、宛先IPアドレス、通信プロトコル、ポート番号などを条件にして、通信を許可または拒否します。

ネットワークACLは、ファイアウォールやルーター、スイッチ、クラウドの仮想ネットワークなどで使用されます。例えば、Webサーバーに対するHTTPS通信だけを許可し、外部からのデータベース接続を拒否する設定ができます。これにより、不要な通信経路を閉じ、攻撃対象となる範囲を小さくできます。

ACLのルールには、通常、上から順番に評価する方式があります。最初に条件に一致したルールを適用する装置も多いため、ルールの順番は非常に重要です。また、明示的な許可ルールが存在しない通信を拒否する「暗黙の拒否」が採用される場合もあります。そのため、管理者は必要な通信や操作だけを明示的に許可し、不要な権限を与えないように設定する必要があります。

ACLは便利な仕組みですが、ルールが増えると管理が複雑になります。似たようなルールが重複したり、古い利用者の権限が残ったりすると、意図しないアクセスを許可する危険があります。そのため、ACLを運用する場合には、定期的な棚卸し、変更履歴の記録、不要なルールの削除、アクセスログの監視が重要です。

また、ACLは認証そのものを担当する仕組みではありません。認証は「利用者が誰であるかを確認する処理」であり、ACLは「認証された利用者が何を実行できるかを判断する仕組み」です。安全なシステムを構築するためには、認証、認可、暗号化、監査ログなどを組み合わせる必要があります。

## ACLの主な特徴

1. **利用者やグループごとに権限を設定できます。** 個人、部署、管理者グループ、サービスアカウントなどに対して、異なるアクセス権を割り当てることができます。

2. **対象ごとに細かいアクセス制御ができます。** ファイル、フォルダー、ネットワークポート、IPアドレス、APIなど、さまざまな対象を個別に保護できます。

3. **許可と拒否を明示的に定義できます。** 特定のアクセスだけを許可したり、特定の利用者や通信元を拒否したりできます。

4. **ネットワーク通信を条件付きで制御できます。** 送信元、宛先、ポート番号、プロトコル、方向などの条件を組み合わせて通信を管理できます。

5. **最小権限の原則を実現しやすくなります。** 利用者が業務に必要な範囲だけアクセスできるように設定できます。

6. **アクセス履歴や監査と組み合わせられます。** ACLによる制御結果をログに記録し、不正アクセスや設定ミスを調査できます。

7. **クラウド環境でも利用できます。** Amazon S3、Microsoft Azure、Google Cloudなどでは、ストレージやネットワークのアクセス制御にACLまたは類似のポリシーを使用できます。

8. **ルールの順番や既定動作に注意が必要です。** ルールの評価順序を誤ると、許可すべき通信が拒否されたり、拒否すべき通信が許可されたりします。

9. **ルールが増えると運用が複雑になります。** 大規模環境では、中央管理、テンプレート化、自動化、定期監査などが必要になります。

10. **認証とは異なる役割を持ちます。** ACLは利用者の身元を確認するものではなく、確認後に実行可能な操作を決定する仕組みです。

## まとめ

ACLは、システムやネットワーク上の資源に対して、誰が何をできるかを定義する基本的なセキュリティ機能です。適切に設定すれば、機密情報の保護、不要な通信の遮断、内部不正の防止、権限管理の明確化に役立ちます。一方で、設定ミスや古いルールの放置はセキュリティ上の問題につながるため、最小権限の原則に基づいて設計し、定期的に見直すことが大切です。

## 参考資料

1. Red Hat Documentation「Access Control Lists」 https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/

2. Linux man-pages「acl」 https://man7.org/linux/man-pages/man5/acl.5.html

3. Microsoft Learn「アクセス制御リスト」 https://learn.microsoft.com/ja-jp/windows-server/identity/ad-ds/manage/understand-security-identifiers

4. Cisco「Access Control Lists」 https://www.cisco.com/c/en/us/support/docs/security/ios-firewall/23602-confaccesslists.html

5. Amazon Web Services「Amazon S3のアクセス制御リスト」 https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/acls.html

6. Google Cloud「Virtual Private Cloud ファイアウォールのルール」 https://cloud.google.com/firewall/docs/firewalls?hl=ja

7. NIST「Access Control」関連資料 https://csrc.nist.gov/projects/access-control

投稿者 wlbhiro

コメントを残す