精华内容
下载资源
问答
  • OSS 操作权限控制

    千次阅读 2018-03-02 11:13:39
    用户操作 OSS 时是需要根据账号的 AccessKeyId 和 AccessKeySecret (后续简称 AK 和 SK )进行权限验证的,这里的 AK 和 SK 包括有多种类型:主账号的 AK 和 SK 、子账号的 AK 和 SK 以及 STS 生成的临时 AK 、 SK ...

    用户操作 OSS 时是需要根据账号的 AccessKeyId 和 AccessKeySecret (后续简称 AK 和 SK )进行权限验证的,这里的 AK 和 SK 包括有多种类型:主账号的 AK 和 SK 、子账号的 AK 和 SK 以及 STS 生成的临时 AK 、 SK 和 Token 。那么他们之间有什么区别呢?具体应该如何配置使用呢?本文将带大家一起认识相关概念。

    1. 概念区别

    主账号的 AK 和 SK 是主账号对应的权限标识,也就是说主账号的每对 AK和 SK 是拥有账号下的所有权限的,不仅仅可以操作 OSS,还包括 ECS 、 RDS 等其他产品都是可以操作的。因此该对 AK 和 SK 是必须要安全保管的,是不能随便泄露出去的;并且主账号的 AK 和 SK 尽量避免所有账号使用者均知道,建议仅极少数的账号管理者进行控制和知晓。
    子账号的 AK 和 SK 是主账号将账号内的部分权限通过赋权的方式提供给子账号,后续子账号即可以使用自己的账号和密码或者 AK 和 SK 操作允许的操作。该子账号的 AK 和 SK 是有永久时效性的,也就是说在主账号没有取消权限之前都是有效的,因此子账号建议提供给公司内部账号的使用者或者开发人员。
    STS 生成的临时 AK 、 SK 和 Token 与子账号类似,也是需要通过赋权的方式单独赋权给该 Token 的,但是有一点和子账号的 AK 和 SK 相区别的就是该 Token 是有有效时间的。该 Token 尽可以在有效时间内操作赋予的权限,超过该时间后即需要重新获取新的 Token 才可以正常操作。

    2. 获取方法

    2.1 主账号的 AK 和 SK

    主账号的 AK 和 SK 可以主账号登陆后直接查看到,如图(主账号 AK 和 SK 示意图)。主账号可以创建五对 AK 和 SK ,每对 AK 和 SK 都是拥有账号的所有权限的,使用时可直接应用其中的一对操作即可完成。主账号的使用方法最为便捷。

    image

                                                                  图 1. 主账号 AK 和 SK 示意图

    2.2 子账号的 AK 和 SK

    子账号的 AK 和 SK 是需要通过访问控制控制台得到的。首先需要创建 RAM 子账号,创建的方法请参考:访问控制创建子账号
    注意

    1. 子账号的 AK 对应的 SK 是仅有在创建的时候可以查看到的,后续将无法再显示;因此您需要自行记录好对应的 AK 和 SK 的值。
    2. 子账号如果需要使用阿里云的控制台登陆的话是需要开启该功能的,如图 (子账号开启控制台登陆示意图)。image

                                                                  图 2. 子账号开启控制台登陆示意图

    在创建完成子账号后该用户需要操作 OSS 就需要将相关的权限赋权给该子账号。授权的方法请您参考:子账号赋权操作。配置完成后即可通过使用该对 AK 和 SK 操作 OSS 了。

    2.3 STS 的 AK 、 SK 和 Token

    STS 的 Token 相比于上面的两种方式来说更加的具有安全性但同时其获取方法和处理逻辑都会更加复杂。具体的生成步骤包括以下几步:

    1. 创建生成 Token 的子账号。因为 STS 的 Token 是需要子账号调用 assumerole 接口,因此第一步即是创建 RAM 子账号并且赋权 AliyunSTSAssumeRoleAccess 权限。该权限即是可以调用 assumerole 接口的权限。如图(子账号赋权示意图)

                                                                            图 3. 子账号赋权示意图

       2. 创建角色。角色是访问控制的一种虚拟身份,当子账号扮演 RAM 角色时即获得 RAM 角色的临时安全令牌,使用这个临时         安全令牌就能以角色身份访问被授权的资源。而创建的步骤是创建用户角色(如图4:创建用户角色示意图)->选择账号,         并填写当前 UID (如图 5 )->填写用户角色名称。
    image

                                                                 图 4. 创建用户角色示意图

    image

                                                                 图 5. 角色选择账号示意图

    3.  角色赋予 OSS 操作权限。由于子账号扮演角色操作 OSS 是需要角色有操作 OSS 的权限的,这里我们先赋予

    1. AliyunOSSFullAccess权限。配置如图6所示。                       image

                                                                 图 6. 角色赋权示意图

    4.  调用 STS 的 assumerole 接口,其中包括子账号的 AK 和 SK ,角色的 Arn 以及用户自定义 Policy 权限参数。示例代码如下所示:

    public class NewStsServiceSample {
        // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
          public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
          // 当前 STS API 版本
          public static final String STS_API_VERSION = "2015-04-01";
          static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret,
                                               String roleArn, String roleSessionName, String policy,
                                               ProtocolType protocolType) throws ClientException {
            try {
              // 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求
              IClientProfile profile = DefaultProfile.getProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
              DefaultAcsClient client = new DefaultAcsClient(profile);
              // 创建一个 AssumeRoleRequest 并设置请求参数
              final AssumeRoleRequest request = new AssumeRoleRequest();
              request.setVersion(STS_API_VERSION);
              request.setMethod(MethodType.POST);
              request.setProtocol(protocolType);
              request.setRoleArn(roleArn);
              request.setRoleSessionName(roleSessionName);
              request.setPolicy(policy);
              request.setDurationSeconds((long)900);
              // 发起请求,并得到response
              final AssumeRoleResponse response = client.getAcsResponse(request);
              return response;
            } catch (ClientException e) {
              throw e;
            }
          }
          public static void main(String[] args) throws MalformedURLException, IOException {
            // 只有 RAM用户(子账号)才能调用 AssumeRole 接口
            // 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
            // 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys
              String accessKeyId = "";
                String accessKeySecret = "";
    
                // RoleArn 需要在 RAM 控制台上获取
                String roleArn = "";
            // RoleSessionName 是临时Token的会话名称,自己指定用于标识你的用户,主要用于审计,或者用于区分Token颁发给谁
            // 但是注意RoleSessionName的长度和规则,不要有空格,只能有'-' '_' 字母和数字等字符
            // 具体规则请参考API文档中的格式要求
            String roleSessionName = "alice-001";
            // 如何定制你的policy?
            String policy = "{\n" +
                    "    \"Version\": \"1\", \n" +
                    "    \"Statement\": [\n" +
                    "        {\n" +
                    "            \"Action\": [\n" +
                    "                \"oss:*\"\n" +
                    "            ], \n" +
                    "            \"Resource\": [\n" +
                    "                \"acs:oss:*:*:*\" \n" +
                    "            ], \n" +
                    "            \"Effect\": \"Allow\"\n" +
                    "        }\n" +
                    "    ]\n" +
                    "}";
            // 此处必须为 HTTPS
            ProtocolType protocolType = ProtocolType.HTTPS;
            try {
              final AssumeRoleResponse response = assumeRole(accessKeyId, accessKeySecret,
                      roleArn, roleSessionName, policy, protocolType);
              System.out.println("Expiration: " + response.getCredentials().getExpiration());
              System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
              System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
              System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
            } catch (ClientException e) {
              System.out.println("Failed to get a token.");
              System.out.println("Error code: " + e.getErrCode());
              System.out.println("Error message: " + e.getErrMsg());
            }
          }
    }

    5.生成 STS 的 AK 、 SK 和 Token 即可以创建 OSSclient 对象,特别需要注意的是最终生成的 AK 、 SK 和 Token 的权限是角色的权限以及 assumerole 接口的 policy 参数的交集。初始化代码如下所示:

    OSSClient Server = new OSSClient(endpoint, response.getCredentials().getAccessKeyId(),response.getCredentials().getAccessKeySecret(),response.getCredentials().getSecurityToken());

    3. 权限设置

    OSS 针对于所有的 API 接口都分别提供了对应的权限,详细的 OSS 各接口权限请参考: OSS 接口权限,上面提供的示例仅仅是所有的 OSS 权限。用户可以根据具体需要的权限分别设置 Policy 的 Action 。
    注意:如果需要子账号可以通过可视化操作 OSS 的话是必须赋予 oss:ListBuckets 权限的,而该权限暂时仅支持赋权给所有的 Bucket ,因此可视化显示仅支持显示所有的 Bucket ,但是具体操作 Bucket 的权限可以根据其他的操作权限控制。
    同样 OSS 是可以限制该子账号访问的来源 IP ,在 Policy 中通过 Condition中进行限制,并且可以设置 IP 段限制。具体的示例如下:

    "Condition":{
        "IpAddress": {
            "acs:SourceIp": ["42.120.88.0/24", "42.120.66.0/24"]
        }
    }

    另外用户可以进赋权给特定的子目录设置单独的访问权限,并且根据不同的场景会有不同的设置方法,请参考: OSS 赋权目录示例,其他更多的权限设置常见问题请参考: OSS 赋权常见问题

    展开全文
  • 主要介绍了阿里云OSS访问权限配置(RAM权限控制)实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 阿里云RAM对OSS某一目录进行访问控制

    场景

    需要将阿里云oss的某个bucket的指定目录授权给测试人员使用,比如指定 myBuket 的 static/material/ 目录。
    测试人员通过ossbrowser工具来维护这个目录。

    在这里插入图片描述

    步骤

    新建用户

    在RAM访问控制中新建一个用户
    在这里插入图片描述
    为这个用户创建AccessKey
    在这里插入图片描述

    自定义权限策略

    在这里插入图片描述
    输入名称、备注、选择“脚本配置”,通过自己写脚本来配置权限
    在这里插入图片描述
    脚本内容如下:

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:ListObjects",
                "Resource": "acs:oss:*:*:myBuket",
                "Condition": {
                    "StringLike": {
                        "oss:Delimiter": "/",
                        "oss:Prefix": [
                            "",
                            "static/",
                            "static/material/*"
                        ]
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:myBuket/static/material/*"
                ]
            }
        ]
    }
    

    这个脚本指定 myBucket 下的 static/material/ 目录可以访问(任何权限)
    要访问这个目录,则这个目录的所有父目录都要有ListObjects权限,否则进不去。

    因此该脚本分为两部分,即两个Effect配置:
    第一部分是配置material/所有父目录的ListObjects权限

    {
       "Effect": "Allow",
        "Action": "oss:ListObjects",
        "Resource": "acs:oss:*:*:myBuket",
        "Condition": {
            "StringLike": {
                "oss:Delimiter": "/",
                "oss:Prefix": [
                    "",
                    "static/",
                    "static/material/*"
                ]
            }
        }
    }
    

    第二部分配置materinal的所有权限,Action为“oss:*”表示操作OSS的所有权限

    {
        "Effect": "Allow",
        "Action": "oss:*",
        "Resource": [
            "acs:oss:*:*:myBuket/static/material/*"
        ]
    }
    

    配置权限

    添加权限时从自定义策略中选择上面定义的权限即可
    在这里插入图片描述
    在这里插入图片描述

    打开ossbrowser

    用上面配置的accessKeyId和AccessKeySerect
    预设路径一定要设置刚才的 oss://myBuket/static/material
    在这里插入图片描述
    点击登入即可。

    oss的API权限也是这么控制的。


    参考

    通过OSSborrower进行OSS授权管理
    RAM子账户授权OSS单个bucket中部分文件的访问权限
    使用RAM对OSS进行权限管理












    展开全文
  • 用户操作 OSS 时是需要根据账号的 AccessKeyId 和 AccessKeySecret (后续简称 AK 和 SK )进行权限验证的,这里的 AK 和 SK 包括有多种类型:主账号的 AK 和 SK 、子账号的 AK 和 SK 以及 STS 生成的临时 AK 、 SK ...

    用户操作 OSS 时是需要根据账号的 AccessKeyId 和 AccessKeySecret (后续简称 AK 和 SK )进行权限验证的,这里的 AK 和 SK 包括有多种类型:主账号的 AK 和 SK 、子账号的 AK 和 SK 以及 STS 生成的临时 AK 、 SK 和 Token 。那么他们之间有什么区别呢?具体应该如何配置使用呢?本文将带大家一起认识相关概念。

    1. 概念区别

    主账号的 AK 和 SK 是主账号对应的权限标识,也就是说主账号的每对 AK和 SK 是拥有账号下的所有权限的,不仅仅可以操作 OSS,还包括 ECS 、 RDS 等其他产品都是可以操作的。因此该对 AK 和 SK 是必须要安全保管的,是不能随便泄露出去的;并且主账号的 AK 和 SK 尽量避免所有账号使用者均知道,建议仅极少数的账号管理者进行控制和知晓。
    子账号的 AK 和 SK 是主账号将账号内的部分权限通过赋权的方式提供给子账号,后续子账号即可以使用自己的账号和密码或者 AK 和 SK 操作允许的操作。该子账号的 AK 和 SK 是有永久时效性的,也就是说在主账号没有取消权限之前都是有效的,因此子账号建议提供给公司内部账号的使用者或者开发人员。
    STS 生成的临时 AK 、 SK 和 Token 与子账号类似,也是需要通过赋权的方式单独赋权给该 Token 的,但是有一点和子账号的 AK 和 SK 相区别的就是该 Token 是有有效时间的。该 Token 尽可以在有效时间内操作赋予的权限,超过该时间后即需要重新获取新的 Token 才可以正常操作。

    2. 获取方法

    2.1 主账号的 AK 和 SK

    主账号的 AK 和 SK 可以主账号登陆后直接查看到,如图 1 中的截图。主账号可以创建五对 AK 和 SK ,每对 AK 和 SK 都是拥有账号的所有权限的,使用时可直接应用其中的一对操作即可完成。主账号的使用方法最为便捷。
                                        image
                                                                            图 1. 主账号 AK 和 SK 示意图

    2.2 子账号的 AK 和 SK

    子账号的 AK 和 SK 是需要通过访问控制控制台得到的。首先需要创建 RAM 子账号,创建的方法请参考:访问控制创建子账号
    注意

    1. 子账号的 AK 对应的 SK 是仅有在创建的时候可以查看到的,后续将无法再显示;因此您需要自行记录好对应的 AK 和 SK 的值。
    2. 子账号如果需要使用阿里云的控制台登陆的话是需要开启该功能的,请您参考图 2 。
                                          image

                                                                            图 2. 子账号开启控制台登陆示意图


    在创建完成子账号后该用户需要操作 OSS 就需要将相关的权限赋权给该子账号。授权的方法请您参考:子账号赋权操作。配置完成后即可通过使用该对 AK 和 SK 操作 OSS 了。

    2.3 STS 的 AK 、 SK 和 Token

    STS 的 Token 相比于上面的两种方式来说更加的具有安全性但同时其获取方法和处理逻辑都会更加复杂。具体的生成步骤包括以下几步:

    1. 创建生成 Token 的子账号。因为 STS 的 Token 是需要子账号调用 assumerole 接口,因此第一步即是创建 RAM 子账号并且赋权 AliyunSTSAssumeRoleAccess 权限。该权限即是可以调用 assumerole 接口的权限。
                                          image

                                                                            图 3. 子账号赋权示意图

    1. 创建角色。角色是访问控制的一种虚拟身份,当子账号扮演 RAM 角色时即获得 RAM 角色的临时安全令牌,使用这个临时安全令牌就能以角色身份访问被授权的资源。而创建的步骤是创建用户角色(如图 4 )->选择账号,并填写当前 UID (如图 5 )->填写用户角色名称。
                                          image

                                                                            图 4. 创建用户角色示意图


                                        image
                                                                            图 5. 角色选择账号示意图

    1. 给角色赋予 OSS 操作权限。由于子账号扮演角色操作 OSS 是需要角色有操作 OSS 的权限的,这里我们先赋予 AliyunOSSFullAccess 权限。配置如图 6 所示。
                                          image

                                                                            图 6. 角色赋权示意图

    1. 调用 STS 的 assumerole 接口,其中包括子账号的 AK 和 SK ,角色的 Arn 以及用户自定义 Policy 权限参数。示例代码如下所示:
    public class NewStsServiceSample {
        // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
          public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
          // 当前 STS API 版本
          public static final String STS_API_VERSION = "2015-04-01";
          static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret,
                                               String roleArn, String roleSessionName, String policy,
                                               ProtocolType protocolType) throws ClientException {
            try {
              // 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求
              IClientProfile profile = DefaultProfile.getProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
              DefaultAcsClient client = new DefaultAcsClient(profile);
              // 创建一个 AssumeRoleRequest 并设置请求参数
              final AssumeRoleRequest request = new AssumeRoleRequest();
              request.setVersion(STS_API_VERSION);
              request.setMethod(MethodType.POST);
              request.setProtocol(protocolType);
              request.setRoleArn(roleArn);
              request.setRoleSessionName(roleSessionName);
              request.setPolicy(policy);
              request.setDurationSeconds((long)900);
              // 发起请求,并得到response
              final AssumeRoleResponse response = client.getAcsResponse(request);
              return response;
            } catch (ClientException e) {
              throw e;
            }
          }
          public static void main(String[] args) throws MalformedURLException, IOException {
            // 只有 RAM用户(子账号)才能调用 AssumeRole 接口
            // 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
            // 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys
              String accessKeyId = "";
                String accessKeySecret = "";
    
                // RoleArn 需要在 RAM 控制台上获取
                String roleArn = "";
            // RoleSessionName 是临时Token的会话名称,自己指定用于标识你的用户,主要用于审计,或者用于区分Token颁发给谁
            // 但是注意RoleSessionName的长度和规则,不要有空格,只能有'-' '_' 字母和数字等字符
            // 具体规则请参考API文档中的格式要求
            String roleSessionName = "alice-001";
            // 如何定制你的policy?
            String policy = "{\n" +
                    "    \"Version\": \"1\", \n" +
                    "    \"Statement\": [\n" +
                    "        {\n" +
                    "            \"Action\": [\n" +
                    "                \"oss:*\"\n" +
                    "            ], \n" +
                    "            \"Resource\": [\n" +
                    "                \"acs:oss:*:*:*\" \n" +
                    "            ], \n" +
                    "            \"Effect\": \"Allow\"\n" +
                    "        }\n" +
                    "    ]\n" +
                    "}";
            // 此处必须为 HTTPS
            ProtocolType protocolType = ProtocolType.HTTPS;
            try {
              final AssumeRoleResponse response = assumeRole(accessKeyId, accessKeySecret,
                      roleArn, roleSessionName, policy, protocolType);
              System.out.println("Expiration: " + response.getCredentials().getExpiration());
              System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
              System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
              System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
            } catch (ClientException e) {
              System.out.println("Failed to get a token.");
              System.out.println("Error code: " + e.getErrCode());
              System.out.println("Error message: " + e.getErrMsg());
            }
          }
    }

    5.生成 STS 的 AK 、 SK 和 Token 即可以创建 OSSclient 对象,特别需要注意的是最终生成的 AK 、 SK 和 Token 的权限是角色的权限以及 assumerole 接口的 policy 参数的交集。初始化代码如下所示:

    OSSClient Server = new OSSClient(endpoint, response.getCredentials().getAccessKeyId(), response.getCredentials().getAccessKeySecret(),response.getCredentials().getSecurityToken());

    3. 权限设置

    OSS 针对于所有的 API 接口都分别提供了对应的权限,详细的 OSS 各接口权限请参考: OSS 接口权限,上面提供的示例仅仅是所有的 OSS 权限。用户可以根据具体需要的权限分别设置 Policy 的 Action 。
    注意:如果需要子账号可以通过可视化操作 OSS 的话是必须赋予 oss:ListBuckets 权限的,而该权限暂时仅支持赋权给所有的 Bucket ,因此可视化显示仅支持显示所有的 Bucket ,但是具体操作 Bucket 的权限可以根据其他的操作权限控制。
    同样 OSS 是可以限制该子账号访问的来源 IP ,在 Policy 中通过 Condition中进行限制,并且可以设置 IP 段限制。具体的示例如下:

    "Condition":{
        "IpAddress": {
            "acs:SourceIp": ["42.120.88.0/24", "42.120.66.0/24"]
        }
    }

    另外用户可以进赋权给特定的子目录设置单独的访问权限,并且根据不同的场景会有不同的设置方法,请参考: OSS 赋权目录示例,其他更多的权限设置常见问题请参考: OSS 赋权常见问题

    展开全文
  • OSS最佳实践】浅谈OSS权限控制

    千次阅读 2018-02-01 08:48:22
    一、OSS本身的权限控制 1.权限类型 Bucket目前有三种访问权限:public-read-write,public-read和private;Object目前有四种访问权限:default,public-read-write,public-read和private;对于权限的详细介绍看访问...

    一、OSS本身的权限控制

    1.权限类型

    Bucket目前有三种访问权限:public-read-write,public-read和private;Object目前有四种访问权限:default,public-read-write,public-read和private;对于权限的详细介绍看访问控制中的bucket级别权限及object级别权限的内容介绍;

    2.权限设定与获取

    Bucket级别及object级别的权限设置及获取均可以通过API/SDK/控制台等进行操作;

    API:

    Put Bucket ACL
    PutBucket
    GetBucketACL
    PutObject
    PutObjectACL
    GetObjectACL

    SDK:

    Java SDK--Bucket
    JavaSDK--Object

    控制台:

    Bucket:控制台—>OSS-->选择具体的bucket—>基础设置
    1

    Object:控制台—>OSS-->选择具体的bucket-->文件管理—>点击具体文件
    2

    3.常见问题

    1)如何批量设置objectacl

    调用listobject接口遍历需要设置的object,结合putobjectacl接口进行设置即可,参考Java—管理文件 ;

    2)上传object过程中如何设置object acl

    Java:

    ObjectMetadata meta = new ObjectMetadata();
    meta.setObjectAcl(CannedAccessControlList.PublicReadWrite);
    

    Python:

    bucket.put_object('remote.txt', 'content of object', headers={'x-oss-object-acl': permission})

    str permission: 可以是oss2.OBJECT_ACL_DEFAULT、oss2.OBJECT_ACL_PRIVATE、oss2.OBJECT_ACL_PUBLIC_READ或oss2.OBJECT_ACL_PUBLIC_READ_WRITE。
    参考:python Git源码
    PHP:

    $options = array(
            OssClient::OSS_HEADERS => array(
                'Expires' => '2012-10-01 08:00:00',
                'Content-Disposition' => 'attachment; filename="xxxxxx"',
                ‘OSS_OBJECT_ACL’=>’ public-read’
        ));
        try{
            $ossClient->putObject($bucket, $object, $content, $options);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
    }
    

    读写权限,可选值 ['default', 'private', 'public-read', 'public-read-write']
    参考:PHP Git源码

    3)bucket设置为私有,能否防止恶意下载

    不能防止,一但对应资源的签名url对外暴露,在签名url有效期内就可以通过签名url下载对应的资源;

    4)bucket私有,如何获取资源的链接

    参考:https://help.aliyun.com/knowledge_detail/65898.html

    5)bucket私有,获取到的资源链接是否具有时效性

    有时效性,一但过期就不可被访问

    6)获取到的资源链接是否可以永久有效

    将bucket改为公共读/公共读写,获取到的object链接一般都是永久有效的,但是如果bucket私有要获取永久有效的链接,不支持也没意义(私有本身就是为了保证数据安全性,一定期限内可访问,一定程度上防止恶意下载,链接有效时间过长也就失去了对应的意义)。

    二、账户级别权限控制

    账户分为主账户、子账户及STS临时账户,其中主账户有OSS的全部权限,子账户及STS临时账户可以进行细粒度的权限划分控制,授权OSS的部分权限;
    子账户创建参考:OSS细粒度权限控制—子账户创建部分的内容
    STS临时账户创建:STS临时授权访问
    OSS支持的权限:访问控制

    1.子账户及STS临时账户的业务场景

    1)子账户业务场景

    子账户可以用于企业内部细粒度的OSS权限划分,如:管理员拥有OSS的全部权限;部分业务人员只拥有其业务应用的bucket的权限,其他bucket无权限;部分业务人员只有bucket的只读权限;部分业务人员只有bucket下某个目录的操作权限等;
    子账户的创建便于企业内部的权限划分及回收,不建议将子账户应用于实际的业务服务端,控制客户的权限,服务端的权限控制建议自建数据库表进行权限控制;

    2)临时账户业务场景

    STS临时账户的定义为子账户扮演了某个角色而获取到了临时的权限,这样的账户叫做临时账户,故对应的子账户得拥有扮演对应角色的权限,而角色得拥有OSS的权限;临时账户拥有的权限是角色权限及创建临时账户policy权限的交集;
    STS临时账户一般应用于移动端sdk或者web 端 ,OSS IOS/Android SDK初始化client就通过STS临时账户进行,JS web sdk可以通过STS临时账户操作OSS资源;或者如果企业客户要临时授权给第三方用户操作bucket的权限,也可以生成临时账户供其使用;临时账户具有时效性,最长3600秒过期,过期时间可控且权限粒度可控,具有较高的安全性;

    2.子账户及STS临时账户调用OSS的常见问题

    参考:子账户及STS临时账户调用常见问题

    展开全文
  • 做下工作记录: 自定义安全策略,然后授权即可 { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:...
  • OSS细粒度的权限控制

    2017-06-23 19:33:46
    目前子账户控制台登录权限控制,对于bucket级别的权限控制,目前仅能实现:控制台登录能看到所有的bucket,但只对部分bucket有操作权限,其他bucket操作报错;不能实现控制台登录只能看到有权限的bucket;对于目录...
  • 阿里云oss权限控制,上传下载测试

    千次阅读 2019-01-25 10:50:00
    访问控制RAM -> 权限 -> 权限策略管理 # 只读方式 { "Statement": [ { "Action": [ "oss:Get*", "oss:List*" ], "Effect": "Allow", "Resource": [ "acs:oss:*:*:data", "acs:oss:*:*:data/*" ...
  • 阿里OSS权限问题

    2019-11-07 08:39:17
    刚刚接触阿里OSS,使用vue插件获取签名直传的方式上传图片到阿里OSS,记录一下出现的一个请求错误问题 问题描述:请求报了403...解决方案:进入阿里云RAM访问控制,发现自己的权限选错了,选了OOS,修改为OSS就可以了 ...
  • 今天使用OSS的STS来权限控制某个目录,中途遇到了很多坑,这里就不细说,网上有很多相关的文章,但是完整的流程我没有找到,这里根据自己的踩坑之路,进行完整的总结,详细描述整个流程。 1、首先需要登录阿里云...
  • 阿里云权限控制&&oss共享方案

    千次阅读 2016-12-15 10:48:11
    oss权限限制 1.策略编辑: 访问控制RAM---->策略管理---->自定义授权策略---->新建授权策略 {  "Statement": [  {  "Action": "oss:*",  "Effect": "Allow",  "Resource": "*"  },  {  "Action": "oss:
  • 本文介绍怎样利用阿里云资源编排服务(ROS),一步创建阿里云资源(以OSS为例)、创建多个子帐号,并付给子帐号不同的资源访问权限。 先试为快,一步创建 >> 资源编排的RAM功能介绍 阿里云资源访问控制服务(RAM...
  • 访问控制AssumeRole API STSJava示例 API RAM配置 配置RAM账号 创建ram账号,类型选错后面会报错,一定选阿里云账号,这样的RAM账号为用户角色 找到自己添加的RAM账号后授权(前两个为系统策略,第三个账号为...
  • OSS之访问控制

    千次阅读 2017-08-20 18:02:55
    OSS
  • OSS访问控制介绍

    2018-09-06 11:18:36
    摘要本文主要介绍 OSS 安全管理中访问控制相关的基本概念、机制和使用方法。 背景 OSS作为阿里云的对象存储产品具有快速数据存取无限水平扩展数据容灾等优点可满足海量数据存储需求已服务大量的用户。和任何数据...
  • 当用户需要使用自定义 OSS bucket 时,需要为账号添加 RAM 角色,并为该 RAM 角色授予对 OSS bucket 操作的权限,然后容器镜像服务才能正常访问该 OSS bucket。 步骤一:创建 RAM 角色 容器镜像服务访问自定义 OSS...
  • 本文介绍阿里云OSS五种访问控制方法及其使用场景,您可根据需求灵活组合,快速搭建企业级共享网盘。不久前阿里云网盘Aliyundrive宣布公测,在个人网盘市场重掀热潮,“不限速&2T大容量”的特性让众多网友直呼...
  • 教你控制阿里云OSS下载速度

    千次阅读 2019-10-20 09:59:51
    不仅可以控制下载速度,也因...调用oss_down方法,仅需配置oss权限,文件配置,速度配置即可。当然前提需要引入OSS的PHP SDK。 /** * OSS下载速度控制 * */ public function oss_down() { // oss权限配置 $...
  • OSS默认的AccessKey是您访问阿里云API的...今天为大家带来如何给OSS分配一个子accesskey(以下简称AK)来控制指定的文件资源。不多逼逼,先看其中的一种错误的授权方式: 以下的这种授权方式应该是让授权的AK使用OSS...
  • oss

    2019-09-21 13:43:43
    目录 前 言 1.     阿里云存储服务简介 2.     基本概念 2.1         Object 2.2         Bucket ...3.1         OSS基本功能 3.2        ...
  • 阿里云自定义RAM策略之【对象存储服务(OSS)的权限】 如果系统策略无法满足您的需求,您可以通过创建自定义策略实现精细化权限管理。 在网上查阅资料很少有针对OSS的自定义策略说法 场景:给运营人员使用,为了...
  • 读写权限 Bucket ACL 设定为“公共读”权限 (不然每次查看文件都要验证) 防盗链 防止其他域名访问你的文件 Referer 本地调试 http://192.168.1.100:* 你的域名 http://*baidu.com 空 Referer 不允许 跨域设置 ...
  • 使用RAM用户权限策略 设置 OSSBrowser 访问指定文件夹 policyDocument 策略允许访问 alive-test (bucketName) 下 alive 文件夹下所有 { "Version": "1", "Statement": [{ "Effect": "Allow", "Action": ["oss:...
  • OSS(一):OSS工具类

    万次阅读 多人点赞 2018-01-13 21:29:03
    【前言】 我们上家公司的存储系统用的是FastDFS(智能一代云平台(二十八...现在在职的公司用的是阿里云的OSSOSS的官方文档),在工作的时候整理一个上传OSS文件的工具类,现在与大家分享一下。 【工具类】 ...
  • 阿里云oss——STS阿里官方防盗链找到防盗链设置可以访问的域名引入SDK依赖加签名的URL --待定阿里STS临时授权原理RAM控制台新增用户配置用户权限创建权限策略创建角色并记录角色ARN。获取STS临时授权接口代码源码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,732
精华内容 3,492
关键字:

oss控制权限