多人使用 AI 平台,如何在阿里云技术栈下配置部门、用户、岗位与角色

简介: 本文基于阿里云RAM与百炼大模型平台,提出“组织树→用户→岗位→角色→数据范围”五级权限管理实践,涵盖部门建模、标签化用户管理、岗位与角色解耦、精细化数据范围控制及费用归因,具备强落地性与安全合规性。(239字)

说明:本文以阿里云 RAM(Resource Access Management)与百炼大模型服务平台为底座,给出一种“组织树 → 用户 → 岗位 → 角色 → 数据范围”的权限管理实践。示例代码为演示性质,接入时请替换为你的阿里云 AccessKey/Region 与百炼应用信息;文中数据均为示意,不涉及真实客户信息。

团队共同使用 AI 平台时,除了查看费用和分配额度,还需要明确成员属于哪个部门、承担什么职责,以及能够访问哪些功能和数据。 department、user、position、role 四者职责不同,混用会导致人员归属不清、数据范围过大等问题。

下面结合阿里云 RAM 与百炼的权限体系,介绍一种可落地的配置思路。

用资源目录或标签建立部门层级

在阿里云,可以用资源目录(Resource Directory)或资源标签表达组织层级。如果团队规模不大,也可以用业务标签(如 dept=sz-tech、dept=cs-marketing)先把归属分清楚。

维护时,先确认上下级关系,再逐步补充成员。例如,两家分公司都有“运营部”,应分别挂在各自分公司下,避免同名部门被当成同一组织。

fig_department_tree_generic.png

部门层级只表达组织关系,不自动继承权限,也不自动继承额度。数据访问和额度规则仍需分别配置。

-- 部门表设计示例:通过 parent_id 表达树形结构
CREATE TABLE departments (
    id          BIGINT PRIMARY KEY,
    name        VARCHAR(64)  NOT NULL,
    parent_id   BIGINT       NULL,
    path        VARCHAR(255) NOT NULL,  -- 如 /集团/深圳总公司/技术部
    status      TINYINT      DEFAULT 1
);

-- 查询某部门及其所有下级
SELECT id, name, path
FROM departments
WHERE path LIKE '/集团/深圳总公司/%';

在 RAM 中维护用户并绑定部门标签

阿里云 RAM 用于管理用户(RAM User)。给每个 RAM 用户打上部门、岗位标签后,可以在后续权限判断中使用。

添加成员时,先确认账号对应的是谁,再核对所属部门。部门归属需要与实际工作安排一致,不能为了方便查看数据,就把成员随意放入其他部门。

fig_user_list_generic.png

import json
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_ram20150501 import models as ram_models
from alibabacloud_tea_openapi import models as open_api_models

config = open_api_models.Config(
    access_key_id='YOUR_ACCESS_KEY_ID',
    access_key_secret='YOUR_ACCESS_KEY_SECRET',
    endpoint='ram.aliyuncs.com'
)
client = CredClient(config)

# 创建 RAM 用户并打标签
req = ram_models.CreateUserRequest()
req.user_name = 'zhangsan@sz-tech'
req.display_name = '张三'
# 标签键值建议统一:department、position、role
req.tag = [
    ram_models.TagResourceRequestTag(key='department', value='sz-tech'),
    ram_models.TagResourceRequestTag(key='position', value='pm')
]
resp = client.create_user(req)
print(json.dumps(resp.body.to_map(), indent=2, ensure_ascii=False))

岗位与角色分开管理

岗位用于描述职责(如项目经理、人力资源、普通员工),角色用于配置系统权限。两者可能都叫“管理员”,但管理目的不同。

在阿里云 RAM 中,角色(RAM Role)和策略(Policy)用于控制权限;岗位则可以作为用户标签或独立表维护,不直接决定权限。

fig_position_list_generic.png

-- 岗位表:仅描述职责
CREATE TABLE positions (
    id     BIGINT PRIMARY KEY,
    code   VARCHAR(32) UNIQUE NOT NULL,
    name   VARCHAR(64)        NOT NULL,
    sort   INT                DEFAULT 0,
    status TINYINT            DEFAULT 1
);

-- 角色表:配置权限标识
CREATE TABLE roles (
    id          BIGINT PRIMARY KEY,
    name        VARCHAR(64) NOT NULL,
    data_scope  VARCHAR(32) NOT NULL CHECK (data_scope IN ('all','dept_and_below','self_only')),
    permissions JSON        NOT NULL
);

数据范围按工作需要设置

角色配置完成后,需要检查数据范围。常见范围有:全部数据、本部门及以下、仅本人。

fig_role_data_scope_generic.png

from functools import lru_cache

@lru_cache(maxsize=128)
def get_dept_and_below(dept_id: int) -> list:
    """返回某部门及其所有下级部门 ID"""
    rows = db.query(
        "SELECT id FROM departments WHERE path LIKE (SELECT CONCAT(path,'%') FROM departments WHERE id=%s)",
        dept_id
    )
    return [r['id'] for r in rows]

def filter_records(user, records):
    role = get_role(user.role_id)
    if role.data_scope == 'all':
        return records
    if role.data_scope == 'self_only':
        return [r for r in records if r.owner_id == user.id]
    if role.data_scope == 'dept_and_below':
        allowed = get_dept_and_below(user.dept_id)
        return [r for r in records if r.dept_id in allowed]
    return []

配置后,建议用测试账号登录百炼控制台,检查需要查看的记录能否访问、不应访问的记录是否受限。

组织归属为费用和额度管理提供基础

在阿里云费用与成本中心,可以按账号、标签、资源组归集费用。如果希望按部门/项目查看 AI 调用成本,需要让调用资源(如百炼应用、灵积模型服务实例)打上对应的部门标签。

-- 调用记录与归属关联示例
CREATE TABLE ai_calls (
    id          BIGINT PRIMARY KEY,
    user_id     BIGINT       NOT NULL,
    dept_id     BIGINT       NOT NULL,
    app_id      VARCHAR(64)  NOT NULL,
    model       VARCHAR(64)  NOT NULL,
    tokens_in   INT          DEFAULT 0,
    tokens_out  INT          DEFAULT 0,
    cost_cny    DECIMAL(12,4),
    created_at  DATETIME     DEFAULT NOW()
);

-- 按部门汇总当月费用
SELECT d.name, SUM(c.cost_cny) AS total_cost
FROM ai_calls c
JOIN departments d ON c.dept_id = d.id
WHERE c.created_at >= DATE_FORMAT(NOW(), '%Y-%m-01')
GROUP BY d.name;

人员变化后及时复查

成员调岗、离职或部门职责调整后,应同步检查 RAM 用户状态、标签、角色策略,以及百炼应用侧的调用凭证归属。不要仅凭账号状态变化,就认定所有关联调用都已停止。

目录
相关文章
|
人工智能 Java
零基础五步骤,从零开始天猫精灵
零基础五步骤,从零开始天猫精灵
1883 1
零基础五步骤,从零开始天猫精灵
|
12月前
|
弹性计算 人工智能 Cloud Native
阿里云无门槛和有门槛优惠券解析:学生券,满减券,补贴券等优惠券领取与使用介绍
为了回馈用户与助力更多用户节省上云成本,阿里云会经常推出各种优惠券相关的活动,包括无门槛优惠券和有门槛优惠券。本文将详细介绍阿里云无门槛优惠券的领取与使用方式,同时也会概述几种常见的有门槛优惠券,帮助用户更好地利用这些优惠,降低云服务的成本。
1753 133
|
7月前
|
人工智能 监控 Kubernetes
LoongCollector + ACS Agent Sandbox:构建 AI Agent 生产级运行平台
文章介绍了阿里云ACSAgentSandbox与LoongCollector协同构建的AIAgent生产级运行平台,通过沙箱隔离保障运行时安全,并以高性能、全链路可观测能力解决Agent行为不可预测和执行风险难题。
3786 97
|
9月前
|
数据采集 存储 人工智能
从0开始全面认识高质量数据集建设(4)
本文详解AI数据工程实施路径,涵盖数据采集(多源汇聚、爬取、回流、视频网关、本地上传)、智能预处理(音视频图文全模态清洗增强)及高质量标注(众包/项目/预标+多类型审核入库),实现从规划到可训数据资产的全链路闭环。
|
12月前
|
JSON 安全 JavaScript
深入浅出解析 HTTPS 原理
HTTPS是HTTP与SSL/TLS结合的安全协议,通过数字证书验证身份,利用非对称加密安全交换会话密钥,再以对称加密高效传输数据,确保通信的机密性、完整性和真实性。整个过程如同建立一条加密隧道,保障网络交互安全。
2921 16
|
负载均衡 监控 Dubbo
Dubbo——初识RPC、Dubbo框架、使用直连方式实现Dubbo
Dubbo——初识RPC、Dubbo框架、使用直连方式实现Dubbo
Dubbo——初识RPC、Dubbo框架、使用直连方式实现Dubbo
|
Android开发 API
Android Camera2 拍照(四)——对焦模式
原文:Android Camera2 拍照(四)——对焦模式 本篇将重点介绍使用Camera2 API进行手动对焦的设置,以及在手动对焦与自动对焦模式之间切换。
4315 0