当前位置:首页 > 综合资讯 > 正文
黑狐家游戏

对象存储 sts,对象存储oss教程详解过程

对象存储 sts,对象存储oss教程详解过程

***:本教程详细讲解对象存储sts与oss相关内容。首先可能介绍对象存储oss的概念、功能、优势等基础信息,如海量存储、安全可靠等特性。对于sts,会阐述其在对象存储...

***:本教程详细阐述对象存储sts与oss相关内容。对象存储oss是一种海量、安全、低成本、高可靠的云存储服务。而sts(Security Token Service)为oss提供临时安全凭证。教程可能会涵盖oss的基本概念,如存储桶、对象等。对于sts,会讲解其工作原理,如何生成临时安全凭证,包括相关的权限策略设置等内容,还可能涉及到在不同应用场景下,sts与oss结合使用的操作步骤等。

本文目录导读:

  1. STS概述
  2. STS的应用场景
  3. 使用STS访问OSS的步骤
  4. STS的安全注意事项

《对象存储OSS之STS教程详解》

对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高可靠的云存储服务,在实际应用场景中,有时我们需要临时授予其他实体(如用户、应用程序等)有限的访问权限来操作OSS资源,这时候就会用到安全令牌服务(STS,Security Token Service),STS为用户提供了一种短期的、有限权限的访问凭证获取方式,大大增强了OSS资源访问的安全性和灵活性,本教程将详细介绍OSS中STS的相关知识,包括其概念、工作原理、应用场景、使用步骤等内容。

对象存储 sts,对象存储oss教程详解过程

STS概述

(一)什么是STS

STS是一种云安全服务,它允许云服务的使用者(被称为“联邦用户”)在获得临时安全凭证(包括访问密钥ID、访问密钥Secret和安全令牌)后,以自定义的权限访问云资源,在OSS的场景下,这意味着可以通过STS为外部用户或应用创建临时的OSS访问权限,这些权限可以精确控制对特定的OSS bucket(存储空间)、对象(文件)以及操作(如上传、下载、删除等)的访问。

(二)STS的工作原理

1、身份提供者(IdP)与阿里云的交互

- 需要有一个身份提供者,它可以是企业内部的身份认证系统,如LDAP(轻量级目录访问协议)服务器,或者是其他的第三方身份认证服务,当一个联邦用户(例如企业内部员工使用企业认证系统登录)请求访问OSS资源时,身份提供者会对用户进行身份验证。

- 如果验证通过,身份提供者会向阿里云STS服务发送一个请求,请求中包含了关于用户身份以及所需权限的信息。

2、阿里云STS服务的响应

- STS服务接收到请求后,会根据预先配置的权限策略(由OSS资源所有者在阿里云控制台或通过API定义)来生成临时安全凭证,这个权限策略精确地定义了联邦用户可以访问的OSS资源和操作。

- STS服务将包含访问密钥ID、访问密钥Secret和安全令牌的临时安全凭证返回给身份提供者。

3、联邦用户使用临时安全凭证访问OSS

- 身份提供者将临时安全凭证转发给联邦用户(如企业内部应用程序)。

- 联邦用户使用这些临时安全凭证,通过OSS的SDK(软件开发工具包)或者API来访问OSS资源,OSS服务在接收到访问请求时,会验证临时安全凭证中的签名(使用访问密钥Secret和安全令牌按照特定算法生成),并且检查权限是否匹配权限策略,只有当一切都合法时,才允许操作。

STS的应用场景

(一)企业内部应用集成

1、多部门协作

- 在大型企业中,不同部门可能需要共享OSS资源,市场部门需要上传宣传资料到OSS,研发部门可能需要从OSS下载一些数据进行分析,企业可以利用STS,基于部门角色定义不同的权限策略,市场部门员工可能被授予对特定“宣传资料”bucket的上传权限,而研发部门员工则被授予对相关数据bucket的下载权限,这样既保证了资源的共享,又确保了各部门只能在自己的权限范围内操作。

2、与企业内部身份认证系统集成

- 企业通常已经有自己的身份认证系统,如基于AD(活动目录)的认证系统,通过将企业身份认证系统与阿里云STS集成,员工可以使用企业内部账号登录,然后通过STS获取临时OSS访问凭证,这简化了员工的操作流程,同时也使得企业能够在自己的身份管理体系下对OSS资源的访问进行控制。

(二)移动应用开发

1、用户数据存储

- 在移动应用中,用户可能需要将照片、文档等数据存储到OSS,为了安全和隐私保护,应用开发者不能将自己的OSS长期访问密钥嵌入到移动应用中(因为一旦应用被破解,密钥泄露将导致OSS资源的安全风险),利用STS,移动应用可以向应用服务器请求临时访问凭证,应用服务器再向STS服务获取凭证并转发给移动应用,这样,每个用户的OSS访问权限是临时的且与用户身份相关,提高了用户数据存储的安全性。

2、第三方服务集成

- 有些移动应用可能会集成第三方服务,例如图像识别服务,这些第三方服务可能需要访问移动应用存储在OSS中的图像数据,通过STS,移动应用可以为第三方服务生成具有特定权限(如仅对特定图像对象的读取权限)的临时访问凭证,确保第三方服务只能在授权范围内访问OSS资源。

(三)临时数据共享与协作

1、跨企业项目合作

- 当两个或多个企业进行项目合作时,可能需要共享OSS资源,A企业和B企业合作开发一个新产品,需要共享一些设计文档、测试数据等,A企业可以通过STS为B企业的相关人员或应用创建临时访问凭证,这些凭证具有对共享OSS资源的特定权限,如对共享项目bucket的读写权限,当项目结束后,可以及时撤销这些临时凭证,从而终止B企业的访问权限。

2、临时数据访问需求

- 在一些场景下,可能会有临时的用户数据访问需求,某个在线教育平台需要为一位外部讲师提供临时访问权限,以便讲师能够上传课程资料到OSS,通过STS,可以快速为讲师创建具有上传权限的临时凭证,在课程结束后,凭证过期,讲师就无法再进行访问。

使用STS访问OSS的步骤

(一)创建角色

1、登录阿里云控制台

- 使用具有管理员权限的账号登录阿里云控制台。

2、进入RAM(Resource Access Management)服务

- 在控制台中找到RAM服务入口,RAM是阿里云提供的资源访问管理服务,它与STS密切相关,用于管理用户、角色、权限等。

3、创建角色

- 在RAM服务中,点击“角色管理”,然后选择“创建角色”。

- 角色类型可以选择“阿里云服务角色”或者“自定义角色”,如果是为了特定的阿里云服务之间的交互(如与函数计算结合使用),可以选择“阿里云服务角色”;如果是为了自定义的联邦用户访问,通常选择“自定义角色”。

- 为角色命名,OSS - Temporary - Access - Role”,并添加角色描述,以便于识别角色的用途。

(二)定义权限策略

1、创建自定义权限策略

- 在RAM服务中,点击“权限策略管理”,然后选择“创建权限策略”。

- 可以选择“脚本编辑”或者“可视化编辑”模式,在脚本编辑模式下,需要使用JSON格式来编写权限策略,以下是一个简单的权限策略示例,允许对特定OSS bucket(名为“my - bucket”)的读取操作:

```json

{

对象存储 sts,对象存储oss教程详解过程

"Version": "1.0",

"Statement": [

{

"Effect": "Allow",

"Action": [

"oss:GetObject"

],

"Resource": [

"acs:oss:*:*:my - bucket/*"

]

}

]

}

```

- 在可视化编辑模式下,可以通过图形界面选择要允许或禁止的OSS操作、资源等元素来生成权限策略。

2、关联权限策略到角色

- 在创建好权限策略后,回到角色管理页面,找到之前创建的角色,点击“添加权限”,然后选择刚刚创建的权限策略,将其关联到角色上。

(三)获取临时安全凭证

1、使用STS API(以Java为例)

- 需要在项目中引入阿里云STS的Java SDK,可以通过Maven或者Gradle等构建工具添加依赖。

- 以下是一个简单的Java代码示例,用于获取临时安全凭证:

```java

import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.profile.DefaultProfile;

import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;

import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;

public class STSTest {

public static void main(String[] args) {

try {

// 配置STS服务的区域ID

DefaultProfile.addEndpoint("cn - hangzhou", "Sts", "sts.cn - hangzhou.aliyuncs.com");

// 创建STS客户端

DefaultAcsClient client = new DefaultAcsClient(DefaultProfile.getProfile("your - access - key - id", "your - access - key - secret"));

// 创建请求对象

AssumeRoleRequest request = new AssumeRoleRequest();

request.setRoleArn("acs:ram::your - account - id:role/OSS - Temporary - Access - Role");

request.setRoleSessionName("test - session");

request.setDurationSeconds(3600);

// 发送请求获取临时安全凭证

AssumeRoleResponse response = client.assumeRole(request);

System.out.println("AccessKeyId: " + response.getCredentials().getAccessKeyId());

System.out.println("AccessKeySecret: " + response.getCredentials().getAccessKeySecret());

对象存储 sts,对象存储oss教程详解过程

System.out.println("SecurityToken: " + response.getCredentials().getSecurityToken());

} catch (Exception e) {

e.printStackTrace();

}

}

}

```

- 在上述代码中,需要替换“your - access - key - id”和“your - access - key - secret”为具有调用STS服务权限的账号的访问密钥ID和访问密钥Secret,“your - account - id”为阿里云账号ID,“acs:ram::your - account - id:role/OSS - Temporary - Access - Role”为之前创建的角色的ARN(Amazon Resource Name,阿里云中的资源唯一标识)。

2、使用命令行工具(aliyuncli)

- 如果安装了aliyuncli工具,可以使用命令行来获取临时安全凭证。

```bash

aliyun sts AssumeRole --RoleArn acs:ram::your - account - id:role/OSS - Temporary - Access - Role --RoleSessionName test - session --DurationSeconds 3600

```

- 同样需要替换相应的参数值。

(四)使用临时安全凭证访问OSS

1、使用OSS SDK(以Python为例)

- 在Python项目中引入阿里云OSS的Python SDK。

- 以下是一个示例代码,展示如何使用临时安全凭证上传文件到OSS:

```python

import oss2

# 使用临时安全凭证初始化OSS客户端

auth = oss2.StsAuth('AccessKeyId', 'AccessKeySecret', 'SecurityToken')

bucket = oss2.Bucket(auth, 'oss - cn - hangzhou.aliyuncs.com', 'my - bucket')

# 上传文件

with open('local - file - path', 'rb') as f:

bucket.put_object('remote - file - name', f)

```

- 在上述代码中,将从STS获取的“AccessKeyId”、“AccessKeySecret”和“SecurityToken”作为参数传递给“StsAuth”类来创建认证对象,然后使用该认证对象初始化OSS bucket对象,最后实现文件上传操作。

2、使用API直接访问(不推荐,较复杂)

- 如果直接使用OSS API进行访问,需要在每个API请求中添加临时安全凭证相关的签名信息,这涉及到复杂的签名算法计算,一般建议使用OSS SDK,因为SDK已经封装好了这些操作,使得开发更加便捷。

STS的安全注意事项

(一)权限策略的精确配置

1、最小权限原则

- 在定义权限策略时,应该遵循最小权限原则,只授予联邦用户完成任务所需的最小权限,如果用户只需要读取OSS中的某个特定文件夹下的文件,那么权限策略就应该只允许对该文件夹下文件的读取操作,而不应该授予对整个bucket的读写权限,这样可以降低安全风险,防止用户因误操作或恶意操作而影响其他资源。

2、定期审查权限策略

- 企业或应用的需求可能会随着时间的推移而发生变化,应该定期审查与STS相关的权限策略,确保其仍然符合业务需求并且没有过度授权的情况,如果某个项目结束或者用户角色发生了变化,相应的权限策略应该及时调整或撤销。

(二)临时安全凭证的管理

1、凭证有效期设置

- 在获取临时安全凭证时,可以设置凭证的有效期,应该根据实际需求合理设置有效期,如果有效期过长,可能会增加安全风险,因为一旦凭证泄露,攻击者就有更多的时间利用该凭证进行恶意操作,如果有效期过短,可能会导致用户在操作过程中凭证突然过期,影响正常业务流程,对于短期的、一次性的操作,可以设置较短的有效期(如几分钟到几小时);对于持续时间较长的任务,可以根据任务的最长预估时间适当延长有效期,但也要谨慎考虑安全因素。

2、凭证的安全传输与存储

- 临时安全凭证在传输过程中应该使用安全的协议,如HTTPS,在存储方面,如果是在服务器端存储,应该确保服务器的安全性,防止凭证被非法获取,对于移动应用等客户端场景,应该尽量减少凭证在本地的存储时间,并且对存储的凭证进行加密保护。

通过本教程的详细介绍,我们对对象存储OSS中的STS服务有了深入的了解,STS为OSS资源的安全共享和灵活访问提供了强大的解决方案,无论是企业内部应用集成、移动应用开发还是临时数据共享与协作等场景,都可以通过STS实现安全、高效的OSS资源访问,在使用STS时,我们需要注意权限策略的精确配置和临时安全凭证的安全管理等方面,以确保OSS资源的安全性和可用性,随着云计算技术的不断发展,STS在云存储安全领域的应用将越来越广泛,深入掌握STS的相关知识对于开发人员、企业管理员等相关人员具有重要的意义。

黑狐家游戏

发表评论

最新文章