Skip to content

Commit 62cee2a

Browse files
committed
fix pre commit
1 parent 31363aa commit 62cee2a

File tree

2 files changed

+49
-21
lines changed

2 files changed

+49
-21
lines changed

01-tutorials/workshop/session3/E6a_mail_ast_with_guard/agent.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def __call__(
6161

6262
headers = {
6363
"Authorization": f"Bearer {self.api_key}",
64-
"Content-Type": "application/json"
64+
"Content-Type": "application/json",
6565
}
6666

6767
resp = requests.post(
@@ -198,10 +198,10 @@ def __call__(
198198

199199
if adaptive_permission_api_key:
200200
logger.info("权限围栏已开启")
201-
agent.before_model_callback=BeforeModelPermissionCallback(
201+
agent.before_model_callback = BeforeModelPermissionCallback(
202202
adaptive_permission_service_url, adaptive_permission_api_key
203203
)
204-
agent.after_model_callback=AfterModelPermissionCallback(
204+
agent.after_model_callback = AfterModelPermissionCallback(
205205
adaptive_permission_service_url, adaptive_permission_api_key
206206
)
207207
else:

01-tutorials/workshop/session3/README.md

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# 火山智能体身份和权限管理平台
22

3-
---
4-
53
## 概述
4+
65
火山智能体身份和权限管理平台(a.k.a. Agent Identity)产品,是一款面向智能体全新设计的身份与权限管理系统,可以为智能体提供与人类用户同等的、可治理的身份与安全能力,使代理系统能够安全、可控、可审计地在企业级环境中运行,其工作原理如下图所示:
76
![智能体身份和权限管理工作原理](assets/images/智能体身份和权限管理工作原理.png)
87

@@ -12,12 +11,12 @@
1211
- **权限控制**:基于策略的访问控制(PBAC),支持细粒度权限配置。
1312
- **凭证托管**:智能体运行时可自动托管,获取和刷新凭据,无需手动管理。
1413

15-
## Agent能力
16-
- Identity
14+
## Agent 能力
1715

18-
---
16+
- Identity
1917

2018
## 目录结构说明
19+
2120
session3
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
4847
git clone https://github.com/volcengine/agentkit-samples.git
4948
cd agentkit-samples/01-tutorials/workshop/session3
5049
```
5150

5251
#### 安装 `uv`(推荐国内镜像)
52+
5353
```bash
54+
5455
# Linux/macOS
5556
curl -LsSf https://force-workshop.tos-cn-beijing.volces.com/uv-latest/uv-installer.sh | sh
5657

5758
# Windows PowerShell
5859
irm https://force-workshop.tos-cn-beijing.volces.com/uv-latest/uv-installer.ps1 | iex
60+
5961
```
6062

6163
#### 创建并同步 Python 3.12 虚拟环境
64+
6265
```bash
6366
export UV_PYTHON_INSTALL_MIRROR=https://force-workshop.tos-cn-beijing.volces.com/python-build-standalone
6467
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/
@@ -71,25 +74,31 @@ uv sync --force-reinstall
7174
#### 增加火山角色
7275

7376
1. **打开角色管理页面**
77+
7478
<https://console.volcengine.com/iam/identitymanage/role>
7579

7680
2. **新建角色**
81+
7782
- 在「角色管理」页面,点击 **「新建角色」** 按钮。
7883

7984
3. **设置信任身份**
85+
8086
- **信任身份**`账号`
8187
- **身份**`当前账号`(即你登录的主账号)
8288
- 点击 **「下一步」**
8389

8490
4. **填写角色名称**
91+
8592
- 在弹出的表单中输入角色名称,例如 `identity_agentkit_workshop`(自行命名,后续便于辨识)。
8693
- 再次点击 **「下一步」**
8794

8895
5. **绑定策略**
96+
8997
- 在策略搜索框中输入 **`IDReadOnlyAccess`**,勾选对应的策略名称。
9098
- 点击 **「完成」**,角色即创建成功。
9199

92100
6. **记录角色 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
126137
5. **记录关键信息**
@@ -183,12 +194,14 @@ uv sync --force-reinstall
183194
184195
5. **配置授权范围(Scope)**
185196
- 在 **「授权作用域」** 输入以下权限(英文逗号分隔):
186-
```
197+
198+
```text
187199
contact:user.base:readonly,contact:contact.base:readonly
188200
```
189201
190202
6. **设置用户唯一标识属性**
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+
276291
1. 启动服务
292+
277293
```bash
278294
uv run veadk web
279295
```
296+
280297
2. 浏览器访问 `http://127.0.0.1:8000` → 登录页。
298+
281299
3. 使用 **实验前创建的本地用户**(用户名/临时密码)登录。
300+
282301
4. 首次登录需修改密码并完成短信验证码。
302+
283303
5. 授权后即可进入 Agent 应用页面。
284304

285305
#### 实验 2 – 飞书 IdP 联合登录
306+
286307
1. 同实验 1 启动服务(若已运行可跳过)。
308+
287309
2. 在登录页点击 **“使用飞书登录”** → 跳转飞书授权页面 → **授权** → 返回 Agent 并 **允许访问**
310+
288311
3. 成功后即可使用飞书身份访问智能体。
289312

290313
#### 实验 3 – 安全托管飞书文档凭证
314+
291315
1. 登录 **Agent Identity 控制台 → 凭证托管**,查看已预置的 `feishu` Provider(无需手动创建)。
316+
292317
2. 启动服务并打开 Agent。
318+
293319
3. 选择 **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

302329
1. 登录 **凭证托管**,查看 `ecs‑oauth‑provider`(已预置)。
330+
303331
2. 启动服务 → 选择 **E4_volc_ops** Agent,输入查询指令(如 “我有哪些 ECS?”)。
304-
3. 完成火山登录与授权后,Agent 将返回 ECS 列表。
305332

333+
3. 完成火山登录与授权后,Agent 将返回 ECS 列表。
306334

307335
#### 实验 5 – 静态细粒度权限策略
308336

309337
1. 登录 **Agent Identity 控制台 → 用户池**,记录当前登录用户的 **User ID**
338+
310339
2.**权限策略** 页面,新建策略:
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

320350
1. 启动服务 → 选择 **E6a_mail_ast_with_guard**(开启动态围栏)或 **E6b_mail_ast_without_guard**(未开启)。
351+
321352
2. 按提示输入邮件地址、关键词、转发目标。
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
# 删除克隆的代码仓库
332363
cd .. && 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

Comments
 (0)