Amazon Verified Permissions で実装するきめ細かい認可 - Cedar ポリシーによるアクセス制御
Cedar ポリシー言語で認可ロジックをアプリケーションコードから外部化し、Cognito 統合でトークンベースの認可判定を実現する手法を紹介します。
Verified Permissions の概要
Verified Permissions はアプリケーションのきめ細かい認可をマネージドに提供するサービスで、1 秒あたり数千の認可リクエストを処理します。従来、認可ロジックはアプリケーションコード内に if 文で実装されることが多く、ポリシーの変更にコードデプロイが必要でした。Verified Permissions は Cedar ポリシー言語で認可ルールを外部化し、ポリシーの変更をコードデプロイなしに反映します。
Cedar ポリシーと Cognito 統合
Cedar ポリシーは permit (許可) と forbid (拒否) のステートメントで構成されます。「ユーザー A はドキュメント X の read アクションを許可」「管理者ロールは全リソースの全アクションを許可」といったルールを宣言的に記述します。Cognito との統合では、ID トークンのクレーム (グループ、カスタム属性) を Cedar ポリシーのプリンシパル属性として使用し、トークンベースの認可判定を実現します。API Gateway のオーソライザーとして Lambda を配置し、Verified Permissions の IsAuthorized API を呼び出すパターンが一般的です。
ポリシーストアとバッチ認可
ポリシーストアは Cedar ポリシーのコレクションで、アプリケーションごとに作成します。スキーマでエンティティタイプ (User 、 Document 、 Folder) とアクション (Read 、 Write 、 Delete) を定義し、ポリシーの構文検証を自動化します。 IsAuthorized API で単一のリクエストを認可し、 BatchIsAuthorized API で複数のリクエストを一括認可します。ポリシーテンプレートで共通パターンを定義し、テンプレートリンクポリシーでユーザーやリソースを動的にバインドすることで、ポリシーの管理を効率化します。 CloudTrail で認可リクエストのログを記録し、アクセスパターンの分析と監査に活用します。 Verified Permissions のベストプラクティスを網羅的に学ぶなら、技術書 (Amazon)を参照してください。
Verified Permissions の料金
Verified Permissions の料金は認可リクエスト数で課金されます。100 万リクエストあたり約 15 ドルで、ポリシーストアの管理やスキーマの定義に追加料金は発生しません。Cognito との統合で、ユーザー認証 (Cognito) と認可 (Verified Permissions) を分離し、認可ロジックをアプリケーションコードから外部化します。リクエスト数が多いアプリケーションでは、認可結果をキャッシュしてリクエスト数を削減することでコストを最適化します。
まとめ
Verified Permissions は Cedar ポリシー言語でアプリケーションの認可を外部化するサービスです。Cognito との統合でユーザー認証と認可を分離し、ポリシーストアのスキーマで構文検証を自動化します。BatchIsAuthorized API で複数リクエストを一括認可し、ポリシーテンプレートで共通パターンの管理を効率化します。CloudTrail で認可リクエストの監査ログを記録します。