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用户 并分配上面的自定义策略
今天不学习,明天变垃圾。
给大家推荐一个公众号,资料超多,相信我全是你们想要的