文档首页> AI开发平台ModelArts> API参考> 应用示例> 管理ModelArts服务的委托授权
更新时间:2023-12-14 GMT+08:00

管理ModelArts服务的委托授权

本节通过调用一系列API,以管理ModelArts服务的委托授权为例介绍ModelArts API的使用流程。

概述

管理ModelArts服务的委托授权流程如下:

  1. 调用认证鉴权接口获取用户Token,在后续的请求中需要将Token放到请求消息头中作为认证。
  2. 调用创建ModelArts委托接口完成包含OBS、SWR等依赖服务的ModelArts委托。
  3. 调用配置授权接口配置ModelArts授权。该接口支持管理员给IAM子用户设置委托,支持设置当前用户的访问密钥。

    若没有授权,ModelArts服务的数据管理、训练管理、开发环境、在线服务等功能将不能正常使用。

  4. 调用查看授权列表接口查看用户的授权信息。
  5. 在管理用户授权时,可以调用删除授权接口删除指定用户的授权或者删除全量用户的授权。

前提条件

操作步骤

  1. 调用认证鉴权接口获取用户的Token。
    1. 请求消息体:

      URI格式:POST https://{iam_endpoint}/v3/auth/tokens

      请求消息头:Content-Type →application/json

      请求Body:
      {
        "auth": {
          "identity": {
            "methods": ["password"],
            "password": {
              "user": {
                "name": "user_name", 
                "password": "user_password",
                "domain": {
                  "name": "domain_name"  
                }
              }
            }
          },
          "scope": {
            "project": {
              "name": "ap-southeast-1"  
            }
          }
        }
      }
      其中,加粗的斜体字段需要根据实际值填写:
      • iam_endpoint为IAM的终端节点。
      • user_name为IAM用户名。
      • user_password为用户登录密码。
      • domain_name为用户所属的帐号名。
      • ap-southeast-1为项目名,代表服务的部署区域。
    2. 返回状态码“201 Created”,在响应Header中获取“X-Subject-Token”的值即为Token,如下所示:
      x-subject-token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
  2. 调用创建ModelArts委托接口完成包含OBS、SWR、IEF等依赖服务的ModelArts委托。
    1. 请求消息体:

      URI:POST https://{endpoint}/v2/{project_id}/agency

      请求消息头:
      • X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
      • Content-Type →application/json

      请求Body:

      {
        "agency_name_suffix" : "iam-user01"
      }
      其中,加粗的斜体字段需要根据实际值填写:
      • endpoint为ModelArts的终端节点。
      • project_id为用户的项目ID。
      • “X-auth-Token”是上一步获取到的Token值。
      • “agency_name_suffix”是自定义的委托名称后缀。
    2. 返回状态码“200 OK”表示委托“ma_agency_iam-user01”创建成功,响应Body如下所示:
      {
          "agency_name": "ma_agency_iam-user01"
      }
  3. 调用配置授权接口配置ModelArts授权。该接口支持管理员给IAM子用户设置委托,支持设置当前用户的访问密钥。
    1. 请求消息体:

      URI:POST https://{endpoint}/v2/{project_id}/authorizations

      请求消息头:
      • X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
      • Content-Type →application/json
      请求Body:
      {
        "user_id": "****af917080f5d21f55c018ba19****",
        "type": "agency",
        "content": "ma_agency_iam-user01"
      }

      其中,加粗的斜体字段需要根据实际值填写,“user_id”为IAM用户ID,“content”为上一步创建的ModelArts委托。

    2. 返回状态码“200 OK”表示配置授权完成,响应Body如下所示:
      {
          "result": true
      }
  4. 调用查看授权列表接口查看用户的授权信息。
    1. 请求消息体:

      URI:GET https://{endpoint}/v2/{project_id}/authorizations

      请求消息头:X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...

      其中,加粗的斜体字段需要根据实际值填写。

    2. 返回状态码“200 OK”,响应Body如下所示:
      {
        "auth": [
          {
            "create_time": 1622804433221,
            "user_id": "all-users",
            "user_name": "all-users",
            "type": "agency",
            "content": "modelarts_agency"
          },
          {
            "create_time": 1625457065365,
            "user_id": "****af917080f5d21f55c018ba19****",
            "user_name": null,
            "type": "agency",
            "content": "ma_agency_iam-user01"
          }
        ],
        "total_count": 2
      }

      根据响应可以了解用户的授权信息。

  5. 在管理用户授权时,可以调用删除授权接口删除指定用户的授权或者删除全量用户的授权。
    1. 请求消息体:

      URI:DELETE https://{endpoint}/v2/{project_id}/authorizations?user_id=****d80fb058844ae8b82aa66d9fe****

      请求消息头:X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...

      其中,加粗的斜体字段需要根据实际值填写,“****d80fb058844ae8b82aa66d9fe****”是指定用户的IAM用户ID。

    2. 返回状态码“200 OK”表示删除成功,响应Body如下所示:
      {
          "result": true
      }
    3. 如果请求参数user_id="all-users",表示删除全量用户授权,返回状态码“200 OK”表示删除成功,响应Body如下所示:
      {
          "result": true,
          "success_message": "Delete all-users auth info successfully!"
      }