Amazon Verified Permissions のアイコン

Amazon Verified Permissions

Cedar ポリシー言語でアプリケーションの認可ロジックを外部化するサービス

何ができるか

Amazon Verified Permissions は、アプリケーションの認可 (誰が何をできるか) ロジックを Cedar ポリシー言語で定義し、アプリケーションコードから分離するサービスです。ポリシーストアにアクセスルールを集約し、API 経由で認可判定を実行します。Cognito と統合してユーザー属性に基づく認可を実現できます。

どのような場面で使うか

マルチテナント SaaS アプリケーションの認可、ロールベースアクセス制御 (RBAC) と属性ベースアクセス制御 (ABAC) の実装、認可ロジックのアプリケーションコードからの分離に利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

ビルの入退室管理システムに例えられます。各部屋 (リソース) へのアクセス権を管理システム (Verified Permissions) に集約し、「営業部の社員は会議室 A に入れる」「管理者は全部屋に入れる」といったルール (ポリシー) を一元管理します。

Verified Permissions とは

この記事は約 2 分で読めます。 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) に基づいてアクセスを制御します。

Azure・オンプレミスとの比較

Azure の対応サービス Azure RBAC + Azure Policy
オンプレミスでの対応手段 Open Policy Agent (OPA)、Casbin

AWS の優位点

  • Cedar ポリシー言語で認可ロジックをアプリケーションコードから分離し、ポリシー変更を再デプロイなしに反映
  • Cognito との統合で JWT トークンの属性に基づく認可判定を実現
  • スキーマによるポリシーの整合性検証で、誤ったポリシー定義を事前に検出

注意点

  • 認可リクエスト数に応じた従量課金。高頻度の認可判定はコストに注意
  • Cedar はオープンソースで、ローカルでのポリシーテストやシミュレーションが可能

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。