タラバガニー設計局stalins.clubNOTE/notes/object-capability-authority-by-reference

Object-Capability は authority を参照の到達可能性で表す

Object-capability (ocap) の中心は、認可判定を CanEdit(user, resource) のような外部問い合わせとして表すことではなく、オブジェクトが何へ影響を及ぼせるかを、そのオブジェクトが保持する参照で制約することにある。

Joe-E は object-capability language の目的を Principle of Least Authority (POLA) の支援と説明し、各 object が仕事に必要な最小限の authority を自然に受け取れるよう、Java に存在する ambient authority の源を制限する。E の capability model でも、既存 object が新たな authority を得る経路を object reference の受け渡しとして制限する。

したがって、ocap の世界では概念的に次のようになる。

持っていない参照
    -> その resource へ作用できない

持っている限定参照
    -> その参照が許す操作だけ行える

ただし、「普通の言語で EditableDocument という wrapper 型を作れば、それだけで object-capability になる」わけではない。Joe-E が ambient authority を除去するために Java の subset を定義していることからも分かるように、参照以外の経路で resource へ到達できるなら、型名だけでは authority を制約できない。

また object-capability 文献が直接主張しているのは authority と object reference の関係であり、「Web リクエストで認可後に domain object を別型へ変換する」という設計そのものではない。後者との対応は 「認可済みリソース型」は既存研究の直訳ではなく設計上の合成 で分けて扱う。

2016年の Drossopoulou, Noble, Miller, Murray は、Miller が区別していた permission と authority を object-oriented calculus 上で形式化し、current/eventual/behavioral/topological な authority の境界を整理している。これは capability を単なる ACL の別名として扱わないためにも重要である。

出典

▸ ノート一覧に戻る