Semantic-based Automated Reasoning for AWS Access Policies using SMT

Introduction

  • 访问控制策略是对哪些资源可以访问、由谁访问以及在什么条件下访问的表达性规范。
  • 云客户想要一个工具,允许他们根据安全要求检查策略配置
  • AWS 提供了一种policy language
    • allow statements
    • deny statements
    • 语句中的条件可以基于访问详细信息,如源地址、加密和其他配置选项
  • 99%的policy questions —— 160 milliseconds
  • AWS的特点
    • AWS策略语言是根据JSON序列化定义的,旨在用于各种云服务和访问控制场景
    • ZELKOVA将政策语言的所有组件合并到一个分析工具中

Approach

  • 当向AWS服务提出访问请求时,将生成一个请求上下文,其中包括提出请求的主体、请求的资源和请求的具体操作。
  • 策略评估引擎将此请求上下文与用户和资源的策略进行比较,以确定是否授予或拒绝访问。
  • ZELKOVA通过对所有可能的请求上下文进行推理来验证AWS策略。
  • ZELKOVA的基本机制是能够说出一种政策是否比另一种政策更宽松。

Policy language overview

  • AWS policy language
    在这里插入图片描述
    • Effect : whether the statement allows or denies access (默认值:deny)
      • 允许语句覆盖默认权限,拒绝语句覆盖允许语句授予的权限。
      • policy中没有顺序的概念
    • Principal : 指定哪些用户、帐户、服务或实体被授予或拒绝访问资源
    • Action : 指定了相应资源上允许或拒绝的操作列表
    • Resource : 指定授予或拒绝访问的服务特定资源的列表
    • Condition : 规定了授予或拒绝访问权限的条件

Example

  • Amazon Simple Storage Service (S3)
    • object store
    • a logical unit of storage is called a bucket
    • uniquely identified through an Amazon Resource Name (ARN)
    • 附加到bucket上的策略控制对bucket和bucket中对象的访问
      在这里插入图片描述
  • Encoding of the policies
    在这里插入图片描述
    • To determine if policy X X X is less-or-equally-permissive than policy Y Y Y , ZELKOVA uses SMT solvers to check if
      ( X 0 ∨ X 1 ) ⇒ ( Y 0 ∧ ┐ Y 1 ) (X_0 \lor X_1) \Rightarrow (Y_0 \land \urcorner Y_1) (X0X1)(Y0Y1)

SMT Encoding

  • 策略授予的权限被编码为允许语句授予的,并不被拒绝声明撤销的所有权限:
    ( ⋁ S ∈ A l l o w [ [ S ] ] ) ∧ ┐ ( ⋁ S ∈ D e n y [ [ S ] ] ) (\bigvee_{S \in Allow} [[S]]) \land \urcorner(\bigvee_{S \in Deny} [[S]]) (SAllow[[S]])(SDeny[[S]])
    其中 [ [ S ] ] [[S]] [[S]]代表权限集合
  • 策略中的每个语句都对主体、操作、资源和条件的约束进行编码:
    [ [ S ] ] : = ( ⋁ v ∈ P ( S ) p = v ) ∧ ( ⋁ v ∈ A ( S ) a = v ) ∧ ( ⋁ v ∈ R ( S ) r = v ) ∧ ( ⋀ O ∈ C ( S ) [ [ O ] ] ) [[S]] := (\bigvee_{v \in P(S)} p = v) \land (\bigvee_{v \in A(S)} a = v) \land (\bigvee_{v \in R(S)} r = v) \land (\bigwedge_{O \in C(S)} [[O]]) [[S]]:=(vP(S)p=v)(vA(S)a=v)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值