目前,阿里云提供了多种系统授权策略可供用户选择使用。这些授权策略仅仅提供了粗粒度的访问控制能力,比如某个云产品级别的只读权限或所有权限。
如果您有更细粒度的授权需求,比如授权用户 bob 只能对 oss://sample_bucket/bob/ 下的所有对象执行只读操作,而且限制 IP 来源必须为您的公司网络(可以通过搜索引擎查询“我的 IP”来获知您的公司网络 IP 地址),那么您可以通过创建自定义授权策略来进行访问控制。
本文以上述用户 bob 为例,介绍了创建自定义授权策略的方法,帮助您更好地理解和使用 RAM 进行精细粒度的访问控制。
前提条件
在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法,请参考
授权策略语言描述。
RAM 最细可以支持各产品 API 粒度的授权,即 Policy 中的 Action 可以精细到每个 API 操作。在创建自定义授权策略前,您需要了解有关产品所支持的授权粒度和授权方法,具体请参考
RAM 支持的云服务。
操作步骤
- 登录到 阿里云 RAM 控制台。
- 点击左侧导航栏中的 [backcolor=transparent]策略管理。在 [backcolor=transparent]策略管理 页面,可通过 [backcolor=transparent]系统授权策略 和 [backcolor=transparent]自定义授权策略 子页,分别查看已有的系统和自定义策略。
- 点击 [backcolor=transparent]新建授权策略,进入 [backcolor=transparent]创建授权策略 页面。
- 选择权限策略模板。
[backcolor=transparent]注意:可以选择空白模板,但推荐使用类似的已有系统策略作为模板进行编辑。如本文我们以 具体 OSS 桶下资源的只读权限为例,这里选择 AliyunOSSReadOnlyAccess (账号下所有 OSS 资源的只读权限)作为模板。
- 基于选择的模板,编辑 Policy。
这里修改了授权策略名称,备注和策略内容。上图策略内容中的选中部分是新增的细粒度授权限制内容。其代码样例为:[backcolor=transparent] [backcolor=transparent]{ - [backcolor=transparent] [backcolor=transparent]"Version"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"1"[backcolor=transparent],
- [backcolor=transparent] [backcolor=transparent]"Statement"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent][
- [backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]"Effect"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"Allow"[backcolor=transparent],
- [backcolor=transparent] [backcolor=transparent]"Action"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent][
- [backcolor=transparent] [backcolor=transparent]"oss:Get*"[backcolor=transparent],
- [backcolor=transparent] [backcolor=transparent]"oss:List*"
- [backcolor=transparent] [backcolor=transparent]],
- [backcolor=transparent] [backcolor=transparent]"Resource"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent][
- [backcolor=transparent] [backcolor=transparent]"acs:oss:*:*:samplebucket/bob/*"
- [backcolor=transparent] [backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent]"Condition"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]"IpAddress"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]"acs:SourceIp"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"127.0.27.1"
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]]
- [backcolor=transparent] [backcolor=transparent]}
策略内容编辑完成后,点击 [backcolor=transparent]新建授权策略 完成创建。
至此,您已完成自定义授权策略的创建。
后续操作
接下来只需将本文创建的策略授权给用户 bob,则 bob 会拥有对 oss://samplebucket/bob/ 下的对象的只读操作权限,且限制条件是必须从您的公司网络(假设为121.0.27.1)进行访问。