3.3 通过临时URL访问OBS 3.4 通过IAM委托访问OBS
3.1 通过永久访问密钥访问 OBS
OBS的REST接口既支持认证请求,也支持匿名请求。匿名请求通常仅用于需要公开访 问的场景,例如静态网站托管。除此之外,绝大多数场景是需要经过认证的请求才可 以访问成功。经过认证的请求总是需要包含一个签名值,该签名值以请求者的访问密 钥(AK/SK)作为加密因子、结合请求体携带的特定信息计算而成。计算签名的过程 已经包含在SDK中,使用者只需将访问密钥在SDK初始化阶段设置好即可,无需关心签 名计算的具体实现。但是,如果客户端选择通过REST API自行开发程序对接OBS,则 需要按照OBS定义的签名算法来计算签名并添加到请求中。
用户可以在“我的凭证”页面创建永久访问密钥(AK/SK)。
● Access Key Id(AK):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密 钥ID和私有访问密钥一起使用,对请求进行加密签名。
● Secret Access Key(SK):与访问密钥ID结合使用的私有访问密钥,对请求进行 加密签名,可标识发送方,并防止请求被修改。
AK可唯一标识公有云IAM用户,OBS根据AK/SK确认请求者身份,并进行权限检查。
获取永久访问密钥的方法,请参见获取访问密钥(AK/SK)。
3.2 通过临时访问密钥访问 OBS
临时访问密钥
OBS可以通过IAM获取临时访问密钥(临时AK,SK和securitytoken)进行临时授权访 问。通过使用临时AK,SK和securitytoken,您可以为第三方应用或IAM用户颁发一个 自定义时效和权限的访问凭证。
您可以通过调用IAM的获取临时AK/SK和securitytoken接口获取临时AK/SK和 securitytoken。
临时AK/SK和securitytoken遵循权限最小化原则,可应用于临时访问OBS等。使用临时 AK/SK鉴权时,临时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”即为使用者最终的有效权限。
图3-1 IAM 用户权限和临时权限交集
临时访问密钥遵循权限最小化原则,建议在IAM用户原有权限范围内配置临时策略,
以免在使用时产生配置了临时策略却没有对应权限的疑惑。如下图所示,使用者最终 的有效权限即为设置的临时权限。
权限配置指南 3 请求方式介绍
图3-2 临时权限设置在 IAM 用户权限范围内
临时策略的权限判断同样遵循Deny优先的原则,对于未设置的权限则默认拒绝。
说明
设置临时策略时,因不设置的权限将默认拒绝,所以建议只设置显式的Allow权限即可。
应用场景
临时访问密钥主要用于授权第三方临时访问OBS服务。例如,部分企业拥有自己的用 户管理系统,用户管理系统中的用户包括终端APP用户、企业本地用户等,这部分用户 并不具有IAM用户的权限,通过授予其临时访问密钥来访问OBS。
典型场景如下:
某企业拥有大量的终端APP,终端APP都需要拥有访问OBS服务的能力,不同的终端 APP可能代表着不同的终端用户,不同的终端用户需要拥有不同的访问权限。该场景便 可使用临时访问密钥访问OBS服务。
图3-3 临时访问密钥使用场景
1. 用户服务器可配置IAM用户的永久访问密钥,由该用户服务器向IAM请求,为不同 的终端APP生成不同的临时访问密钥。
IAM用户调用IAM的获取临时AK/SK和securitytoken接口获取临时AK/SK和 securitytoken。在调用该接口时,传入policy参数来设置临时策略,例如:
{ "auth": {
"identity": {
2. IAM根据传入的policy内容以及有效时间来生成拥有不同权限和不同有效期的临时 访问密钥并返回给用户服务器。
3. 用户服务器将临时访问密钥分发给对应权限的终端APP。
4. 终端APP可通过临时访问密钥使用OBS SDK或API访问OBS服务,因临时凭据的有 效时间较短,终端APP需及时向用户服务器请求更新临时访问密钥。