更新时间:2024-08-15 GMT+08:00

临时授权访问OBS

场景介绍

本案例介绍如何使用临时访问密钥(临时AK/SK和securitytoken),通过临时授权的方式访问OBS。

假设您希望IAM用户(用户名:APPServer)可以访问桶hi-company的APPClient文件夹,并希望申请到两个不同的临时访问密钥分发给终端APP:APP-1和APP-2,其中APP-1仅能访问APPClient/APP-1下的文件,APP-2仅能访问APPClient/APP-2下的文件。

配置步骤

  1. 使用账号登录华为云,在右上角单击“控制台”。
  2. 在控制台页面,鼠标移动至右上方的用户名,在下拉列表中选择“统一身份认证”。
  3. 创建一个IAM用户:APPServer。创建步骤请参见创建IAM用户
  4. 创建允许访问桶hi-company中APPClient文件夹的自定义策略。

    1. 在左侧导航窗格中,单击“权限管理”>“权限”>“创建自定义策略”。
    2. 配置自定义策略参数。

      在使用IAM权限之前需明确用户所需要的权限集合,IAM用户只拥有配置的策略所对应的权限。在本案例中APPServer只拥有APPClient文件夹下对象的所有操作权限。

      图1 配置自定义策略
      表1 自定义策略参数配置说明

      参数

      说明

      策略名称

      输入自定义策略的名称

      策略配置方式

      根据使用习惯进行选择,此处以“JSON视图”为例

      策略内容

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Action": [
                      "obs:object:*"
                  ],
                  "Resource": [
                      "obs:*:*:object:hi-company/APPClient/*"
                  ],
                  "Effect": "Allow"
              }
          ]
      }

      作用范围

      默认为“全局级服务”

    3. 单击“确定”,完成自定义策略创建。

  5. 创建用户组并授权

    按照IAM文档指导,将前面步骤创建的自定义策略添加到用户组中。

  6. 将需要授权的IAM用户(APPServer)加入到创建的用户组中,授权完成。

    由于缓存的存在,授予OBS相关的策略后,大概需要等待10~15分钟策略才能生效。

  7. IAM用户(APPServer)为终端APP-1和APP-2获取临时访问密钥(临时AK/SK和securitytoken)。

    为获取具有不同权限的临时访问密钥,需设置临时策略,设置方式为添加请求体中的policy参数,可参考获取临时AK/SK和securitytoken

    下面将给出获取临时访问密钥的请求样例,其中临时策略加粗表示。

    为终端APP-1获取临时访问密钥的请求示例如下:

    {
        "auth": {
    	"identity": {
    	    "policy": {
    		"Version": "1.1",
    		"Statement": [
    		    {
    			"Action": [
    			    "obs:object:*"
    			],
    			"Resource": [
    			    "obs:*:*:object:hi-company/APPClient/APP-1/*"
    			],
    			"Effect": "Allow"
    		    }
    		]
    	    },
    	    "token": {
    		"duration-seconds": 900
    		
    	    },
    	    "methods": [
    		"token"
    	    ]
    	}
        }
    }

    为终端APP-2获取临时访问密钥的请求示例如下:

    {
        "auth": {
    	"identity": {
    	    "policy": {
    		"Version": "1.1",
    		"Statement": [
    		    {
    			"Action": [
    			    "obs:object:*"
    			],
    			"Resource": [
    			    "obs:*:*:object:hi-company/APPClient/APP-2/*"
    			],
    			"Effect": "Allow"
    		    }
    		]
    	    },
    	    "token": {
    		"duration-seconds": 900
    		
    	    },
    	    "methods": [
    		"token"
    	    ]
    	}
        }
    }

验证

终端APP-1和APP-2获取对应的临时访问密钥后,可使用OBS API或SDK来访问OBS,APP-1只能访问APPClient/APP-1下的文件,APP-2只能访问APPClient/APP-2下的文件。