您可以为RAM用户授予特定的权限,通过RAM用户访问密钥长期访问您的OSS资源。相较于阿里云账号访问密钥,使用RAM用户访问密钥访问OSS资源更加安全。
步骤一:创建RAM用户
-
使用阿里云账号登录RAM控制台。
-
在左侧导航栏,选择身份管理 > 用户。
-
在用户页面,单击创建用户。
-
在创建用户页面的用户账号信息区域,设置用户基本信息。
-
登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。
-
显示名称:最多包含128个字符。
-
可选:标签:您可以单击
,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。
说明
单击添加用户,可以批量创建多个RAM用户。
-
-
在访问方式区域,选择OpenAPI调用访问,然后单击确定。
-
单击复制,保存访问密钥(AccessKey ID 和 AccessKey Secret)。
步骤二:为RAM用户授予上传文件的权限
-
创建上传文件的自定义权限策略。
-
在左侧导航栏,选择权限管理 > 权限策略。
-
单击创建权限策略。
-
在创建权限策略页面,单击脚本编辑,然后在策略文档输入框中赋予角色向目标存储空间examplebucket下的目录exampledir上传文件的权限。具体配置示例如下。
警告
以下示例仅供参考。您需要根据实际需求配置更细粒度的授权策略,防止出现权限过大的风险。关于更细粒度的授权策略配置详情,请参见通过RAM或STS服务向其他用户授权。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:PutObject", "Resource": "acs:oss:*:*:examplebucket/exampledir/*" } ] }
-
策略配置完成后,单击继续编辑基本信息。
-
在基本信息区域,填写策略名称为RamTestPolicy,然后单击确定。
-
-
为RAM用户授予自定义权限策略。
-
在左侧导航栏,选择身份管理 > 用户。
-
在用户页面,找到目标RAM用户。
-
单击RAM用户右侧的添加权限。
-
在添加权限页面下的自定义策略页签,选择已创建的自定义权限策略RamTestPolicy。
-
单击确定。
-
步骤三:使用RAM用户访问密钥上传文件至OSS
将本地D:\localpath
路径下的exampletest.txt文件上传至存储空间examplebucket下的exampledir目录的Java示例代码如下:
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import java.io.File;
public class RAMAccessKeySample {
public static void main(String[] args) {
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 强烈建议不要把访问凭证保存到工程代码里,否则可能导致访问凭证泄露,威胁您账号下所有资源的安全。本代码示例以从环境变量中获取访问凭证为例。运行本代码示例之前,请先配置环境变量。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
// 创建PutObjectRequest对象。
// 依次填写Bucket名称(例如examplebucket)、Object完整路径(例如exampledir/exampleobject.txt)和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
PutObjectRequest putObjectRequest = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", new File("D:\localpath\examplefile.txt"));
// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// 上传文件。
ossClient.putObject(putObjectRequest);
// 关闭OSSClient。
ossClient.shutdown();
}
}
更多语言的SDK示例请参见:
-
Java SDK
-
PHP SDK
-
Node.js SDK
-
Python SDK
-
Browser.js SDK
-
.NET SDK
-
Android SDK
-
Go SDK
-
iOS SDK
-
C++ SDK
-
C SDK
-
Ruby SDK
Object上传成功后,关于如何获取访问URL的具体操作,请参见获取单个或多个文件的URL。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/158788.html