seaislee1209 5edf247a7f feat: auto-authorize policies when adding projects to sub-accounts
Project-level authorization:
- Adding a project to a sub-account now auto-calls AttachPolicyInProject
  to grant default policies (ArkFullAccess, TOSFullAccess) in that project scope
- Removing a project auto-calls DetachPolicyInProject to revoke those policies
- Each project records which policies were attached (attached_policies field)
  so removal knows exactly what to revoke

Configuration:
- GlobalConfig.default_project_policies: configurable list of policies to
  auto-attach (editable in Settings page, defaults to ArkFullAccess + TOSFullAccess)

IAM Service:
- Added attach_policy_in_project() and detach_policy_in_project() methods
  using standard AttachUserPolicy/DetachUserPolicy with ProjectName parameter

Frontend:
- Projects dialog now shows "已授权策略" column with policy tags
- Settings page has "项目默认授权策略" config field

Alert logging:
- Project add/remove operations are logged with attached/detached policy details

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 23:24:45 +08:00

AirGate

火山引擎 IAM 子账号管控平台。独立部署,带管理界面,可通过 API 对接其他系统。

解决什么问题

火山引擎的 IAM 子账号没有消费限额功能子账号可以不受限地花光主账号余额。AirGate 通过额度划拨 + 阶梯告警 + 自动停用,实现对子账号的消费管控。

核心功能

功能 说明
子账号管理 创建 / 同步 / 停用 / 恢复 IAM 子账号
权限策略 查看 / 附加 / 移除 IAM 策略Ark、TOS 等)
额度划拨 主账号给子账号划拨额度,支持追加和扣减
阶梯告警 消费达到额度的 50% / 80% / 90% 时飞书通知
自动停用 消费达到额度 100% 时自动停用子账号
消费监控 定时查询 Billing API按项目维度追踪消费
密钥安全 主账号 AK/SK 加密存储AES-256界面脱敏显示

使用前提

  • 子账号的资源需要放在独立的火山项目下,消费才能按项目准确追踪
  • 火山账单数据有 1-2 天延迟,划拨额度时建议预留余量

本地运行

# 1. 复制环境变量
cp .env.example .env
# 编辑 .env填入 AIRGATE_ENCRYPTION_KEY生成方式见文件内注释

# 2. 启动后端
cd backend
python -m venv venv
venv\Scripts\activate        # Windows
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver 8101

# 3. 启动前端(另一个终端)
cd frontend
npm install
npm run dev

打开 http://localhost:5174,登录后:

  1. 系统设置 → 添加火山主账号(填 AK/SK加密存储
  2. 子账号管理 → 同步已有用户 或 创建新子账号
  3. 给子账号点 划拨 → 设置额度
  4. 更多 → 监控配置 → 选关联项目 + 设告警阶梯

Docker 部署

docker-compose up -d
  • 前端:http://localhost:5174
  • 后端:http://localhost:8101

外部系统对接

AirDrama 等外部系统可通过 API Key 调用 AirGate 接口:

curl -H "X-API-Key: 你的key" http://airgate:8101/api/v1/iam-users/

.env 中设置 AIRGATE_API_KEY 启用。

技术栈

  • 后端Django 4.2 + DRF + APScheduler
  • 前端Vue 3 + Element Plus
  • 加密cryptography (Fernet)
  • 部署Docker + Nginx
Description
No description provided
Readme 215 KiB
Languages
Python 61.9%
Vue 34.6%
JavaScript 2%
Dockerfile 0.6%
CSS 0.4%
Other 0.5%