访问控制RAM(Resource Access Management)是阿里云提供的一项服务,可以帮助您集中管理用户身份与资源访问权限。企业内有多名员工或应用程序需要访问对象存储(以下简称OSS)的资源时,可以使用RAM服务做统一的权限管理,按需为他们分配不同的访问权限。在使用RAM管理阿里云产品的访问权限前,您需要了解云产品能与RAM的哪些功能结合使用,从而更好地设计满足业务需要的访问控制。本文介绍OSS支持的RAM功能以及这些功能与RAM协同工作的原理。
OSS支持的RAM功能
OSS支持的RAM功能及支持程度如下表所示:
RAM功能 | OSS是否支持 |
RAM用户访问 | 支持 |
安全令牌(STS Token)访问 | 支持 |
基于身份的策略(账号级) | 支持 |
基于身份的策略(资源组级) | 部分支持 |
操作级授权 | 支持 |
资源级授权 | 支持 |
服务级条件关键字 | 支持 |
标签鉴权 | 部分支持 |
普通服务角色 | 支持 |
服务关联角色 | 不支持 |
RAM用户访问
OSS支持RAM用户访问。
RAM用户是RAM的一种实体身份类型,有唯一的身份ID。RAM用户通常与某个特定的人或应用程序一一对应。RAM用户使用其身份凭证访问OSS时,OSS会校验该用户对相关资源的访问权限。
身份凭证在创建RAM用户时设置。创建RAM用户只能由管理员账号操作。通过控制台访问云资源的RAM用户需要的身份凭证是登录名称和登录密码,通过OpenAPI调用访问云资源需要的身份凭证是访问密钥AK(AccessKey)。建议您定期更换RAM用户的密码,不要将AK信息明文写入工程代码,以提高RAM用户身份凭证的安全性。更多信息请参见身份管理。
说明管理员账号是指阿里云账号(主账号)或者拥有管理员权限的RAM用户或RAM角色。
RAM用户默认没有任何权限。创建完成后,您必须使用管理员账号为RAM用户授予权限策略才能使其拥有云资源访问或操作权限。基于身份的权限策略包括系统权限策略对象存储系统权限策略参考和自定义权限策略对象存储自定义权限策略参考。系统权限策略由阿里云创建,自定义权限策略由您自行创建。
操作文档
安全令牌(STS Token)访问
OSS支持安全令牌(STS Token)访问。
安全令牌(STS Token)是RAM角色访问云资源时使用的身份凭证,由RAM提供的STS(Security Token Service)服务为扮演RAM角色的可信实体颁发。RAM角色是RAM的一种虚拟身份类型,没有长期身份凭证,需要被一个可信实体扮演。
对比使用访问密钥AK(AccessKey)等长期凭证而言,使用STS Token这样的临时身份凭证可减少风险暴露时长,提升您云上资产的安全。您可以访问RAM角色概览了解可信实体的含义以及使用RAM角色和STS Token的典型场景。
RAM角色默认没有任何权限,您必须使用管理员账号为RAM角色授予权限策略才能使其拥有云资源访问或操作权限。基于身份的权限策略包括对象存储系统权限策略参考和对象存储自定义权限策略参考。系统权限策略由阿里云创建,自定义权限策略由您自行创建。
操作文档
基于身份的策略
OSS支持基于身份的权限策略。
基于身份的权限策略可以授予RAM身份,如RAM用户、RAM用户组或RAM角色,用于定义上述身份可以在什么条件下对哪些资源执行什么操作。
从管理的角度看,基于身份的权限策略分为系统权限策略和自定义权限策略。系统权限策略由阿里云创建和维护,您只能使用但不能修改或删除此类权限策略。自定义权限策略由您自行创建和维护。您可以通过控制台或OpenAPI创建自定义权限策略。
从授权范围看,基于身份的策略可以分为账号级和资源组级。账号级的授权范围是云账号内的所有资源。资源组级的授权范围是该资源组内的所有资源。账号级授权的优先级高于资源组级授权,关于二者的定义和范围请参见权限策略模型。您可以在为RAM身份授权时指定授权范围。
参考文档
操作级授权
OSS支持操作级的授权。
在权限策略语法中,操作(Action)元素用于描述权限允许或拒绝的特定操作,一般情况下与其关联的云产品API同名。Action元素的格式为oss:<action-name>
。
OSS支持操作级的授权粒度,意味着您可以在权限策略中,为某一具体操作设置访问权限。
操作级授权通常用于使用自定义权限策略进行访问控制。
您可以访问RAM Policy常见示例确认OSS的常用RAM代码信息,或查看支持RAM的云服务了解其他云产品的RAM代码信息。
关于OSS支持的所有操作的列表,请参见RAM Policy。
OSS权限策略中的Action元素示例
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo"
]
资源级授权
OSS支持资源级的授权。
在权限策略语法中,资源(Resource)元素用于描述权限允许或拒绝执行操作的一个或多个资源对象。资源是云服务呈现给用户与之交互的对象实体的一种抽象,例如:OSS存储空间或ECS实例等。Resource元素通过云服务定义的资源ARN(Aliyun Resource Name)来统一标识,具体格式为acs:oss:<region>:<account-id>:<relative-id>。对于不支持资源级授权的操作,使用通配符(*)描述该操作应用于所有资源。
OSS支持资源级的授权粒度,意味着您可以在权限策略中指定某一具体资源对象的访问权限。资源级授权通常用于使用自定义权限策略进行访问控制。关于OSS的所有资源列表,请参见RAM Policy。
OSS权限策略中的Resource元素示例
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]
服务级条件关键字
OSS支持服务级条件关键字。
在权限策略语法中,条件(Condition)元素用于指定授权生效的限制条件,是可选元素。Condition元素由一个或多个条件子句构成。一个条件子句由条件操作类型、条件关键字和条件值组成。条件操作类型由RAM服务定义,条件关键字包括通用条件关键字(命名格式:acs:<condition-key>
)和服务及条件关键字(命名格式:oss:<condition-key>
),条件值根据关键字的设置不同而不同。关于Condition的详细说明请参见权限策略基本元素。
支持服务级条件关键字,意味着可以在授权具体操作和资源对象时,额外指定授权生效的限制条件。服务级条件关键字通常用于使用自定义权限策略进行访问控制。关于适用于OSS的服务级条件关键字列表,请参见RAM Policy。
OSS权限策略中的服务级条件关键字示例
"Condition": {
"StringEquals": {
"vpc:TargetAccountRDId": [
"12****"
]
},
"Bool": {
"acs:SecureTransport": [
"true"
]
}
标签鉴权
OSS支持标签鉴权。
在权限策略语法中,标签是一类通用条件关键字,包含acs:ResourceTag/{tag-key}和acs:RequestTag/{tag-key}。标签可用来从不同维度对具有相同特征的云资源进行分类、搜索和聚合,让资源管理变得更加轻松。您可以访问支持标签的云服务查看支持标签的阿里云服务。
标签鉴权是指在对资源进行权限管理时,可以对添加了同类标签的云资源对象授予相同的权限,一般在自定义权限策略中使用。
普通服务角色
OSS支持普通服务角色。
普通服务角色(Service Role)是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题。使用OSS的特定功能时,会触发用户授权自动创建普通服务角色并为角色授予对应的资源访问权限。创建完成后,OSS即可扮演此服务角色,代表您访问其他云服务。
在您使用OSS服务的过程中,在进行同/跨账号同区域复制以及存储空间清单时需使用普通服务角色来控制权限策略,具体可参考同账号同区域复制和存储空间清单。
您也可以在RAM中手动创建、修改和删除普通服务角色,并修改普通服务角色的权限。但修改角色或角色权限会对OSS提供的功能造成影响,请谨慎操作。