如何给oss设置子账号控制指定的oss资源文件

OSS默认的AccessKey是您访问阿里云API的密钥,具有该账户完全的权限。如果通过其他方式(eg, Github)将AccessKey公开到外部渠道,那么将会对OSS上的资源文件产生威胁。可能会造成无法估计的损失。今天为大家带来如何给OSS分配一个子accesskey(以下简称AK)来控制指定的文件资源。不多逼逼,先看其中的一种错误的授权方式:
以下的这种授权方式应该是让授权的AK使用OSS工具登录时只会显示所指定的文件资源,具体的我没去试,因为这么设置没有达到我要的效果不必浪费时间,主要是让大家看下:
在这里插入图片描述
注意:以上的”授权“ 方式是不行的。不能达到授权账号通过API 调到指定的文件目录资源。

正确的方式这样:

**1.**到阿里云控制台的RAM访问控制台里找到”用户“,新添加一个用,给这个用户勾选”编程访问“ 这一项。这个”用户“就先设置到这里,不需要做其他的操作。待会回来设置权限。

选择了编程访问会生成一个AK跟密钥,注意 这个只会在创建的时候展示一次!以后不会再显示了,注意做好备份。
在这里插入图片描述

2.继续在RAM控制访问里选择”权限控制策略”, 选择新建策略

在这里插入图片描述
下一步填写好基本信息后,选择脚本配置。
在这里插入图片描述
脚本配置输入一下脚本代码:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "oss:ListBuckets",
                "oss:GetBucketAcl"
            ],
            "Resource": [
                "acs:oss:*:*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:putObject",
                "oss:putObjectAcl"
            ],
            "Resource": [
                "acs:oss:*:*:bucket名称/目录/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:ListObjects",
                "oss:GetObject",
                "oss:putObject",
                "oss:putObjectAcl",
                "oss:GetObjectAcl"
            ],
            "Resource": [
                "acs:oss:*:*:bucket名称"
            ],
            "Condition": {
                "StringLike": {
                    "oss:Delimiter": "/",
                    "oss:Prefix": [
                        "",
                        "目录/",
                        "目录/*"
                    ]
                }
            }
        }
    ]
}  

按照上面的提示填写自己的参数
这个时候保存,我们就设置好了权限策略。接下来进行第三步

3.接着在RAM控制访问页面,我们来创建一个RAM角色

在这里插入图片描述
点击创建好的RAM角色进去设置刚刚配置的权限策略。
在这里插入图片描述

在这里插入图片描述

接着 按照步骤 1添加策略 2选择自定义策略,就会看到3 我们刚刚自定义的策略。选择就行。

到这里权限已经设置完了接下来我们用main方法掉一个API来进行测试:

          // Endpoint以杭州为例,其它Region请按实际情况填写。
        String endpoint = "这里是你的OSS访问地址,直接去OSS点击基本信息就能看到";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "你的AK";
        String accessKeySecret = "你的密钥";
        String bucketName = "你的bucketName ";
        String KeyPrefix = "";

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 判断文件是否存在。doesObjectExist还有一个参数isOnlyInOSS,如果为true则忽略302重定向或镜像;如果为false,则考虑302重定向或镜像。
        boolean found = ossClient.doesObjectExist("你的bucketName ", "需要测试的文件或者文件夹");
        System.out.println(found);

// 关闭OSSClient。
        ossClient.shutdown();

我设置的可访问的资源是 num1 这个文件夹
查看结果:
在这里插入图片描述
嗷吼~ 显示true 说明 这个文件夹是存在的,并且能访问。

接下来 访问同一级目录下的 num2文件夹:
查看结果
这个时候就是提示无权限哦。
在这里插入图片描述
以上就是给OSS分配一个子账户去完全控制某一个资源。
总结一下:
1.创建”用户“
2.创建”策略“ 写脚本代码
3.创建RAM用户 并分配上面的自定义策略

今天不学习,明天变垃圾。

给大家推荐一个公众号,资料超多,相信我全是你们想要的
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章