ケイパビリティベースセキュリティ
リソースへのアクセス権を偽造不可能なトークン (ケイパビリティ) として管理するセキュリティモデル
ケイパビリティベースセキュリティとは
ケイパビリティベースセキュリティは、リソースへのアクセス権を偽造不可能なトークン (ケイパビリティ) として表現し、そのトークンを持つ者だけがリソースにアクセスできるセキュリティモデルである。1966 年に Dennis と Van Horn が提唱した。
ACL (アクセス制御リスト) が「誰がアクセスできるか」をリソース側で管理するのに対し、ケイパビリティは「何にアクセスできるか」をトークン側で管理する。
ACL との比較
ACL との比較を図で示す。
ACL モデル:
リソース (ファイル) → [Alice: 読み取り, Bob: 読み書き]
アクセス時: 「Alice がファイルにアクセス」→ ACL を確認 → 許可/拒否
ケイパビリティモデル:
Alice → [ファイルA: 読み取りトークン, ファイルB: 読み書きトークン]
アクセス時: 「トークンを提示」→ トークンが有効なら許可
| 観点 | ACL | ケイパビリティ |
|---|---|---|
| 管理の主体 | リソース側 | トークン保持者側 |
| 権限の委譲 | 管理者が設定 | トークンを渡すだけ |
| 最小権限 | 設定が複雑 | トークンの粒度で自然に実現 |
| 権限の取り消し | ACL から削除 | トークンの無効化 (困難な場合あり) |
実務での具体例
S3 署名付き URL
S3 の署名付き URL は、ケイパビリティの典型例だ。URL 自体がアクセス権を含んでおり、URL を知っている人は誰でもアクセスできる。
const url = await getSignedUrl(s3Client, new GetObjectCommand({
Bucket: 'my-bucket',
Key: 'private/report.pdf',
}), { expiresIn: 3600 }); // 1 時間有効
// この URL を持つ人は誰でも report.pdf をダウンロードできる
// https://my-bucket.s3.amazonaws.com/private/report.pdf?X-Amz-Signature=...
JWT
JWT はユーザーの権限情報をトークンに含む。トークンを持つリクエストは、サーバーが DB を参照せずに権限を検証できる。
API キー
API キー自体がアクセス権を表す。キーを持つ者は API にアクセスできる。
ケイパビリティの利点
- 権限の委譲が容易 (トークンを渡すだけ)
- 最小権限が自然に実現される (必要な権限だけのトークンを発行)
- 分散システムとの相性が良い (中央の ACL サーバーが不要)
ケイパビリティの課題
権限の取り消し
トークンが配布された後、特定のトークンだけを無効化するのが困難。対策:
- 短い有効期限 (TTL) を設定する
- トークンの無効化リスト (ブラックリスト) を管理する
- リフレッシュトークンで定期的に再発行する
トークンの漏洩
トークンが漏洩すると、漏洩者がアクセス権を得る。HTTPS での通信、トークンの暗号化、短い TTL で影響を限定する。
ケイパビリティベースセキュリティを扱う関連書籍も多い。
この記事は役に立ちましたか?
関連用語
RBAC
ロール (役割) に基づいてアクセス権限を管理する認可モデル
ABAC
ユーザー、リソース、環境の属性に基づいてアクセス制御を動的に判断する認可モデル
最小権限の原則
ユーザーやプログラムに、タスクの遂行に必要な最小限の権限のみを付与するセキュリティ原則
リフレッシュトークン
アクセストークンの有効期限切れ後に、再認証なしで新しいアクセストークンを取得するためのトークン
OAuth 2.0
ユーザーのパスワードを渡さずに、リソースへの限定的なアクセスを許可する認可フレームワーク
OpenID Connect
OAuth 2.0 の上に構築された認証レイヤーで、ユーザーの身元情報を ID トークンとして提供する
関連する記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。