searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何使用STS临时授权访问对象存储服务

2023-05-29 05:47:59
147
0

一、场景:

       App开发时,欲使用对象存储服务保存APP的终端用户数据,并希望通过直连的方式直接访问对象存储服务;并且希望给某些用户授予特定的访问权限,以限制对资源的访问能力。在此场景下,您可以使用对象存储AssumeRole接口,基于返回的临时证书,在您设置的有效期内即可访问对象存储服务。

二、优点:

       1.便利性。不需要App端服务器来进行数据中转,而是通过直连的方式直连对象存储服务;

       2.安全性。此临时证书是基于限制策略的访问,具有良好的安全性;

       3.易控性。设置特定到期时间,便于风险控制。

三、流程

 

 

 

 

 

1.App用户登录。App用户和云账号无关,它是App的终端用户,App服务器支持App用户登录。对于每个有效的App用户来说,需要App服务器能定义出每个App用户的最小访问权限。

2.App服务器请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,App服务器需要确定App用户的最小访问权限(自定义授权策略)以及凭证的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌(Token)。

3.STS返回给App服务器一个临时访问凭证,包括一个安全令牌(Token)、临时访问密钥(AccessKeyId和AccessKeySecret)以及过期时间。

4.App服务器将临时访问凭证返回给App客户端,App客户端可以缓存这个凭证,便于后续的资源访问。

5.App客户端使用本地缓存的临时访问凭证去请求对象存储 API。对象存储服务端收到访问请求后,会通过STS服务来验证访问凭证,正确响应用户请求。

 

四、使用临时授权信息访问对象存储服务

此文仅提供python访问方式:

import boto3
import datetime
from botocore.client import Config
s3_sign_vers = "s3"
s3 = boto3.client(
    service_name='s3',
    aws_access_key_id="xxx",
    aws_secret_access_key="yyy",
    aws_session_token="zzz",
    endpoint_url='<zos_endpoint>', config=Config(signature_version=s3_sign_vers),
    verify=False,
    use_ssl=False
)

with open('tmp.txt', 'rb') as test_file:
    content = test_file.read()
    response = s3.put_object(ACL='private', Bucket='bucket1', Body=content, Key='key1')

response1 = s3.head_object(Bucket="bucket1", Key="key1")
response2 = s3.put_object(ACL='private', Bucket='bucket2', Body='', Key='key2')

print(response1)
print(response2)

 

0条评论
0 / 1000
张****俊
2文章数
0粉丝数
张****俊
2 文章 | 0 粉丝
张****俊
2文章数
0粉丝数
张****俊
2 文章 | 0 粉丝
原创

如何使用STS临时授权访问对象存储服务

2023-05-29 05:47:59
147
0

一、场景:

       App开发时,欲使用对象存储服务保存APP的终端用户数据,并希望通过直连的方式直接访问对象存储服务;并且希望给某些用户授予特定的访问权限,以限制对资源的访问能力。在此场景下,您可以使用对象存储AssumeRole接口,基于返回的临时证书,在您设置的有效期内即可访问对象存储服务。

二、优点:

       1.便利性。不需要App端服务器来进行数据中转,而是通过直连的方式直连对象存储服务;

       2.安全性。此临时证书是基于限制策略的访问,具有良好的安全性;

       3.易控性。设置特定到期时间,便于风险控制。

三、流程

 

 

 

 

 

1.App用户登录。App用户和云账号无关,它是App的终端用户,App服务器支持App用户登录。对于每个有效的App用户来说,需要App服务器能定义出每个App用户的最小访问权限。

2.App服务器请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,App服务器需要确定App用户的最小访问权限(自定义授权策略)以及凭证的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌(Token)。

3.STS返回给App服务器一个临时访问凭证,包括一个安全令牌(Token)、临时访问密钥(AccessKeyId和AccessKeySecret)以及过期时间。

4.App服务器将临时访问凭证返回给App客户端,App客户端可以缓存这个凭证,便于后续的资源访问。

5.App客户端使用本地缓存的临时访问凭证去请求对象存储 API。对象存储服务端收到访问请求后,会通过STS服务来验证访问凭证,正确响应用户请求。

 

四、使用临时授权信息访问对象存储服务

此文仅提供python访问方式:

import boto3
import datetime
from botocore.client import Config
s3_sign_vers = "s3"
s3 = boto3.client(
    service_name='s3',
    aws_access_key_id="xxx",
    aws_secret_access_key="yyy",
    aws_session_token="zzz",
    endpoint_url='<zos_endpoint>', config=Config(signature_version=s3_sign_vers),
    verify=False,
    use_ssl=False
)

with open('tmp.txt', 'rb') as test_file:
    content = test_file.read()
    response = s3.put_object(ACL='private', Bucket='bucket1', Body=content, Key='key1')

response1 = s3.head_object(Bucket="bucket1", Key="key1")
response2 = s3.put_object(ACL='private', Bucket='bucket2', Body='', Key='key2')

print(response1)
print(response2)

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0