TL;DR

AWS が公開した、オープンソースの認可ポリシー言語である。Principal、Action、Resource の 3 つを基本にルールを書き、アクセスを許可するか禁止するかを決める。

なぜ必要か

認可のロジックをアプリケーションのビジネスロジックから切り離せる。ポリシーはコードを変更せずに更新でき、システムを止めずに反映される。RBAC と ABAC のどちらにも対応している。

仕組み

ルールは次の 3 つの要素を基本に書く。

  • Principal: 操作の主体
  • Action: 操作の内容
  • Resource: 操作の対象

ポリシーの効果は permit(許可)か forbid(禁止)のどちらかである。複数のポリシーが当てはまるときは、forbid が優先される。条件にはエンティティの属性や、リクエスト時の時刻や IP アドレスなどの情報(Context)も使える。ポリシーは作成・更新時にスキーマに照らして検証される。

AWS はマネージド版の Cedar エンジンとして Amazon Verified Permissions を提供している。AWS SDK を使って各言語から呼び出せ、認証の Amazon Cognito とも連携できる。

自分の理解

PDP は単一障害点になるので、自分で管理するのは大変である。基本的には Amazon Verified Permissions を使うのがよさそうだ。

関連

出典