タラバガニー設計局stalins.clubNOTE/notes/authorization-logic-as-programming-language-construct

AURA と PCML₅ は認可ロジックをプログラム構造へ組み込む

認可を「アプリ本体とは別の policy engine」だけに閉じ込めず、programming language 自体へ authorization logic を組み込む研究もある。AURA と PCML₅ はその代表例である。

AURA は 2008 年の ICFP で提案された access-control 向け programming language で、整数や再帰関数のような通常の programming construct と、principal や access-control policy のような authorization logic construct を同じ言語で扱う。dependent types により、authorization assertion が通常の program value を直接参照できる。

つまり、resource ID や principal を policy engine 用の文字列へ変換して外へ投げるだけではなく、

program value
   ↕
authorization assertion
   ↕
type system

を一つの言語内で接続しようとしている。

PCML₅ は distributed application と distributed access control を一体化した programming language である。各 site の sensitive resource は reference monitor によって保護され、monitor は principal の authentication と policy compliance の logical proof を要求する。さらに PCML₅ の type system は resource の locality と、local policy を満たすために必要な authentication / authorization obligations を追跡し、well-typed program が controlled resource の reference monitor で runtime access-control violation を起こさないことを狙う。

この2つは 型システムで「認可ポリシーを守るコード」を検証する研究 より「通常のプログラマが書く言語構造と authorization をどう結合するか」に焦点を当てて読むと分かりやすい。

ただし、これらも EditableDocument wrapper を直接デザインパターンとして提案しているわけではない。むしろ authorization assertion / proof obligation / protected resource access を言語意味論と型システムの側で一級の概念にするアプローチである。

Web framework に依存しない「コードで認可をどう表すか」という問いに対しては、かなり直接的な先行研究といえる。

出典

▸ ノート一覧に戻る