临时授权访问
所有文档

          云数据库 TableStorage

          临时授权访问

          STS简介

          TableStorage可以通过STS机制实现第三方的临时授权访问。STS(Security Token Service)是百度智能云提供的临时授权服务。通过STS,您可以为第三方用户颁发一个自定义时效和权限的访问凭证。第三方用户可以使用该访问凭证直接调用百度智能云的API访问百度智能云资源。

          说明:这里的第三方用户主要是指您所开发的应用程序的终端用户,例如,您是移动App开发者,您的App终端用户我们称为第三方用户。

          STS鉴权流程

          为了让移动终端能够便捷、安全地享受到TableStorage服务,百度智能云研发了STS服务,来对移动场景下的安全需求进行支持。您无需开放自己的AK/SK,仅通过STS即可实现临时授权。以移动客户端访问TableStorage服务为例,使用STS为APP客户端临时授权的流程如下图所示:

          image.png

          1. 申请访问TableStorage权限。

            App客户端访问TableStorage资源,需向AppServer申请访问权限。已经开通TableStorage服务的AppServer可以针对不同的App终端用户进行授权及访问资源限制。

          2. 申请临时访问凭证。

            AppServer需要向STS服务申请一个临时访问凭证。AppServer通过调用STS的GetSessionToken()接口进行申请,同时需要指定资源访问权限和过期时间。GetSessionToken()的调用方法请参考STS服务接口。

          3. 返回STS凭证给AppServer。

            STS处理申请后,返回给AppServer一份临时的身份凭证(Credential),包括临时访问密钥AK/SK, SessionToken、失效时间和AppServer的用户ID等信息。AppServer可以缓存STS凭证,当多个App客户端需要的权限相同时,可以直接把缓存的凭证颁发给客户端。

          4. 返回STS凭证给App客户端。

            AppServer将收到的STS凭证下发给App客户端,App客户端可以缓存STS凭证。当凭证失效时,App客户端需要向AppServer重新申请有效访问凭证。

          5. App客户端使用STS凭证访问TableStorage资源。

            App客户端设备可以直接使用返回的STS凭证构造API请求直接访问TableStorage资源,TableStorage会感知STS访问凭证,并会依赖STS服务来验证访问凭证,正确响应用户请求。

          使用STS的优点

          使用STS访问主要有以下优点:

          • 您不需要向第三方用户透露您的管理账号或AK/SK信息,您只需要向STS申请一个临时访问凭证并颁发给第三方用户即可,且这个访问凭证拥有的权限和有效期均可由您自己去定义。
          • 您不需要关注该权限的撤销问题,临时访问凭证在过期后会自动失效。

          STS服务接口

          接口描述

          GetSessionToken接口用于临时授权访问时,请求返回一份临时的访问凭证(Credential)。

          权限说明

          请求发起人需要具有合法的AccessKeyID和SecretAccessKey才能发起请求。

          请求

          • 请求语法

            POST /v1/sessionToken HTTP/1.1
            Host: sts.bj.baidubce.com
            Date: <Date>
            Authorization: <Authorization_String>
          • 请求参数

            名称 描述 默认值 是否必选
            durationSeconds 临时访问凭证的有效时长。数据类型:int。单位为秒,最长可指定为129600秒(36小时)。 43200(12小时)
          • 请求头域

            名称 数据类型 描述 默认值 是否必选
            Authorization string 认证字符串,计算方法请参考生成认证字符串 -
          • 请求元素

            本接口的请求元素是权限控制的主要部分。请求元素由一条或多条acl配置项组成,每条acl配置项间相互独立。

            名称 是否必选 数据类型 描述 父标签
            id string acl的标识符。 -
            accessControlList list 标识acl主体的开始,由一或多组acl配置项组成。 -
            +effect string 指定与该条acl配置项匹配的Request能否执行,取值为AllowDenyAllow表示可以执行;Deny表示拒绝执行。 accessControlList
            +eid string 标识acl配置项的id 。 accessControlList
            +permission list acl配置项所影响的权限。 accessControlList
            +region string acl配置项影响的区域,"_"表示所有区域。 accessControlList
            +resource list acl配置项所影响的资源,支持通配符。TableStorage仅支持instance级别的资源,格式为:instance/或instance/xxx_ accessControlList
            +service string acl配置项影响的服务组件,"*"表示所有服务。以TableStorage为例,取值为"bce:bts" accessControlList

            其中,permission有以下几种:

            permission 实例操作权限 表操作权限 行操作权限
            FULL_CONTROL - 列举实例
            - 显示实例信息
            - 创建实例
            - 删除实例
            - 创建表
            - 删除表
            - 显示表信息
            - 列举所有表
            - 单条写入
            - 批量写入
            - 单条删除
            - 批量删除
            -随机读
            - 批量读
            - 区间读
            OPERATE - 列举实例
            - 显示实例信息
            - 创建表
            - 删除表
            - 显示表信息
            - 列举所有表
            - 单条写入
            - 批量写入
            - 单条删除
            - 批量删除
            - 随机读
            - 批量读
            - 区间读
            READ - 列举实例
            - 显示实例信息
            -显示表信息
            - 列举所有表
            - 随机读
            - 批量读
            - 区间读

          注意:

          • 由于GetSessionToken的响应结果会包含STS凭证,强烈建议通过HTTPS协议调用。
          • 如在请求元素中不指定acl,则默认返回的临时权限Credential与您当前拥有的权限相同,授权给第三方用户后,可能会给您的账户资源带来风险,建议您在临时授权时明确指定acl,规避风险。

          响应

          • 响应头域

            本接口只用到了公共响应头。

          • 响应元素

            名称 数据类型 描述
            accessKeyId string 用于STS凭证访问的AK。
            expiration date 访问失效时间。
            secretAccessKey string 用于STS凭证访问的SK。
            sessionToken string SessionToken,使用STS凭证访问时必须携带。
            userId string 您的用户ID。

          示例

          • 请求示例

            POST /v1/sessionToken HTTP/1.1
            Host: sts.bj.baidubce.com
            Date: Wed, 06 Apr 2016 06:34:40 GMT
            Authorization: AuthorizationString
            Content-type:application/json
            Content-Length:178
            
            {
              "id":"10eb6f5ff6ff4605bf044313e8f3ffa5",
              "accessControlList": [
              {  
                "eid":<eid>,
                "service":"bce:bts",
                "region":"bd",
                "effect": "Allow",
                "resource": ["instance/instance1", "instance/instance2"],
                "permission": ["READ"]
              },
              {  
                "eid":<eid>,
                "service":"bce:bts",
                "region":"bd",
                "effect": "Allow",
                "resource": ["instance/instance3", "instance/instance4"],
                "permission": ["OPERATE"]
              }
              ]
            }
          • 响应示例

            HTTP/1.1 200 OK
            Server: Apache-Coyote/1.1
            Content-Type: application/json;charset=UTF-8
            Date: Wed, 06 Apr 2016 06:34:40 GMT
            
            {
              "accessKeyId": "3bdecf4afebd41849628389a20629ecc",
              "secretAccessKey": "3f901ef12d454b9c92ba2dde7c029140",
              "sessionToken": "ZGZiM2M3MmU4Mjk4NGQ2MGEzYTNhYTAyMDE3NTZmZmV8AAAAAC8CAABf0XcbS9E/leusHxRyZ4DYNb+SH374S+mmkxaOpcwdLPC7JL/aTF5F7x83dQn354VKiTyNGuvQIsv7MidIPN7+0oOehdFlHua4RkwqIi8wOslX0qNitZa56WpxowLprrMksOHiQiEqYEzAyaVF3Oy3hBbMiX/RprtcnxERAi1/skNR1VzTZyYfS5D4p8Ul62X9Whwmj5Lkxy6yuZ1og94wytwTc8aWPFPGFIpQyCpCaxYvl/QkA1M0rxQ6SMaHbxTyEYuG2Eg8EOP0EKn2O2DMjGuLURRKuxHRCrFidRxDqOX9kM/L7gQXuaZl9DdB1DwZPrSo8xiPDRrfkpIqvkJEeB0blb8dXtMm0V0lmTznUrnPuoD4nfVyEPKCET+0JhQooxNLWDE6x4alnR8QtJkJ2yjrYaoMZdeuqKRcpgehVOIgI8ZDIumN1rdObs7a4Hw4Gmx7f0gQgLWdIF4ZOKsSpWP8aos+vzdOA+NNSHsTVg==",
              "createTime": "2015-11-18T11:48:17Z",
              "expiration": "2015-11-18T23:48:17Z",
              "userId": "2d6f4473c99e4ca7be1ca19ec18beacf"
            }

          使用STS凭证访问TableStorage服务

          与普通的API接口相比,使用STS凭证调用API时,只需要在请求头部增加x-bce-security-token: 即可,以PutRow为例:

          PUT /v{version}/instance/{instanceName}/table/{tableName}/row/{rawurlencode(rowkey)} HTTP/1.1
          Host: bts.bd.baidubce.com
          Date: Wed, 27 Mar 2019 06:34:40 GMT
          Authorization: <Authorization_String>
          x-bce-security-token: <SessionToken>
          Content-Type: text/plain
          Content-Length: 11434
          上一篇
          API调用方式
          下一篇
          实例操作接口