STS临时授权示例 本节主要介绍了STS临时授权功能的典型场景和具体使用方法。 应用场景 某企业X开发了一款移动应用(App),并使用OOS服务。App需要直连OOS上传或下载数据,但是App运行在用户自己的移动设备上,这些设备不受企业X的控制。企业X有如下要求: 直传数据:企业X不希望所有App都通过企业的服务端应用服务器(Application Server)来进行数据中转,而希望能够直连OOS上传或下载数据。 安全管控:企业X不希望将访问密钥(AccessKey)保存到移动设备中,因为移动设备是归属于用户控制,属于不可信的运行环境。 风险控制:企业X希望将风险控制到最小,每个App直连OOS时都必须拥有最小的访问权限且访问时效需要很短。 前提条件 已开通对象存储(经典版)Ⅰ型服务。 具体操作 应用服务器在OOS上为每个APP创建一个IAM用户,并为每个IAM用户附加最小的访问权限(如调用STS接口、仅对自己目录下的资源有所有权,对于其他用户的目录无权限)。当移动应用(App)直连OOS上传或下载数据时,App需要向应用服务器申请访问凭证。应用服务器以该APP的IAM用户身份,调用STS API接口获取临时安全访问凭证,并将临时安全访问凭证传递给App,App使用临时安全访问凭证访问OOS。 具体步骤如下所示: 1. OOS为应用服务器创建IAM用户并附加权限策略。具体策略可参考下列示例: { "Version": "20121017", "Statement": [ { "Sid": "AllowListAllBuckets", "Effect": "Allow", "Action": [ "oos:ListAllMyBucket" ], "Resource": "" }, { "Sid": "AllowListYourselfFolder", "Effect": "Allow", "Action": [ "oos:ListBucket" ], "Resource": [ "arn:ctyun:oos::2hlo7dkswa22t:bucketname" ], "Condition": { "StringLike": { "oos:prefix": [ "${ctyun:username}/" ] } } }, { "Sid": "AllowControleYourselfFolder", "Effect": "Allow", "Action": [ "oos:GetObject", "oos:ListMultipartUploadParts", "oos:DeleteObject", "oos:PutObject", "oos:DeleteMultipleObjects", "oos:AbortMultipartUpload" ], "Resource": [ "arn:ctyun:oos::2hlo7dkswa22t:bucketname/${ctyun:username}/" ] }, { "Sid": "AllowCallSTS", "Effect": "Allow", "Action": [ "iam:GetSessionToken" ], "Resource": "" } ] } 2. APP向应用服务器申请临时访问凭证。 3. 应用服务器调用STS接口获取临时安全访问凭证。 请求示例 POST / HTTP/1.1 Host: ooscniam.ctyunapi.cn xamzdate: Tue, 21 Aug 2012 17:54:50 GMT ContentMD5: 8dYiLewFWZyGgV2Q5FNI4W Authorization:AWS fad0e782cd5132563e38:xQE0diMbLRepdf3YB+FIEXAMPLE ContentLength: 445 ActionGetSessionToken&DurationSeconds129600 响应示例 HTTP/1.1 200 OK xamzrequestid: 996c76696e6727732072657175657374 Date: Mon, 1 Nov 2010 20:34:56 GMT ContentType:text/xml;charsetUTF8 ContentLength: 533 Server: CTYUN 8b2b75f5a04e458b0da3a01602e78b089528b915c2 sts.6b7fd 17b69c15f 20230427T13:52:08.282Z 62c80e3868a14804 4. 应用服务器将获取的临时安全访问凭证传递给APP。 5. APP使用临时安全访问凭证访问OOS资源,进行数据直传。 调用时输入步骤3返回的信息: AccessKeyId:sts.6b7fd SecretAccessKey:17b69c15f SessionToken:8b2b75f5a04e458b0da3a01602e78b089528b915c2 注意 由于生成的临时安全访问凭证是默认继承IAM用户的权限,所以我们在为IAM用户创建策略的时候,仅分配STS接口权限和所需操作的最小权限,不推荐分配CreateUser、CreateAccessKey、UpdateLoginProfile等权限,以防止临时安全访问凭证权限过大。