14. アクセス制御のモデル
属性 A の羃で表現
要求 r ∈ P(A) = requestOf(viewer)
許可 p ∈ P(A) = permissionOf(target)
確認 p allows r ? p ∩ r = ?
15. アクセス制御のモデル
属性 A の羃で表現
要求 r ∈ P(A) = requestOf(viewer)
許可 p ∈ P(A) = permissionOf(target)
確認 p allows r ? p ∩ r = ?
例
ユーザ 閲覧許可 要求 許可
u1 なし {u1} {u1}
u2 u1, u3 {u2} {u1, u2, u3}
u3 u2 {u3} {u2, u3}
permissionOf(u1) allows requestOf(u2) = false
permissionOf(u2) allows requestOf(u3) = true
permissionOf(u3) allows requestOf(u1) = false
16. アクセス制御のモデル
属性 A の羃で表現
要求 r ∈ P(A) = requestOf(viewer)
許可 p ∈ P(A) = permissionOf(target)
確認 p allows r ? p ∩ r = ?
コードによる表現
val r = requestOf(visitor)
val p = permissionOf(bookmark.owner)
if (p allows r) Some(bookmark)
else None
? オブジェクトから属性集合へのマッピング
(permissionOf, requestOf)
? オブジェクト型ごとの一貫したメンテが可能
17. アクセス制御のモデル
r {a, b, c}
r {a, b} {a, c} {b, c}
r {a} {b} {c}
p {a} {b} {c}
p {a, b} {a, c} {b, c}
p {a, b, c}
? Lattice-based access control (LBAC)
? 権限の強弱関係が束をなす
25. アクセス制御のよいモデル
属性 A の半環で許可を表現
要求 r ∈ P(A) = requestOf(viewer)
許可 p ∈ P(P(A)) = permissionOf(target)
確認 p allows r ? ?q ∈ p. q ? r
半環 P(P(A)), ⊕, ?, ?, {?}
? p1 ⊕ p2 = p1 ∪ p2
? p1 ? p2 = p1 ? p2 = {q1 ∪ q2 | q1 ∈ p1 ∧ q2 ∈ p2}
コードによる表現
val r = requestOf(visitor)
val p1 = permissionOf(bookmark.owner)
val p2 = permissionOf(bookmark)
val p = p1 & p2 // p1 ? p2
if (p allows r) Some(bookmark)
else None
26. 半環構造の妥当性
もしこう書いてしまったら?
val r = requestOf(visitor)
val p1 = permissionOf(bookmark.owner)
val p2 = permissionOf(bookmark)
if (p1 allows r) {
if (p2 allows r) Some(bookmark)
else None
} else None
27. 半環構造の妥当性
Theorem (ブール代数への準同型写像)
?r. allows r : P(P(A)) → B は準同型写像
もしこう書いてしまったら? → OK!
val r = requestOf(visitor)
val p1 = permissionOf(bookmark.owner)
val p2 = permissionOf(bookmark)
if (p1 allows r) {
if (p2 allows r) Some(bookmark)
else None
} else None
28. 半環構造の妥当性
Theorem (ブール代数への準同型写像)
?r. allows r : P(P(A)) → B は準同型写像
注意
? B, ∨, ∧, ⊥, ? : ブール代数
? p allows r : B
? allows : P(P(A)) → P(A) → B
? allows r : P(P(A)) → B (部分適用)
29. 半環構造の妥当性
Theorem (ブール代数への準同型写像)
?r. allows r : P(P(A)) → B は準同型写像
p1, p2 p1 ? p2
p1 allows r,
p2 allows r
(p1 ? p2) allows r
p1 allows r ∧ p2 allows r
?
allows r
allows r
∧
? 条件を分解してチェックしても OK
30. 出典
G. Karvounarakis and T. J. Green.
Semiring-annotated data: Queries and
provenance?
SIGMOD Record, 41(3):5–14, 2012.
R. Thion, F. Lesueur, and M. Talbi.
Tuple-based access control: a provenance-based
information ?ow control for relational data.
In 30th ACM/SIGAPP SAC, 2015.