云oss获取临时访问凭证-方法TST

阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件。

在先前的一片推文里我有写到阿里的oss云上传技术,但是,如果是外部项目,则会设计到云库的安全密钥问题,所以在这里做一下云库密钥的补充

1.后端数据代码:

主要设置介入地址,生成访问密钥,辨识访问角色,给角色自定义名称,用来区分不同的令牌,数据安全和防止一些无用信息的存储,占用存储资源,需要对角色和密钥严格把控

以Java SDK为例:

package com.aliyun.sts.sample;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse; public **class** StsServiceSample {
    **public** static **void** main(String[] args) { 
        // STS接入地址,例如sts.cn-hangzhou.aliyuncs.com。 
        String endpoint = "<sts-endpoint>";
        // 填写步骤1生成的访问密钥AccessKey ID和AccessKey Secret。
        String AccessKeyId = "<yourAccessKeyId>"";
        String accessKeySecret = "<yourAccessKeySecret>";
        // 填写步骤3获取的角色ARN。
        String roleArn = "<yourRoleArn>";
        // 自定义角色会话名称,用来区分不同的令牌,例如可填写为SessionTest。 
        String roleSessionName = "<yourRoleSessionName>";
        // 以下Policy用于限制仅允许使用临时访问凭证向目标存储空间examplebucket上传文件。
        // 临时访问凭证最后获得的权限是步骤4设置的角色权限和该Policy设置权限的交集,即仅允许将文件上传至目标存储空间examplebucket下的exampledir目录。
        String policy = "{\n" +
                "    \"Version\": \"1\", \n" +
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Action\": [\n" +
                "                \"oss:PutObject\"\n" +
                "            ], \n" +
                "            \"Resource\": [\n" +
                "                \"acs:oss:*:*:examplebucket/*\" \n" +
                "            ], \n" +
                "            \"Effect\": \"Allow\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        try {
            // 添加endpoint。
            DefaultProfile.addEndpoint("", "", "Sts", endpoint);
            // 构造default profile。
            IClientProfile profile = DefaultProfile.getProfile("", AccessKeyId, accessKeySecret);
            // 构造client。
            DefaultAcsClient client = new DefaultAcsClient(profile);
            final AssumeRoleRequest request = new AssumeRoleRequest();
            request.setMethod(MethodType.POST);
            request.setRoleArn(roleArn);
            request.setRoleSessionName(roleSessionName);
            request.setPolicy(policy); // 如果policy为空,则用户将获得该角色下所有权限。
            request.setDurationSeconds(3600L); // 设置临时访问凭证的有效时间为3600秒。
            final AssumeRoleResponse response = client.getAcsResponse(request);
            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());
            System.out.println("RequestId: " + response.getRequestId());
        } catch (ClientException e) {
            System.out.println("Failed:");
            System.out.println("Error code: " + e.getErrCode());
            System.out.println("Error message: " + e.getErrMsg());
            System.out.println("RequestId: " + e.getRequestId());
        }
    }
} 

2.前端密钥数据交互

前端主要是通过数据接口承接临时密钥,用来上传信息的通道,临时密钥,一般都具有实效性,需要和后端商量好实效控制以及前端的接口数据请求方式,是采用固定请求方式还是全局请求方式,这个看公司项目需求,不过我自己用的还是比较原始的笨办法,每次上传都请求,这样就不用考虑密钥的实效性,任何时候都可以请求到最新密钥。

//先引入oss基础库
import OSS from 'ali-oss'; //创建oss类方法,并设置其请求信息(类似于请求头)
 new OSS({ //yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为。 region: 'oss-cn-hangzhou', //从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)/。 accessKeyId: '', accessKeySecret: '', //从STS服务获取的安全令牌,有实效性,后端设置。 stsToken: '', //填写Bucket名称,一般是自己公司的上传地址接口名。 bucket: ''
 }); 

接口数据请求axios,或者fetch都可以,看自己项目技术架构设计,获取到信息分别设置oss的accessKeyId,accessKeySecret,stsToken,

3.设置完oss后的oss对象长下面这个样子

4.oss上传完成之后

将会返回阿里云库指定文件夹文件地址,阿里云的域名加上上传时自定义命名的文案名以及文件类型,改地址既可以在代码内部引用,也可直接在浏览器url当中查看地址是否正确

5.公司选择阿里云存储的优势

OSS的存储空间内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。如果您想要像使用本地文件夹和磁盘那样来使用OSS存储服务,可以通过配置云存储网关来实现。通过云存储网关提供的NFS、SMB(CIFS)、iSCSI协议,OSS的存储资源会以Bucket为基础映射成本地文件夹或者磁盘。您可以通过文件读写操作访问OSS资源,无缝衔接基于POSIX和块访问协议的应用,降低应用改造和学习成本。

网络安全成长路线图

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:

# 网络安全学习方法

​ 上面介绍了技术分类和学习路线,这里来谈一下学习方法:
​ ## 视频学习

​ 无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值