11# 火山智能体身份和权限管理平台
22
3- ---
4-
53## 概述
4+
65火山智能体身份和权限管理平台(a.k.a. Agent Identity)产品,是一款面向智能体全新设计的身份与权限管理系统,可以为智能体提供与人类用户同等的、可治理的身份与安全能力,使代理系统能够安全、可控、可审计地在企业级环境中运行,其工作原理如下图所示:
76![ 智能体身份和权限管理工作原理] ( assets/images/智能体身份和权限管理工作原理.png )
87
1211- ** 权限控制** :基于策略的访问控制(PBAC),支持细粒度权限配置。
1312- ** 凭证托管** :智能体运行时可自动托管,获取和刷新凭据,无需手动管理。
1413
15- ## Agent能力
16- - Identity
14+ ## Agent 能力
1715
18- ---
16+ - Identity
1917
2018## 目录结构说明
19+
2120session3
2221├──E3_lark_doc # 实验3:学习如何使用Agent Identity产品来安全的托管外部服务(本实验以飞书文档为例)的访问凭证,以允许智能体安全无感的访问下游资源。
2322├──E4_volc_ops # 实验4:学习如何使用Agent Identity产品来安全的托管火山资源(本实验以MCP市场的ECS运维工具为例)的访问凭证,以允许智能体安全无感的访问下游资源。
@@ -35,30 +34,34 @@ session3
3534### 前置准备
3635
3736| 项目 | 说明 | 操作 |
38- | ------| ------| ------|
37+ | ------ | ------ | ------ |
3938| ** 火山控制台账号** | 必须拥有 ** IDFullAccess** ,** STSAssumeRoleAccess** 的子账号,并且该子账号需要提供对应的 ** AK/SK** 进行** 复制并记录** (后续 ` .env ` 或代码中需要使用) | 用于登录 IAM 子用户 |
4039| ** 飞书账号** | 需要能够查看或配置 ** 飞书开放平台** (< https://open.feishu.cn/app > ),以便创建/授权应用(参考下文配置) | 加入 ` 火山 AgentKit Identity(内部测试) ` 组织:<code >https://identity.feishu.cn/invite/member/_oF71wu7U3w </code > |
4140| ** 本地环境** | Git、PowerShell / Bash、` uv ` (Python 环境管理) | 参考下文安装步骤 |
4241
43-
4442### 依赖安装
4543
4644#### 拉取代码
45+
4746``` bash
4847git clone https://github.com/volcengine/agentkit-samples.git
4948cd agentkit-samples/01-tutorials/workshop/session3
5049```
5150
5251#### 安装 ` uv ` (推荐国内镜像)
52+
5353``` bash
54+
5455# Linux/macOS
5556curl -LsSf https://force-workshop.tos-cn-beijing.volces.com/uv-latest/uv-installer.sh | sh
5657
5758# Windows PowerShell
5859irm https://force-workshop.tos-cn-beijing.volces.com/uv-latest/uv-installer.ps1 | iex
60+
5961```
6062
6163#### 创建并同步 Python 3.12 虚拟环境
64+
6265``` bash
6366export UV_PYTHON_INSTALL_MIRROR=https://force-workshop.tos-cn-beijing.volces.com/python-build-standalone
6467export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/
@@ -71,25 +74,31 @@ uv sync --force-reinstall
7174#### 增加火山角色
7275
73761 . ** 打开角色管理页面**
77+
7478 < https://console.volcengine.com/iam/identitymanage/role >
7579
76802 . ** 新建角色**
81+
7782 - 在「角色管理」页面,点击 ** 「新建角色」** 按钮。
7883
79843 . ** 设置信任身份**
85+
8086 - ** 信任身份** :` 账号 `
8187 - ** 身份** :` 当前账号 ` (即你登录的主账号)
8288 - 点击 ** 「下一步」** 。
8389
84904 . ** 填写角色名称**
91+
8592 - 在弹出的表单中输入角色名称,例如 ` identity_agentkit_workshop ` (自行命名,后续便于辨识)。
8693 - 再次点击 ** 「下一步」** 。
8794
88955 . ** 绑定策略**
96+
8997 - 在策略搜索框中输入 ** ` IDReadOnlyAccess ` ** ,勾选对应的策略名称。
9098 - 点击 ** 「完成」** ,角色即创建成功。
9199
921006 . ** 记录角色 TRN**
101+
93102 - 创建成功后,点击新建好的角色进入 ** 角色详情页** 。
94103 - 在页面顶部可以看到 ** 「角色TRN」** ,形如:
95104
@@ -118,9 +127,11 @@ uv sync --force-reinstall
118127 - 输入 **客户端名称**(如 `workshop_web_client`)。
119128 - 选择 **客户端类型** 为 **Web 应用**。
120129 - 在 **允许回调 URIs** 中填入本地回调地址,例如:
130+
121131 ```text
122132 http://127.0.0.1:8000/api/v1/oauth2callback
123133 ```
134+
124135 - 点击 **「确认」** 完成创建。
125136
1261375. **记录关键信息**
@@ -183,12 +194,14 @@ uv sync --force-reinstall
183194
1841955. **配置授权范围(Scope)**
185196 - 在 **「授权作用域」** 输入以下权限(英文逗号分隔):
186- ```
197+
198+ ```text
187199 contact:user.base:readonly,contact:contact.base:readonly
188200 ```
189201
1902026. **设置用户唯一标识属性**
191203 - 在 **「用户唯一标识属性」** 填写:
204+
192205 ```json
193206 ["data","user_id"]
194207 ```
@@ -210,7 +223,8 @@ uv sync --force-reinstall
210223 - **客户端 ID**:填写 **飞书应用的 App ID**(与 3.7 中保持一致)。
211224 - **客户端密码**:填写 **飞书应用的 App Secret**。
212225 - **权限范围(Scope)**:同样填入
213- ```
226+
227+ ```text
214228 contact:user.base:readonly,contact:contact.base:readonly
215229 ```
216230
@@ -273,54 +287,71 @@ ADAPTIVE_PERMISSION_SERVICE_KEY= # ⑩ 细粒度权限服务 Key(平台分
273287> ** ⚡️ 所有实验均在同一目录下运行,若已启动应用可直接跳到对应实验步骤。**
274288
275289#### 实验 1 – 用户池登录智能体
290+
2762911 . 启动服务
292+
277293 ``` bash
278294 uv run veadk web
279295 ```
296+
2802972 . 浏览器访问 ` http://127.0.0.1:8000 ` → 登录页。
298+
2812993 . 使用 ** 实验前创建的本地用户** (用户名/临时密码)登录。
300+
2823014 . 首次登录需修改密码并完成短信验证码。
302+
2833035 . 授权后即可进入 Agent 应用页面。
284304
285305#### 实验 2 – 飞书 IdP 联合登录
306+
2863071 . 同实验 1 启动服务(若已运行可跳过)。
308+
2873092 . 在登录页点击 ** “使用飞书登录”** → 跳转飞书授权页面 → ** 授权** → 返回 Agent 并 ** 允许访问** 。
310+
2883113 . 成功后即可使用飞书身份访问智能体。
289312
290313#### 实验 3 – 安全托管飞书文档凭证
314+
2913151 . 登录 ** Agent Identity 控制台 → 凭证托管** ,查看已预置的 ` feishu ` Provider(无需手动创建)。
316+
2923172 . 启动服务并打开 Agent。
318+
2933193 . 选择 ** E3_lark_doc** Agent,输入
320+
294321 ``` text
295322 为我总结文档内容:https://icncjgc0bh0b.feishu.cn/docx/WmlQdfqiNoB1CqxHtKMcdJfonBd
296323 ```
297- 4 . 按提示完成飞书授权,即可得到文档摘要。
298324
325+ 4 . 按提示完成飞书授权,即可得到文档摘要。
299326
300327#### 实验 4 – 安全托管火山资源(ECS)凭证
301328
3023291 . 登录 ** 凭证托管** ,查看 ` ecs‑oauth‑provider ` (已预置)。
330+
3033312 . 启动服务 → 选择 ** E4_volc_ops** Agent,输入查询指令(如 “我有哪些 ECS?”)。
304- 3 . 完成火山登录与授权后,Agent 将返回 ECS 列表。
305332
333+ 3 . 完成火山登录与授权后,Agent 将返回 ECS 列表。
306334
307335#### 实验 5 – 静态细粒度权限策略
308336
3093371 . 登录 ** Agent Identity 控制台 → 用户池** ,记录当前登录用户的 ** User ID** 。
338+
3103392 . 在 ** 权限策略** 页面,新建策略:
340+
311341 - ** 效果** :允许
312342 - ** 主体** :` user::<UserID> `
313343 - ** Agent** :` identity_agentkit_workshop `
314344 - ** 资源** :` knowledgebase document ` → ` production_credential.md `
315- 3 . 保存后,在 ** E5_ops_knowledgebase** Agent 中查询 “生产服务器如何登录?” 即可看到授权成功的结果。
316345
346+ 3 . 保存后,在 ** E5_ops_knowledgebase** Agent 中查询 “生产服务器如何登录?” 即可看到授权成功的结果。
317347
318348#### 实验 6 – 动态权限围栏(预览功能)
319349
3203501 . 启动服务 → 选择 ** E6a_mail_ast_with_guard** (开启动态围栏)或 ** E6b_mail_ast_without_guard** (未开启)。
351+
3213522 . 按提示输入邮件地址、关键词、转发目标。
322- 3 . 观察
** Event 窗口
** 中
` customMetaData.permissions ` ,验证是否
** 阻断
** 攻击邮件(
` [email protected] ` )或
** 放行
** 正常邮件(
` [email protected] ` )。
323353
354+ 3 . 观察
** Event 窗口
** 中
` customMetaData.permissions ` ,验证是否
** 阻断
** 攻击邮件(
` [email protected] ` )或
** 放行
** 正常邮件(
` [email protected] ` )。
324355
325356#### 清理资源
326357
@@ -331,34 +362,31 @@ rm -rf .venv
331362# 删除克隆的代码仓库
332363cd .. && rm -rf agentkit-samples
333364```
365+
334366> 如在火山控制台创建了 ** 用户、策略、凭证 Provider** ,请在对应页面手动删除,避免产生额外费用。
335367
336368## AgentKit 部署
337369
338370暂无
339371
340-
341372## 示例提示词
342373
343374暂无
344375
345-
346376## 效果展示
347377
348378待补充
349379
350-
351380## 常见问题
352381
353382| 场景 | 可能原因 | 解决办法 |
354- | ------| ----------| ----------|
383+ | ------ | ---------- | ---------- |
355384| ** 启动后无日志输出** | ` uv ` 环境未激活或依赖未安装 | 确认 ` uv sync ` 成功,重新执行 ` uv run veadk web ` |
356385| ** 登录页面一直跳转** | 浏览器缓存或未正确创建用户 | 清除浏览器缓存或重新创建用户(实验 1) |
357386| ** 飞书授权失败** | 组织邀请未生效或账号未绑定 | 重新加入组织链接,确认飞书账号已绑定组织 |
358387| ** 凭证托管页面 404** | IAM 子账号权限不足 | 使用组委会提供的子账号登录控制台 |
359388| ** 动态权限未生效** | 使用了 ** E6b** (未开启)或浏览器阻止弹窗 | 切换到 ** E6a** ,确保浏览器允许弹窗 |
360389
361-
362390## 代码许可
363391
364392本工程遵循 Apache 2.0 License
0 commit comments