Access Control List — リソースへのアクセス権を明示的に列挙する制御リスト。ネットワーク機器・OS ファイルシステム・クラウドサービスで広く利用される。
概要
ACL は「誰が何にどうアクセスできるか」を列挙したルールセット。典型的には以下の 3 要素で構成される。
| 要素 | 例 |
|---|---|
| Subject(主体) | ユーザー / グループ / IP / デバイスタグ |
| Resource(対象) | ファイル / ポート / API パス / デバイス |
| Action(操作) | 許可 (allow) / 拒否 (deny)、read/write/execute など |
領域別の代表例
| 領域 | 製品・プロトコル |
|---|---|
| ネットワーク | Cisco IOS / ヤマハ RTX の ACL、Linux iptables / nftables |
| ファイルシステム | POSIX ACL、Windows NTFS ACL |
| クラウド | AWS S3 ACL / IAM、GCP IAM ポリシー、Azure RBAC |
| オーバーレイ VPN | Tailscale ACL(HuJSON)、ZeroTier Flow Rules |
Tailscale ACL の例
Tailscale では tailnet 内の通信を ACL で制御する。次の例はクライアントタグの端末から自宅サーバタグの RDP (3389) のみを許可する最小構成。
{
"tagOwners": {
"tag:home-server": ["autogroup:admin"],
"tag:client": ["autogroup:admin"]
},
"acls": [
{
"action": "accept",
"src": ["tag:client"],
"dst": ["tag:home-server:3389"]
}
],
"ssh": []
}
効果:
- クライアント端末が侵害されても、RDP 以外のポートへは到達不能
- 将来家族や同僚のデバイスを追加しても、タグ付与で権限を切り分けられる
- ゼロトラスト原則に沿った 最小権限 が実現
ACL 設計の原則
- Deny by default: 許可しないものは明示的に書かない(暗黙拒否)
- 最小権限: 必要なポート・操作だけを許可
- 役割ベース: 個別ユーザーではなくロール/タグ単位で定義
- テスト可能: Tailscale なら
tailscale netcheckや ACL Tester で事前検証