更新时间:2024-02-29 GMT+08:00

通过临时访问密钥访问OBS

临时访问密钥

OBS可以通过IAM获取临时访问密钥(临时AK,SK和securitytoken)进行临时授权访问。通过使用临时AK,SK和securitytoken,您可以为第三方应用或IAM用户颁发一个自定义时效和权限的访问凭证。

您可以通过调用IAM的获取临时AK/SK和securitytoken接口获取临时AK/SK和securitytoken。

临时AK/SK和securitytoken遵循权限最小化原则,可应用于临时访问OBS等。使用临时AK/SK调用API鉴权时,临时AK/SK和securitytoken必须同时使用,请求头中需要添加“x-obs-security-token”字段。

临时访问密钥相比IAM用户的永久访问密钥的优势主要有两点:

  • 临时访问密钥的有效时间为15min至24h,不必暴露出IAM用户的永久密钥,降低了账号泄露带来的安全风险。
  • 在获取临时访问密钥时,通过传入policy参数设置临时权限来进一步约束使用者的权限范围,方便IAM用户对使用者的权限进一步管理。

具体使用方法,参考用户签名验证

临时访问密钥的权限

IAM用户在调用IAM的获取临时AK/SK和securitytoken接口时,可通过设置policy参数,为临时访问密钥增加临时策略来约束使用者的权限。临时策略的格式与内容与IAM权限保持一致。

  • 如果不设置policy参数,即不使用临时策略,则获取的临时访问密钥具有与IAM用户相同的权限。
  • 如果设置了policy参数,即使用了临时策略,则获取的临时访问密钥的权限在IAM用户原有权限的基础上,进一步约束在设置的临时策略以内。

如下图,“1”代表了IAM用户的原有权限,“2”为设置的临时策略所对应的临时权限,两个权限的交集“3”即为使用者最终的有效权限。

图1 IAM用户权限和临时权限交集

临时访问密钥遵循权限最小化原则,建议在IAM用户原有权限范围内配置临时策略,以免在使用时产生配置了临时策略却没有对应权限的疑惑。如下图所示,使用者最终的有效权限即为设置的临时权限。

图2 临时权限设置在IAM用户权限范围内

临时策略的权限判断同样遵循Deny优先的原则,对于未设置的权限则默认拒绝。

设置临时策略时,因不设置的权限将默认拒绝,所以建议只设置显式的Allow权限即可。

应用场景

临时访问密钥主要用于授权第三方临时访问OBS服务。例如,部分企业拥有自己的用户管理系统,用户管理系统中的用户包括终端APP用户、企业本地用户等,这部分用户并不具有IAM用户的权限,通过授予其临时访问密钥来访问OBS。

典型场景如下:

某企业拥有大量的终端APP,终端APP都需要拥有访问OBS服务的能力,不同的终端APP可能代表着不同的终端用户,不同的终端用户需要拥有不同的访问权限。该场景便可使用临时访问密钥访问OBS服务。

图3 临时访问密钥使用场景
  1. 用户服务器可配置IAM用户的永久访问密钥,由该用户服务器向IAM请求,为不同的终端APP生成不同的临时访问密钥。

    IAM用户调用IAM的获取临时AK/SK和securitytoken接口获取临时AK/SK和securitytoken。在调用该接口时,传入policy参数来设置临时策略,例如:

    {
        "auth": {
            "identity": {
                "methods": [
                    ... ...
                ],
                "policy": {
                    ... ...
                }
            }
        }
    }

    其中policy的语义与格式和IAM权限相同,相关授权项参考权限及授权项说明

  2. IAM根据传入的policy内容以及有效时间来生成拥有不同权限和不同有效期的临时访问密钥并返回给用户服务器。
  3. 用户服务器将临时访问密钥分发给对应权限的终端APP。
  4. 终端APP可通过临时访问密钥使用OBS SDK或API访问OBS服务,因临时凭据的有效时间较短,终端APP需及时向用户服务器请求更新临时访问密钥。

配置示例

请参见临时授权访问OBS