胜算云 胜算云 文档中心 ↗ 精益社区

RAM 用户管理 API

创建、查询、编辑、重置密码和删除企业 RAM 用户。

RAM用户管理 API

💡

接口参考待联调:账号创建参数已发生变化:当前控制台提交 name、phone、password、authroity 和可选 projects,下面旧例仍使用 account_id/authority。公开管理接口是否同步、身份枚举及权限需后端确认。 以下是待核对的接口资料,不作为可直接接入的正式示例。控制台操作请按对应使用指南完成。

概述

RAM(Resource Access Management)用户管理API允许主账号创建和管理子账号,实现企业内部的权限分级管理。

基础信息

  • Base URL: YOUR_GATEWAY_MANAGEMENT_BASE_URL
  • 认证方式: AccessKey/SecretKey签名 或 JWT Token
  • 请求格式: JSON
  • 响应格式: JSON

权限说明

操作 主账号 RAM管理员 RAM成员
创建RAM用户 ✅ ❌ ❌
查看RAM用户列表 ✅ ❌ ❌
查看RAM用户详情 ✅ ❌ ❌
修改RAM用户 ✅ ❌ ❌
删除RAM用户 ✅ ❌ ❌
重置密码 ✅ ❌ ❌
修改密码 ✅ ❌ ❌

API接口列表

1. 创建RAM用户

创建一个新的RAM子账号。

接口信息

  • Path: /ram/user/create
  • Method: POST
  • 权限: 仅主账号

请求参数

参数名 类型 必填 说明 示例
name string 是 RAM用户名称 test-ram-user
password string 是 登录密码,至少8位 YOUR_SECURE_PASSWORD
account_id int 是 账号ID 子账号登陆所需的ID例如: 4673526704, 全局唯一
authority string 是 权限级别:admin/member member

authority说明:

  • admin: RAM管理员,可以查看所有项目,管理BYOK和角色
  • member: RAM成员,只能访问被授权的项目

请求示例

POST /ram/user/create
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "name": "dev-team-user",
  "password": "YOUR_SECURE_PASSWORD",
  "account_id": 4673526704,
  "authority": "member"
}

响应示例

成功响应 (200 OK):

{
  "code": 0,
  "data": {},
  "msg": "创建成功"
}

错误响应 (403 Forbidden):

{
  "code": 403,
  "msg": "仅主账号可以访问此功能"
}

Python调用示例

先将>认证文档的 Python 签名实现保存为 signature_helper.py,并安装 requests。本段依赖该文件;签名编码仍须完成本页顶部所述核准。

import requests
import json
from signature_helper import calculate_signature

# 配置
base_url = "http://your-domain.com"
access_key_id = "AK_xxx"
secret_key = "SK_xxx"

# 请求参数
body = {
    "name": "dev-team-user",
    "password": "YOUR_SECURE_PASSWORD",
    "account_id": 988473713,
    "authority": "member"
}

# 计算签名
method = "POST"
uri = "/ram/user/create"
timestamp, signature = calculate_signature(method, uri, body, secret_key)

# 发送请求
response = requests.post(
    f"{base_url}{uri}",
    data=json.dumps(body, separators=(',', ':')).encode('utf-8'),
    timeout=30,
    headers={
        "Content-Type": "application/json",
        "X-Access-Key-Id": access_key_id,
        "X-Timestamp": timestamp,
        "X-Signature": signature
    }
)

print(response.json())

2. 获取RAM用户列表

分页查询RAM用户列表。

接口信息

  • Path: /ram/user/list
  • Method: POST
  • 权限: 主账号、RAM管理员

请求参数

参数名 类型 必填 说明 示例
account_name string 否 按用户名筛选(模糊搜索) xxxxx

请求示例

POST /ram/user/list
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "account_name": "xxxxxx"
}

响应示例

{
  "code": 0,
  "data": [
    {
      "id": 28,
      "user_id": 4,
      "account_id": 7468125380,
      "name": "string",
      "status": 1,
      "authority": "string"
    },
    {
      "id": 29,
      "user_id": 4,
      "account_id": 1849937,
      "name": "string",
      "status": 1,
      "authority": "string"
    }
  ],
  "msg": "获取子用户列表成功"
}

3. 获取RAM用户详情

根据account_id查询RAM用户详细信息。

接口信息

  • Path: /ram/user/detail
  • Method: POST
  • 权限: 主账号、RAM管理员

请求参数

参数名 类型 必填 说明 示例
account_id integer 是 RAM用户的账号ID 100001

请求示例

POST /ram/user/detail
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "account_id": 100001
}

响应示例

{
  "code": 0,
  "data": {
    "id": 16,
    "user_id": 4,
    "account_id": 4668925877,
    "name": "lichaowei_senior",
    "status": 1,
    "authority": "member",
    "ram_user_project_roles": [
      {
        "ID": 56,
        "CreatedAt": "2025-12-03T17:55:43.613148+08:00",
        "UpdatedAt": "2025-12-03T17:55:43.613148+08:00",
        "RamUserID": 16,
        "EnterpriseGatewayProjectID": 5,
        "RoleID": 11,
        "Role": {
          "ID": 11,
          "CreatedAt": "2025-11-21T14:46:12.691133+08:00",
          "UpdatedAt": "2025-12-17T11:06:05.500465+08:00",
          "UserId": 4,
          "Name": "有限制管理员",
          "Desc": "",
          "Auth": "manager",
          "TpmLimit": 10,
          "RpmLimit": 1000,
          "Budget": 20,
          "BudgetKind": "daily"
        }
      },
      {
        "ID": 91,
        "CreatedAt": "2025-12-19T14:09:36.398269+08:00",
        "UpdatedAt": "2025-12-19T14:09:36.398269+08:00",
        "RamUserID": 16,
        "EnterpriseGatewayProjectID": 36,
        "RoleID": 11,
        "Role": {
          "ID": 11,
          "CreatedAt": "2025-11-21T14:46:12.691133+08:00",
          "UpdatedAt": "2025-12-17T11:06:05.500465+08:00",
          "UserId": 4,
          "Name": "有限制管理员",
          "Desc": "",
          "Auth": "manager",
          "TpmLimit": 10,
          "RpmLimit": 1000,
          "Budget": 20,
          "BudgetKind": "daily"
        }
      },
      {
        "ID": 97,
        "CreatedAt": "2025-12-19T15:44:58.443568+08:00",
        "UpdatedAt": "2025-12-19T15:44:58.443568+08:00",
        "RamUserID": 16,
        "EnterpriseGatewayProjectID": 35,
        "RoleID": 5,
        "Role": {
          "ID": 5,
          "CreatedAt": "2025-11-20T16:11:20.112738+08:00",
          "UpdatedAt": "2025-12-26T10:14:30.316569+08:00",
          "UserId": 4,
          "Name": "无限制管理员",
          "Desc": "",
          "Auth": "manager",
          "TpmLimit": 20000,
          "RpmLimit": 1000,
          "Budget": 0,
          "BudgetKind": "unlimited"
        }
      }
    ]
  },
  "msg": "获取子用户详情成功"
}

4. 获取当前RAM用户信息

获取当前认证用户(AccessKey对应的用户)的信息。

接口信息

  • Path: /ram/user/info
  • Method: POST
  • 权限: 所有用户

请求参数

无需请求参数(请求体可为空JSON对象 {})

请求示例

POST /ram/user/info
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{}

响应示例

{
  "code": 0,
  "data": {
    "user_id": 1,
    "account_type": "sub",
    "ram_user_id": 1001,
    "ram_username": "dev-team-user",
    "authority": "member",
    "projects": [
      {
        "project_id": 1,
        "project_name": "虚构示例项目 A",
        "role": "viewer"
      }
    ]
  },
  "msg": "success"
}

5. 修改RAM用户

更新RAM用户的信息。

接口信息

  • Path: /ram/user/update
  • Method: POST
  • 权限: 仅主账号

请求参数

参数名 类型 必填 说明 示例
ram_user_id integer 是 RAM用户的ID 12
name string 否 新的用户名 new-ram-user
authority string 否 新的权限级别 admin/member

请求示例

POST /ram/user/update
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "authroity": "member",
  "name": "string",
  "ram_user_id": 0
}

响应示例

{
  "code": 0,
  "data": {},
  "msg": "更新子用户成功"
}

6. 删除RAM用户

删除指定的RAM用户。

接口信息

  • Path: /ram/user/delete
  • Method: POST
  • 权限: 仅主账号

请求参数

参数名 类型 必填 说明 示例
account_id integer 是 RAM用户的ID 16

请求示例

POST /ram/user/delete
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "ram_user_id": 16
}

响应示例

{
  "code": 0,
  "msg": "删除成功"
}

7. 重置RAM用户密码

由主账号重置RAM用户的密码。

接口信息

  • Path: /ram/user/reset_password
  • Method: POST
  • 权限: 仅主账号

请求参数

参数名 类型 必填 说明 示例
ram_user_id integer 是 RAM用户的ID 16
code string 是 短信验证码 (从接口/v2/auth/sms获取) 283779
password string 是 新密码,至少8位 YOUR_NEW_SECURE_PASSWORD

请求示例

POST /ram/user/reset_password
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "ram_user_id": 100001,
  "code": 287990,
  "password": "YOUR_NEW_SECURE_PASSWORD"
}

响应示例

{
  "code": 0,
  "msg": "密码重置成功"
}

8. 修改RAM用户密码

主账号修改RAM用户的密码(需要提供旧密码)。

接口信息

  • Path: /ram/user/update_password
  • Method: POST
  • 权限: 仅主账号

请求参数

参数名 类型 必填 说明 示例
ram_user_id integer 是 RAM用户的账号ID 100001
new_password string 是 新密码,至少8位 YOUR_NEW_SECURE_PASSWORD

请求示例

POST /ram/user/update_password
Content-Type: application/json
X-Access-Key-Id: AK_xxx
X-Timestamp: 2024-01-01T12:00:00+00:00
X-Signature: xxx

{
  "ram_user_id": 15,
  "new_password": "YOUR_NEW_SECURE_PASSWORD"
}

响应示例

{
  "code": 0,
  "msg": "更新子用户密码成功"
}

完整调用示例

Python完整示例

import requests
import hashlib
import hmac
import base64
import json
from datetime import datetime, timezone

class RAMUserAPI:
    def __init__(self, base_url, access_key_id, secret_key):
        self.base_url = base_url
        self.access_key_id = access_key_id
        self.secret_key = secret_key

    def _calculate_signature(self, method, uri, body):
        # 计算Body哈希
        body_bytes = json.dumps(body, separators=(',', ':')).encode('utf-8') if body is not None else b''
        body_hash = base64.b64encode(hashlib.sha256(body_bytes).digest()).decode('utf-8')

        # 生成时间戳
        timestamp = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S%z')
        timestamp = timestamp[:-2] + ':' + timestamp[-2:]

        # 构造StringToSign
        string_to_sign = f"{method}\n{uri}\n{timestamp}\n{body_hash}"

        # 计算签名
        signature = base64.b64encode(
            hmac.new(
                self.secret_key.encode('utf-8'),
                string_to_sign.encode('utf-8'),
                hashlib.sha256
            ).digest()
        ).decode('utf-8')

        return timestamp, signature

    def _request(self, method, uri, body=None):
        timestamp, signature = self._calculate_signature(method, uri, body)

        response = requests.request(
            method=method,
            url=f"{self.base_url}{uri}",
            data=json.dumps(body, separators=(',', ':')).encode('utf-8') if body is not None else None,
            timeout=30,
            headers={
                "Content-Type": "application/json",
                "X-Access-Key-Id": self.access_key_id,
                "X-Timestamp": timestamp,
                "X-Signature": signature
            }
        )
        return response.json()

    def create_ram_user(self, name, password, authority, desc=""):
        """创建RAM用户"""
        return self._request("POST", "/ram/user/create", {
            "name": name,
            "password": password,
            "account_id": account_id,
            "authority": authority
        })

    def list_ram_users(self, page=1, page_size=10, **filters):
        """获取RAM用户列表"""
        body = {"page": page, "pageSize": page_size}
        body.update(filters)
        return self._request("POST", "/ram/user/list", body)

    def get_ram_user_detail(self, account_id):
        """获取RAM用户详情"""
        return self._request("POST", "/ram/user/detail", {
            "ram_user_id": ram_user_id
        })

    def get_current_user_info(self):
        """获取当前用户信息"""
        return self._request("POST", "/ram/user/info", {})

    def update_ram_user(self, account_id, **updates):
        """更新RAM用户"""
        body = {
            "ram_user_id": ram_user_id,
            "authroity" : authroity,
            "name" : name
        }
        body.update(updates)
        return self._request("POST", "/ram/user/update", body)

    def delete_ram_user(self, account_id):
        """删除RAM用户"""
        return self._request("POST", "/ram/user/delete", {
            "ram_user_id": ram_user_id
        })

    def reset_password(self, account_id, new_password):
        """重置密码"""
        return self._request("POST", "/ram/user/reset_password", {
            "ram_user_id": ram_user_id,
            "new_password": new_password
        })


# 使用示例
if __name__ == "__main__":
    api = RAMUserAPI(
        base_url="YOUR_GATEWAY_MANAGEMENT_BASE_URL",
        access_key_id="AK_xxx",
        secret_key="SK_xxx"
    )

    # 1. 创建RAM用户
    result = api.create_ram_user(
        name="test-user",
        password="YOUR_SECURE_PASSWORD",
        authority="member",
        desc="测试用户"
    )
    print("创建RAM用户:", result)

    # 2. 获取RAM用户列表
    result = api.list_ram_users(page=1, page_size=10, authority="member")
    print("RAM用户列表:", result)

    # 3. 获取当前用户信息
    result = api.get_current_user_info()
    print("当前用户信息:", result)

错误码说明

错误码 说明 解决方法
400 参数错误 检查请求参数是否符合要求
401 未认证 检查AccessKey和签名是否正确
403 权限不足 确认账号具有相应权限
404 用户不存在 检查account_id是否正确
409 用户名已存在 更换用户名
500 服务器错误 联系技术支持

注意事项

  1. 用户名唯一性: RAM用户名在主账号下必须唯一
  2. 密码强度: 密码至少8位,建议包含大小写字母、数字和特殊字符
  3. 权限继承: RAM用户的权限不能超过创建它的主账号
  4. 状态管理: 禁用RAM用户后,其AccessKey将无法使用
  5. 删除影响: 删除RAM用户会同时删除其所有AccessKey和项目角色绑定

相关文档

示例运行范围

完整客户端示例需要 Python 3 与 requests;JavaScript 客户端需要 Node.js 与 axios。后续业务片段复用前文创建的客户端实例,不是独立脚本。执行创建、修改或删除前,仅使用获准的测试环境及测试数据。这里的本地语法检查不代表接口联调通过。