Amazon Verified Permissions
Cedar ポリシー言語でアプリケーションの認可ロジックを外部化するサービス
何ができるか
Amazon Verified Permissions は、アプリケーションの認可 (誰が何をできるか) ロジックを Cedar ポリシー言語で定義し、アプリケーションコードから分離するサービスです。ポリシーストアにアクセスルールを集約し、API 経由で認可判定を実行します。Cognito と統合してユーザー属性に基づく認可を実現できます。
どのような場面で使うか
マルチテナント SaaS アプリケーションの認可、ロールベースアクセス制御 (RBAC) と属性ベースアクセス制御 (ABAC) の実装、認可ロジックのアプリケーションコードからの分離に利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
ビルの入退室管理システムに例えられます。各部屋 (リソース) へのアクセス権を管理システム (Verified Permissions) に集約し、「営業部の社員は会議室 A に入れる」「管理者は全部屋に入れる」といったルール (ポリシー) を一元管理します。
Verified Permissions とは
Amazon Verified Permissions は、認可ロジックの外部化サービスです。従来、「このユーザーはこのリソースにアクセスできるか」の判定はアプリケーションコード内に if 文で実装されていました。Verified Permissions は Cedar ポリシー言語でルールを定義し、IsAuthorized API で認可判定を実行します。ポリシーの変更がアプリケーションの再デプロイなしに反映されます。
Cedar ポリシーとスキーマ
Cedar は AWS が開発したオープンソースのポリシー言語です。「principal (誰が) が action (何を) resource (何に対して) できるか」を宣言的に記述します。スキーマでエンティティタイプ (User、Document、Folder) とアクション (Read、Write、Delete) を定義し、ポリシーの整合性を検証できます。Cognito のユーザープールと統合すると、JWT トークンの属性 (グループ、カスタム属性) をポリシーの判定に使用できます。
はじめかた
Verified Permissions コンソールでポリシーストアを作成し、スキーマを定義します。Cedar ポリシーを作成してアクセスルールを記述します。アプリケーションから IsAuthorized API を呼び出し、認可判定の結果 (Allow / Deny) に基づいてアクセスを制御します。
注意点
- 認可リクエスト数に応じた従量課金。高頻度の認可判定はコストに注意
- Cedar はオープンソースで、ローカルでのポリシーテストやシミュレーションが可能
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。