Stratified Abstraction of Access Control Policies
Introduction
- 提出了一种帮助用户了解其政策是否正确的方法
- 将政策抽象为一组紧凑的积极和声明性陈述,准确总结谁可以访问资源。用户可以查看摘要,以确定该政策是否根据他们的意图授予访问权限。
- 关键挑战:可能请求数量的组合爆炸,其中包括用户名和帐户、标识符、主机名、IP地址等。
- 通过分层谓词抽象使总结变得易于处理,这允许我们将许多等效(具体)请求折叠成单个(抽象)查找。
Overview
- AWS policy
- 仍然难以使用
- Intuit:the criteria important to them
- Formalize:用Zelkova的查询语言形式化上述内容
- Interpret:解释工具返回的结果
Approach
- Core contribution
- from “is this policy correct?” to “who has access?”
- 关键要求
- Sound:用户需要对调查结果总结政策的信心。我们必须确保政策允许的每个访问都以一些调查结果为代表。这种过度近似至关重要地促成了有关该政策的组合推理:如果用户认为每个发现都是安全的,那么她可以放心,整个政策是安全的。
- Precise:用户要求调查结果精确。
- Compact:要求调查结果以紧凑的方式表示谁可以访问,同时仍然确保合理性和准确性。
- Example (Fig.1)
- Its SrcVpc is vpc-a, or
- Its OrgId is o-2, or
- Its SrcVpc is vpc-b and its OrgId is o-1.
Solution: Computing Findings via Stratified Abstraction
Concrete Enumeration
- 流程
- 列举可能的请求
- 查询Zelkova以过滤掉无法访问的请求
- 将其余作为调查结果返回
- 特点:Sound & Precise
- 问题:Intractable & large & useless
Predicate Abstraction
- 流程
- 对策略进行句法传递
- 提取用于约束访问的常量集
- 使用这些常量生成谓词族
- Example (Fig.1)
- p a = ˙ S r c V p c = v p c − a , p b = ˙ S r c V p c = v p c − b , p ⋆ = ˙ S r c V p c = ⋆ , p_a \dot{=} SrcVpc = vpc-a, p_b \dot{=} SrcVpc = vpc-b, p_{\star} \dot{=} SrcVpc = \star, pa=˙SrcVpc=vpc−a,pb=˙SrcVpc=vpc−b,p⋆=˙SrcVpc=⋆,
- q 1 = ˙ O r g I d = o − 1 , q 2 = ˙ O r g I d = o − 2 , q ⋆ = ˙ O r g I d = ⋆ . q_1 \dot{=} OrgId = o-1, q_2 \dot{=} OrgId = o-2, q_{\star} \dot{=} OrgId = \star. q1=˙OrgId=o−1,q2=˙OrgId=o−2,q⋆=˙OrgId=⋆.
- 枚举上述谓词生成的所有cudes和查询Zelkova以确定该策略是否允许访问
- Translate each allowed cube into a finding
- 特点:Sound & Precise
- 问题:领域不同导致列举和查询每个cude可能相当缓慢 & not compact
Stratified Abstraction
- 导致cude计算困难的原因可能是过于急切地拆分字段
- 新算法
Algorithm
Policies and Findings
- Requests :令
K
=
{
k
1
,
⋯
,
k
n
}
K = \{k_1, \cdots, k_n\}
K={k1,⋯,kn}为关键字集合,令
V
k
=
{
v
1
,
⋯
}
V_k = \{v_1, \cdots\}
Vk={v1,⋯}为关键字
k
k
k可能的值,一个请求
r
r
r是关键字
k
k
k到值
V
k
V_k
Vk的映射。
- Example: r 1 = { P r i n c i p a l ↦ 123 : u s e r / A , S r c I P ↦ 192.0.2.3 , O r g I D ↦ o − 1 } r_1 = \{Principal \mapsto 123:user/A, SrcIP \mapsto 192.0.2.3, OrgID \mapsto o-1 \} r1={Principal↦123:user/A,SrcIP↦192.0.2.3,OrgID↦o−1}
- Policies:一个policy是一个基于请求 p : r → B o o l p:r \to Bool p:r→Bool的谓词。policy的标记是它允许的请求集: γ ( p ) = ˙ { r ∣ p ( r ) = T r u e } \gamma(p) \dot{=} \{ r | p(r) = True \} γ(p)=˙{r∣p(r)=True}
- Predicates:一个谓词是一个映射
ϕ
:
V
k
→
B
o
o
l
\phi : V_k \to Bool
ϕ:Vk→Bool,谓词的标记是满足谓词的值集:
γ
(
ϕ
)
=
˙
{
v
∣
ϕ
(
v
)
=
T
r
u
e
}
\gamma(\phi) \dot{=} \{v | \phi(v) = True \}
γ(ϕ)=˙{v∣ϕ(v)=True}
- partial order: ϕ 1 ⪯ ϕ 2 \phi_1 \preceq \phi_2 ϕ1⪯ϕ2,iff γ ( ϕ 1 ) ⊆ γ ( ϕ 2 ) \gamma(\phi_1) \subseteq \gamma(\phi_2) γ(ϕ1)⊆γ(ϕ2)
- Findings:一个finding σ \sigma σ 是一个从关键字 K K K到谓词 Φ \Phi Φ的映射。 σ \sigma σ的标记为一组请求,其中每个键 k k k映射到 σ ( k ) \sigma(k) σ(k)表示中的值 v v v: γ ( σ ) = ˙ { r ∣ ∀ k . r ( k ) ∈ γ ( σ ( k ) ) } \gamma(\sigma) \dot{=} \{r | \forall k.r(k) \in \gamma(\sigma(k))\} γ(σ)=˙{r∣∀k.r(k)∈γ(σ(k))}
Properties
- Coverage:一个finding集合 ∑ \sum ∑ coverage 一个policy p p p,如果 γ ( p ) ⊆ γ ( ∑ ) \gamma(p) \sube \gamma(\sum) γ(p)⊆γ(∑).
- Reducibility:一个finding σ \sigma σ 细化另一个finding σ ′ \sigma' σ′,记为 σ ⊑ σ ′ \sigma \sqsubseteq \sigma' σ⊑σ′,如果每个关键字 k k k都有 σ ( k ) ⪯ σ ′ ( k ) \sigma(k) \preceq \sigma'(k) σ(k)⪯σ′(k). 一个finding σ \sigma σ 细化一个finding集 ∑ \sum ∑,记为 σ ⊑ ∑ \sigma \sqsubseteq \sum σ⊑∑,如果 σ \sigma σ细化一些 σ ′ ∈ ∑ \sigma' \in \sum σ′∈∑. 需要说明的是 σ ⊑ σ ′ \sigma \sqsubseteq \sigma' σ⊑σ′代表 γ ( σ ) ⊆ γ ( σ ′ ) \gamma(\sigma) \subseteq \gamma(\sigma') γ(σ)⊆γ(σ′). 一个finding σ \sigma σ 对于一个策略 p p p是 irreducibility的如果: ∃ r ∈ γ ( p ) ∩ γ ( σ ) . ∀ σ ′ ⊏ σ . r ∉ γ ( σ ′ ) \exists r \in \gamma(p) \cap \gamma(\sigma). \forall \sigma' \sqsubset \sigma. r \notin \gamma(\sigma') ∃r∈γ(p)∩γ(σ).∀σ′⊏σ.r∈/γ(σ′)
- Minimality:一个finding集 ∑ \sum ∑ 是最小的如果对于每个 ∑ ′ ⊂ ∑ \sum' \subset \sum ∑′⊂∑ 的表示严格包含在 ∑ \sum ∑的表示中。
Algorithm
根据策略 p p p和一组有限的部分有序谓词 Φ \Phi Φ,我们的目标是生成仅包含不可约结果的 p p p的最小覆盖
- Access Oracle
C a n A c c e s s ( p , σ ) = S o m e i f γ ( σ ) ∩ γ ( p ) ≠ ∅ ∣ N o n e i f γ ( σ ) ∩ γ ( p ) = ∅ CanAccess(p,\sigma) = Some \; if \; \gamma(\sigma) \cap \gamma(p) \neq \empty | None \; if \; \gamma(\sigma) \cap \gamma(p) = \empty CanAccess(p,σ)=Someifγ(σ)∩γ(p)=∅∣Noneifγ(σ)∩γ(p)=∅ - Dominators:定义了immediately dominates set of
ϕ
∈
Φ
\phi \in \Phi
ϕ∈Φ为严格小于
ϕ
\phi
ϕ但彼此无关的元素集:
i d o m ( ϕ ) = ˙ ϕ ′ ∣ ϕ ′ ≺ ϕ a n d ∀ ϕ ′ ′ . ┐ ( ϕ ′ ≺ ϕ ′ ′ ≺ ϕ ) idom(\phi) \dot{=} {\phi' | \phi' \prec \phi \; and \; \forall \phi''. \urcorner(\phi' \prec \phi''\prec \phi)} idom(ϕ)=˙ϕ′∣ϕ′≺ϕand∀ϕ′′.┐(ϕ′≺ϕ′′≺ϕ) - Reducing a Finding:
- Refining a Finding:
- Summarizing Access:
- Theorem