阿里云 RAM 策略整理

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介:

RAM授权策略语言


基本元素


RAM中使用Policy(授权策略)来描述授权的具体内容,授权内容主要包含效力(Effect)、资源(Resource)、对资源所授予的操作权限(Action)以及限制条件(Condition)这几个基本元素。


效力(Effect)


授权效力包括两种:允许(Allow)和拒绝(Deny)。


资源(Resource)


资源是指被授权的具体对象。比如,访问策略“允许张三对资源SampleBucket执行GetBucket操作”中的资源是“SampleBucket”。


操作方法(Action)


操作方法是指对具体资源的操作。比如,访问策略“允许张三对资源SampleBucket执行GetBucket操作”中的操作是“GetBucket”。


限制条件(Condition)


限制条件是指授权生效的限制条件。比如,访问策略“允许张三在2011年12月31日之前对资源SampleBucket执行GetBucket操作”中的限制条件是“在2011年12月31日之前”。

语法结构

Policy结构包括Policy版本号及授权语句列表。每个授权语句又包括Effect(授权类型)、Action(操作名称列表)、Resource(操作对象列表)以及Condition(条件限制),其中Condition是可选项。


Policy结构简述如下:


policy_struct.png

支持JSON格式描述


目前RAM仅仅支持JSON格式的描述。当创建或更新Policy时,RAM会首先检查JSON格式的正确性。关于JSON的语法标准请参考RFC 7159。用户也可以使用一些在线的JSON格式验证器和编辑器来校验JSON文本的有效性。


Policy语法

语法描述的符号使用说明:


1. Policy所包含的JSON字符有:
   { } [ ] " , :
2. 描述语法使用的特殊字符有:
   = < > ( ) |
3. 当一个元素允许多值时,这里使用逗号和省略号来表达,比如:
   [<action_string>, <action_string>, ...]
4. 在所有支持多值的语法中,使用单值也是有效的。而且这两种表达方式是等效的:
   "Action": [<action_string>] 和 "Action": <action_string>
5. 带有问号的元素表示这是一个可选元素,比如:
   <condition_block?>
6. 多值之间用竖线(|)隔开,表示取值只能选取这些值中的某一个。比如:
   ("Allow" | "Deny")
7. 使用双引号引起了的元素,表示它是文本串。比如:
   <version_block> = "Version" : ("1")


语法描述:


policy  = {
     <version_block>,
     <statement_block>
}
<version_block> = "Version" : ("1")
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = { 
    <effect_block>,
    <action_block>,
    <resource_block>,
    <condition_block?>
}
<effect_block> = "Effect" : ("Allow" | "Deny")  
<action_block> = ("Action" | "NotAction") : 
    ("*" | [<action_string>, <action_string>, ...])
<resource_block> = ("Resource" | "NotResource") : 
    ("*" | [<resource_string>, <resource_string>, ...])
<condition_block> = "Condition" : <condition_map>
<condition_map> = {
  <condition_type_string> : { 
      <condition_key_string> : <condition_value_list>,
      <condition_key_string> : <condition_value_list>,
      ...
  },
  <condition_type_string> : {
      <condition_key_string> : <condition_value_list>,
      <condition_key_string> : <condition_value_list>,
      ...
  }, ...
}  
<condition_value_list> = [<condition_value>, <condition_value>, ...]
<condition_value> = ("String" | "Number" | "Boolean")

Policy语法说明:
  • 当前支持的Policy版本为1。
  • 一个Policy可以有多条授权语句(Statement)。
  • 每条授权语句要么是Deny,要么是Allow。一条授权语句中,Action是一个支持多个操作的列表,Resource也是一个支持多个对象的列表。
  • 每条授权语句都支持独立的限制条件。一个条件块可以支持多种条件操作类型,以及对这多种条件的逻辑组合。
  • 一个用户可以被授予多个Policy,当这些Policy存在多条授权语句既包含有Allow又包含有Deny时,我们遵循Deny优先(只认Deny不认Allow)原则。
  • 当取值为数字或布尔值时,与字符串类似,需要用双引号引起。
  • 当元素取值为字符串值时,可以支持(*)和(?)模糊匹配。(*)可以代表0个或多个任意的英文字母,(?)可以代表1个任意的英文字母。比如,”ecs:Describe*” 可以表示ecs的所有以Describe开头的API操作名称。


Effect(授权类型)


Effect取值为Allow或Deny。比如,


"Effect": "Allow"


Action(操作名称列表)


Action支持多值,取值为云服务所定义的API操作名称,其格式定义如下:


<service-name>:<action-name>


格式说明:

service-name: 阿里云产品名称,如ecs, rds, slb, oss, ots等。

action-name: service相关的api操作接口名称。


描述样例:


"Action": ["oss:ListBuckets", "ecs:Describe*", "rds:Describe*"]


Resource(操作对象列表)


Resource通常指操作对象,比如ECS虚拟机实例,OSS存储对象。我们使用如下格式来命名阿里云服务的资源命名。


acs:<service-name>:<region>:<account-id>:<relative-id>

格式说明:

  • acs: Aliyun Cloud Service的首字母缩写,表示阿里云的公有云平台
  • service-name: 阿里云提供的Open Service的名字,如ecs, oss, ots等
  • region: 地区信息。如果不支持该项,可以使用通配符“*”号来代替
  • account-id: 账号ID,比如 1234567890123456,也可以用“*”代替
  • relative-id: 与service相关的资源描述部分,其语义由具体service指定。这部分的格式描述支持类似于一个文件路径的树状结构。以oss为例,relative-id = “mybucket/dir1/object1.jpg”表示一个OSS对象。

描述样例:


"Resource": ["acs:ecs:*:*:instance/inst-001", "acs:ecs:*:*:instance/inst-002", "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*"]


Condition(条件限制)


条件块(Condition Block)由一个或多个条件子句构成。一个条件子句由条件操作类型、条件关键字和条件值组成。条件操作类型和条件关键字在下文中会有详细描述。


是否满足条件的判断原则如下图所示。描述如下:(1) 一个条件关键字可以指定一个或多个值,在条件检查时,如果条件关键字的值与指定值中的某一个相等,即可判定条件满足。(2) 同一种条件操作类型的条件子句下的多个条件关键字同时满足的情况下,才能判定该条件子句满足。(3) 条件块下的所有条件子句同时满足的情况下,才能判定该条件块满足。


条件块判断逻辑:


condition_logic.png



条件操作类型

我们支持如下条件操作类型:字符串类型、数字类型、日期类型、布尔类型和IP地址类型。每种条件操作类型分别支持如下的方法:


String

  • StringEquals
  • StringNotEquals
  • StringEqualsIgnoreCase
  • StringNotEqualsIgnoreCase
  • StringLike
  • StringNotLike

Numeric

  • NumericEquals
  • NumericEquals
  • NumericLessThan
  • NumericLessThanEquals
  • NumericGreaterThan
  • NumericGreaterThanEquals

Date and time

  • DateEquals
  • DateNotEquals
  • DateLessThan
  • DateLessThanEquals
  • DateGreaterThan
  • DateGreaterThanEquals

Boolean

  • Bool

IP address

  • IpAddress
  • NotIpAddress

条件关键字

阿里云保留的条件关键字命名格式为:


acs:<condition-key>

阿里云保留了如下通用条件关键字:


ACS保留条件关键字 类型 说明
acs:CurrentTime Date and time Web Server接收到请求的时间,以ISO 8601格式表示,如2012-11-11T23:59:59Z
acs:SecureTransport Boolean 发送请求是否使用了安全信道,如HTTPS
acs:SourceIp IP address 发送请求时的客户端IP地址
acs:MFAPresent Boolean 用户登录时是否使用了多因素认证(二步认证)

部分产品定义了产品级别的条件关键字,格式如下:


<service-name>:<condition-key>

不同产品定义的条件关键字,请参见各产品的用户文档。


权限检查规则


基本模型

  • 当主账号身份访问资源时,如果主账号是资源Owner,则允许访问;否则不允许访问。该规则的例外情况说明:存在极少数云产品(如SLS)直接支持对跨云账号ACL授权,如果通过ACL授权检查,则允许访问。
  • 当RAM用户身份访问资源时,如果RAM用户所属的主账号对资源有访问权限,并且主账号对RAM用户有显式的Allow授权策略,则允许访问;否则不允许访问。
  • 当RAM角色身份访问资源时,如果RAM角色所属的主账号对资源有访问权限,并且主账号对RAM角色有显式的Allow授权策略,并且角色访问令牌(STS-Token)有显式的授权,则允许访问;否则不允许访问。

RAM用户身份的授权策略检查逻辑


RAM用户访问资源时,默认没有任何权限,除非有进行显式的授权(给RAM用户绑定授权策略)。授权策略语句支持Allow(允许)和Deny(禁止)两种授权类型,当多个授权语句对一个资源操作分别出现Allow和Deny授权时,我们使用Deny优先的原则。


授权策略检查逻辑如下图所示:


policy-evaluation-1.png


RAM用户访问资源时,权限检查逻辑如下:

  1. 按照RAM用户身份所绑定的授权策略是否有授权,如果是Deny,则拒绝访问;否则进入下一步检查。
  2. 检查RAM角色所属的主账号是否有访问权限。如果是资源Owner,则允许访问;否则查看该资源是否有支持跨账号ACL许可,有则允许访问,否则拒绝访问。

RAM角色身份的授权策略检查逻辑


RAM角色(使用角色访问令牌)访问资源时,权限检查逻辑如下:

  1. 如果当前访问令牌有指定授权策略(调用AssumeRole时所传入的授权策略参数),则按照上述授权策略检查逻辑进行判断,如果是Deny,则拒绝访问;否则进入下一步检查。 如果当前访问令牌没有指定授权策,则直接进入下一步检查。
  2. 检查RAM角色身份所绑定的授权策略是否有授权。如果是Deny,则拒绝访问;否则进入下一步检查。
  3. 检查RAM角色所属的主账号是否有访问权限。如果是资源Owner,则允许访问;否则查看该资源是否有支持跨账号ACL许可,有则允许访问,否则拒绝访问。



注:本文章摘抄于阿里云帮助文档,用来汇总起来方便自己查看。


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 弹性计算 监控
【阿里云云原生专栏】成本优化策略:在阿里云云原生平台上实现资源高效利用
【5月更文挑战第29天】本文探讨了在阿里云云原生平台上实现资源高效利用和成本优化的策略。通过资源监控与评估,利用CloudMonitor和Prometheus等工具分析CPU、内存等使用情况,识别浪费。实施弹性伸缩策略,利用自动伸缩规则根据业务负载动态调整资源。借助容器化管理和Kubernetes编排提高资源利用率,优化存储选择如OSS、NAS,以及网络配置如VPC和CDN。示例展示了如何使用Kubernetes的HorizontalPodAutoscaler进行弹性伸缩,降低成本。
196 4
|
3月前
|
存储 Kubernetes Cloud Native
【阿里云云原生专栏】云原生容器存储:阿里云CSI与EBS的高效配合策略
【5月更文挑战第29天】阿里云提供云原生容器存储接口(CSI)和弹性块存储(EBS)解决方案,以应对云原生环境中的数据存储挑战。CSI作为Kubernetes的标准接口简化存储管理,而EBS则提供高性能、高可靠性的块存储服务。二者协同实现动态供应、弹性伸缩及数据备份恢复。示例代码展示了在Kubernetes中使用CSI和EBS创建存储卷的过程。
210 3
|
3月前
|
监控 Cloud Native 数据库
【阿里云云原生专栏】性能优化之道:阿里云云原生平台上的监控与调优策略
【5月更文挑战第22天】本文介绍了阿里云云原生平台的监控与调优策略。阿里云提供如CloudMonitor、ARMS和ACK监控等工具,用于基础和应用监控,以及容器监控。调优策略包括资源、代码和架构优化,例如根据监控数据调整资源配置,优化代码性能,和利用微服务、容器化和无服务器化改进架构。示例代码展示了如何进行监控和调优操作,强调实时监控与针对性调优对提升云原生应用性能的重要性。
254 1
|
2月前
|
弹性计算 安全 Shell
阿里云ECS安全加固:从访问控制到数据保护的全方位策略
【6月更文挑战第29天】阿里云ECS安全聚焦访问控制、系统加固及数据保护。安全组限定IP和端口访问,密钥对增强SSH登录安全;定期更新补丁,使用防病毒工具;数据备份与加密确保数据安全。多维度策略保障业务安全。
79 15
|
22天前
|
分布式计算 DataWorks 关系型数据库
阿里云数加-分析型数据库AnalyticDB数据导入的多样化策略
通过合理利用这些数据导入方法,用户可以充分发挥AnalyticDB的实时计算能力和高并发查询性能,为业务分析和决策提供强有力的数据支持。
|
1月前
|
弹性计算 运维 Kubernetes
阿里云ECS与混合云策略结合,提供云上云下无缝对接,提升业务灵活性和运维效率。
【7月更文挑战第3天】阿里云ECS与混合云策略结合,提供云上云下无缝对接,提升业务灵活性和运维效率。ECS支持多种计费模式和先进架构,保证低延迟计算。混合云融合公有云灵活性与私有云安全,实现资源最优配置。通过VPC互通、应用迁移、数据同步实践,确保安全合规,助力企业数字化转型。阿里云服务展示技术实力,支持企业在混合云时代抓住机遇。
68 3
|
1月前
|
弹性计算 运维 Kubernetes
阿里云ECS与混合云策略的结合,不仅为企业搭建了一个既灵活又稳定的IT基础架构,还为业务的快速发展与创新提供了坚实的技术支撑。
【7月更文挑战第3天】阿里云ECS在混合云中扮演关键角色,提供弹性计算资源和多样计费模式,确保业务连续性与灵活性。通过VPC互通、应用迁移、数据同步服务,如VPC对等连接、DTS,实现云上云下资源的高效整合。结合安全解决方案,保证在混合环境下的合规与安全。阿里云ECS助力企业数字化转型,应对市场变化。
98 1
|
2月前
|
敏捷开发 Web App开发 测试技术
阿里云云效产品使用问题之钉钉绑定主帐号和RAM 有什么区别么
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
文字识别 API
印刷文字识别产品使用合集之如何创建RAM用户和阿里云账号的访问密钥
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
3月前
|
弹性计算 运维 监控
【阿里云弹性计算】ECS实例的生命周期管理:阿里云自动化工具与策略介绍
【5月更文挑战第29天】阿里云提供自动化工具和策略管理ECS实例生命周期,如资源编排服务(ROS)实现一键部署,通过模板定义实例配置;自动化运维服务(OOS)执行自动化运维任务;弹性伸缩策略动态调整实例数量;定时启动/停止策略节省成本;监控告警策略确保业务连续性。通过这些工具和策略,企业可实现ECS实例的高效管理。
87 2

热门文章

最新文章