详情页标题前

阿里云对象存储OSSRAM Policy常见示例-云淘科技

详情页1

通过RAM Policy,您可以集中管理您的用户(例如员工、系统或应用程序)以及控制用户可以访问您名下哪些资源的权限,例如授权RAM用户列举并读取某个存储空间(Bucket)的资源。

为RAM用户授权自定义的权限策略

  1. 创建自定义权限策略。

    您可以结合实际使用场景,选用下文列举的常见授权示例,然后通过脚本配置方式创建自定义权限策略。具体操作,请参见创建自定义权限策略。

    关于权限策略中包含版本号(Version)和授权语句(Statement),以及授权语句中包含的授权效力(Effect)、操作(Action)、资源(Resource)以及限制条件(Condition,可选项)等更多信息,请参见RAM Policy概述。

    重要

    OSS中,Resource支持使用通配符星号(*)来表示某类具体的资源。Resource的格式为acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}。例如当Resource为acs:oss:*:*:mybucket/*,表示mybucket下的所有资源。当Resource为acs:oss:*:*:mybucket/abc*.txt,表示mybucket下前缀为abc且格式为.txt的所有文件。

  2. 为RAM用户授权自定义权限策略。

    为RAM用户授权步骤1中创建好的RAM Policy。具体操作,请参见为RAM用户授权。

示例一:授予RAM用户对某个Bucket的完全控制权限

以下示例为授权RAM用户对名为mybucket的Bucket拥有完全控制的权限。

警告

对于移动应用来说,授予用户对Bucket的完全控制权限有极高风险,应尽量避免。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "oss:*",
            "Resource": [
                "acs:oss:*:*:mybucket",
                "acs:oss:*:*:mybucket/*"
            ]
        }
    ]
}

示例二:拒绝RAM用户删除某个bucket下指定的多个文件的权限

以下示例为拒绝RAM用户删除名为mybucket的Bucket下前缀为abc且格式为.txt的所有文件。

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Deny",
         "Action": [
           "oss:DeleteObject"
         ],
         "Resource": [
           "acs:oss:*:*:mybucket/abc*.txt"
         ]
     }
   ]
}

示例三:授予RAM用户列举并读取某个Bucket下所有资源的权限

  • 授予RAM用户通过OSS SDK或OSS命令行工具列举并读取某个Bucket资源的权限

    以下示例为授予RAM用户通过OSS SDK或OSS命令行工具列举并读取名为mybucket的Bucket下所有资源的权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:ListObjects",
                "Resource": "acs:oss:*:*:mybucket"
            },
            {
                "Effect": "Allow",
                "Action": "oss:GetObject",
                "Resource": "acs:oss:*:*:mybucket/*"
            }
        ]
    }
  • 授予RAM用户通过OSS控制台列举并读取某个Bucket的资源

    以下示例为授予RAM用户通过OSS控制台列举并读取名为mybucket的Bucket下所有资源的权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketLifecycle",
                          "oss:GetBucketWorm",                      
                          "oss:GetBucketVersioning", 
                          "oss:GetBucketAcl" 
                          ],    
                "Resource": "acs:oss:*:*:*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetBucketAcl"
                ],
                "Resource": "acs:oss:*:*:mybucket"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject",
                    "oss:GetObjectAcl"
                ],
                "Resource": "acs:oss:*:*:mybucket/*"
            }
        ]
    }

示例四:拒绝RAM用户删除某个Bucket的权限

以下示例用于拒绝RAM用户删除名为mybucket的Bucket的权限。

{
  "Version": "1",
  "Statement": [
      {
          "Effect": "Allow",
          "Action": "oss:*",
          "Resource": [
              "acs:oss:*:*:mybucket",
              "acs:oss:*:*:mybucket/*"
          ]
      },
        {
         "Effect": "Deny",
         "Action": [
           "oss:DeleteBucket"
         ],
         "Resource": [
           "acs:oss:*:*:mybucket"
         ]
     }
   ]
}

示例五:授予RAM用户访问某个Bucket下多个目录的权限

假设用于存放照片的Bucket为mybucket,该Bucket下有一些目录,代表照片的拍摄地,每个拍摄地目录下还包含了年份子目录。

mybucket[Bucket]
  ├── beijing
  │   ├── 2014
  │   └── 2015
  ├── hangzhou
  │   ├── 2013
  │   ├── 2014
  │   └── 2015 
  └── qingdao
      ├── 2014
      └── 2015

您希望授予RAM用户访问mybucket/hangzhou/2014/mybucket/hangzhou/2015/目录的只读权限。目录级别的授权属于授权的高级功能,根据使用场景不同,授权策略的复杂程度也不同,以下几种场景可供参考。

  • 授予RAM用户仅拥有读取目录mybucket/hangzhou/2014/mybucket/hangzhou/2015/中文件内容的权限

    由于RAM用户知道文件的完整路径,建议直接使用完整的文件路径来读取目录下的文件内容。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket/hangzhou/2014/*",
                    "acs:oss:*:*:mybucket/hangzhou/2015/*"
                ]
            }
        ]
    }
  • 授予RAM用户使用OSS命令行工具访问目录mybucket/hangzhou/2014/mybucket/hangzhou/2015/并列举目录中文件的权限

    RAM用户不清楚目录中有哪些文件,可以使用OSS命令行工具或API直接获取目录信息,此场景下需要添加ListObjects权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket/hangzhou/2014/*",
                    "acs:oss:*:*:mybucket/hangzhou/2015/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket"
                ],
                "Condition":{
                    "StringLike":{
                        "oss:Prefix": [
                            "hangzhou/2014/*",
                        "hangzhou/2015/*"
                         ]
                    }
                }
            }
        ]
    }
  • 授予RAM用户使用OSS控制台访问目录的权限

    使用OSS控制台访问目录mybucket/hangzhou/2014/mybucket/hangzhou/2015/时,RAM用户可以从根目录开始,逐层进入要访问的目录。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketLifecycle",
                          "oss:GetBucketWorm",                      
                          "oss:GetBucketVersioning", 
                          "oss:GetBucketAcl" 
                          ], 
                "Resource": [
                    "acs:oss:*:*:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject",
                    "oss:GetObjectAcl"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket/hangzhou/2014/*",
                    "acs:oss:*:*:mybucket/hangzhou/2015/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket"
                ],
                "Condition": {
                    "StringLike": {
                        "oss:Delimiter": "/",
                        "oss:Prefix": [
                            "",
                            "hangzhou/",
                            "hangzhou/2014/*",
                            "hangzhou/2015/*"
                        ]
                    }
                }
            }
        ]
    }

示例六:拒绝RAM用户删除某个Bucket下任意文件的权限

以下示例用于拒绝RAM用户删除名为mybucket的存储空间下任意文件的权限。

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Deny",
         "Action": [
           "oss:DeleteObject"
         ],
         "Resource": [
           "acs:oss:*:*:mybucket/*"
         ]
     }
   ]
}

示例七:拒绝RAM用户访问指定标签Object的权限

以下为添加Deny策略,用于拒绝RAM用户访问存储空间examplebucket下对象标签为status:ok以及key1:value1的Object的权限。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "oss:GetObject"
            ],
            "Resource": [
                "acs:oss:*:1746495857602745:examplebucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "oss:ExistingObjectTag/status":"ok",
                    "oss:ExistingObjectTag/key1":"value1"
                }
            }
        }
    ]
}

示例八:授予RAM用户通过特定的IP地址访问OSS的权限

  • Allow授权中增加IP地址限制

    以下示例为在Allow授权中增加IP地址限制,授予RAM用户仅允许通过192.168.0.0/16198.51.100.0/24两个IP地址段读取名为mybucketBucket下所有资源的权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketAcl" 
                          ], 
                "Resource": [
                    "acs:oss:*:*:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket",
                    "acs:oss:*:*:mybucket/*"
                ],
                "Condition":{
                    "IpAddress": {
                        "acs:SourceIp": ["192.168.0.0/16", "198.51.100.0/24"]
                    }
                }
            }
        ]
    }
  • Deny授权中增加IP地址限制

    以下示例为在Deny授权中增加IP地址限制,拒绝源IP地址不在192.168.0.0/16范围内的RAM用户对OSS执行任何操作。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketAcl" 
                          ], 
                "Resource": [
                    "acs:oss:*:*:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket",
                    "acs:oss:*:*:mybucket/*"
                ]
            },
            {
                "Effect": "Deny",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:*"
                ],
                "Condition":{
                    "NotIpAddress": {
                        "acs:SourceIp": ["192.168.0.0/16"]
                    }
                }
            }
        ]
    }

    说明

    由于权限策略的鉴权规则是Deny优先,所以访问者从192.168.0.0/16以外的IP地址访问mybucket中的内容时,OSS会提示没有权限。

示例九:通过RAM或STS服务向其他用户授权

通过RAM或STS服务向其他用户授权的场景说明如下:

  • 将阿里云账号名下的mybucketmybucket/file*资源授权给相应的用户。

  • 允许其他用户执行GetBucketAcl、GetBucket、PutObject、GetObject和DeleteObject操作。

  • Condition中的条件表示UserAgent为java-sdk,源IP地址为192.168.0.1的鉴权被允许,此时被授权的用户拥有相关资源的访问权限。

  • 仅列举Prefix为foo的Object。

符合上述场景的RAM Policy配置示例如下:

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetBucketAcl",
                "oss:ListObjects"
            ],
            "Resource": [
                "acs:oss:*:177530505652XXXX:mybucket"
            ],
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "acs:UserAgent": "java-sdk",
                    "oss:Prefix": "foo"
                },
                "IpAddress": {
                    "acs:SourceIp": "192.168.0.1"
                }
            }
        },
        {
            "Action": [
                "oss:PutObject",
                "oss:GetObject",
                "oss:DeleteObject"
            ],
            "Resource": [
                "acs:oss:*:177530505652XXXX:mybucket/file*"
            ],
            "Effect": "Allow",
            "Condition": {
               "StringEquals": {
                    "acs:UserAgent": "java-sdk"
                },
                "IpAddress": {
                    "acs:SourceIp": "192.168.0.1"
                }
            }
        }
    ]
}

示例十:限制上传文件的ACL不能为公共读或者公共读写

以下RAM Policy用于限制上传至examplebucket的文件ACL不能为公共读或者公共读写。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
       "oss:PutObject",
       "oss:PutObjectAcl"
       ],
      "Resource": [
        "acs:oss:*:*:examplebucket",
        "acs:oss:*:*:examplebucket/*"
      ],
      "Condition": {
        "StringEquals": {
          "oss:x-oss-object-acl": [
            "public-read",
            "public-read-write"
          ]
        }
      }
    }
  ]
}

示例十一:授予RAM用户使用IMM相关功能的权限

以下RAM Policy用于授予RAM用户使用IMM相关功能的权限。

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Allow",
         "Action": [
           "oss:ProcessImm",
           "oss:ram:GetRole"
         ],
         "Resource": "*"
     }
   ]
}

示例十二:授予RAM用户转换存储冗余类型的权限

  • 授予RAM用户转换某个Bucket存储冗余类型的权限。

    以下示例为RAM用户授予转换mybucket的存储冗余类型的权限。

    {
      "Version": "1",
      "Statement": [
            {
             "Effect": "Allow",
             "Action": [
               "oss:CreateBucketDataRedundancyTransition",
               "oss:GetBucketDataRedundancyTransition",
               "oss:ListBucketDataRedundancyTransition",
               "oss:DeleteBucketDataRedundancyTransition"
             ],
             "Resource": "acs:oss:*:*:mybucket"
         }
       ]
    }
  • 授予RAM用户转换所有Bucket存储冗余类型的权限。

    重要

    以下示例会授予RAM用户转换您的阿里云账号下所有Bucket的存储冗余类型的权限,请谨慎操作。

    {
      "Version": "1",
      "Statement": [
            {
             "Effect": "Allow",
             "Action": [
               "oss:CreateBucketDataRedundancyTransition",
               "oss:GetBucketDataRedundancyTransition",
               "oss:ListBucketDataRedundancyTransition",
               "oss:DeleteBucketDataRedundancyTransition"
             ],
             "Resource": "acs:oss:*:*:*"
         }
       ]
    }

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/159424.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSSAndroid上传文件概述-云淘科技

    本文档介绍 OSS Android SDK 上传文件的方式。 在OSS中,操作的基本数据单元是文件(Object)。OSS Android SDK提供了以下三种文件上传方式: 简单上传:包括上传本地文件和二进制byte[]数组。最大不能超过5GB。 追加上传:最大不能超过5GB。 断点续传上传:支持并发、断点续传、自定义分片大小。大文件上传推荐使用断点续传。…

    阿里云对象存储 2023年12月10日
  • 阿里云日志服务SLS授予RAM用户操作CloudLens for SLS的权限-云淘科技

    本文介绍如何授予RAM用户操作CloudLens for SLS的权限。 前提条件 已创建RAM用户。具体操作,请参见创建RAM用户。 背景信息 您可以通过如下两种方式授予RAM用户操作CloudLens for SLS的权限。 极简授权:权限较大,操作简单。 自定义权限策略:权限精细,配置复杂。 极简授权 使用阿里云账号登录RAM控制台,为RAM用户授予全…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库ModifyCollationTimeZone – 修改系统库字符集排序规则和时区-云淘科技

    修改系统库的字符集排序规则和时区,已下线。 接口说明 说明 该API已下线。调试您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予…

    阿里云数据库 2023年12月9日
  • 阿里云对象存储OSS访问控制概述-云淘科技

    默认情况下,为保证存储在OSS中数据的安全性,OSS资源(包括Bucket和Object)默认为私有权限,只有资源拥有者或者被授权的用户允许访问。如果要授权第三方用户访问或使用自己的OSS资源,可以通过多种权限控制策略向他人授予资源的特定权限。 针对存放在Bucket的Object的访问,OSS提供了以下权限控制策略: 类型 说明 适用场景 RAM Poli…

    阿里云对象存储 2023年12月10日
  • 阿里云日志服务SLS从OSS获取CSV文件进行数据富化-云淘科技

    本文档介绍如何通过资源函数和映射富化函数从OSS中获取数据对日志数据进行富化。 前提条件 已创建访问密钥(AccessKey),用于访问OSS Bucket,详情请参见为RAM用户创建访问密钥。 推荐创建一个只读权限的AccessKey,用于从OSS获取文件;一个只写权限的AccessKey,用于上传文件到OSS。授权策略详情请参见基于RAM Policy的…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。