feat: bootstrap console administrator
This commit is contained in:
@@ -21,6 +21,23 @@ ORBIT_MYSQL_DSN 通过环境注入,命令不读取 .env。所有名称必填
|
||||
|
||||
输出 JSON 包含 application_id / namespace_id / queue_id / credential_id / token / expires_at。初始凭据有效期为 30 天,权限包括当前命名空间内的五个 P1 动作和全部队列。初始队列 max_concurrency=4、rate_per_second=10、max_unfinished_tasks=100000;并发、开始限速与积压背压已生效,语义及管理方式见 [队列接口](queues.md)。这些默认值是开发基线,不是容量承诺。
|
||||
|
||||
如果希望在第一次初始化时同时创建控制台管理员,可在同一条 bootstrap 事务中提供账号,并从标准输入交付密码:
|
||||
|
||||
```sh
|
||||
secret-manager read orbit/console-admin-password | \
|
||||
go run ./cmd/orbit-admin bootstrap \
|
||||
--application sample-app \
|
||||
--namespace default \
|
||||
--environment production \
|
||||
--queue files \
|
||||
--console-username admin \
|
||||
--console-display-name 'Orbit 管理员' \
|
||||
--console-password-stdin \
|
||||
--output .local/production.credentials.json
|
||||
```
|
||||
|
||||
`--console-password-stdin` 要求密码至少 12 个字节,密码不会出现在命令参数、日志或交付 JSON 中。业务凭据、控制台账号和两条初始化审计会在同一个数据库事务中提交;任何一步失败都会整体回滚。交付 JSON 只会额外包含 `console_username`,后续新增控制台账号仍使用 [`orbit-admin console-user create`](../console.md)。
|
||||
|
||||
资源、凭据摘要和初始化审计在一个事务中提交。交付文件先写入并同步到磁盘,成功后再提交事务。如果文件写入失败则回滚并移除文件;如果已经交付后提交无法确认,保留文件并报错,应使用其中凭据核对结果,不能直接覆盖或重复创建。
|
||||
|
||||
初始文件包含真实秘密,应保管在受限目录或导入秘密管理系统。运行账户与迁移/初始化账户分开;生产只通过 HTTPS 使用凭据。
|
||||
|
||||
@@ -32,7 +32,22 @@ http://127.0.0.1:8080/console/
|
||||
http://127.0.0.1:8080/console/
|
||||
```
|
||||
|
||||
首次使用需要由数据库管理员创建一个控制台账号。账号绑定一个已有的命名空间凭据,账号权限就是该凭据的权限;这不会轮换或输出业务 Token。推荐从私有凭据文件读取命名空间和凭据标识,并从标准输入交付密码:
|
||||
首次使用可以在 `orbit-admin bootstrap` 时一起创建控制台管理员。这样业务资源、业务凭据和管理员账号在同一个初始化事务中提交:
|
||||
|
||||
```sh
|
||||
secret-manager read orbit/console-admin-password | \
|
||||
./bin/orbit-admin bootstrap \
|
||||
--application sample-app \
|
||||
--namespace default \
|
||||
--environment production \
|
||||
--queue files \
|
||||
--console-username admin \
|
||||
--console-display-name 'Orbit 管理员' \
|
||||
--console-password-stdin \
|
||||
--output .local/production.credentials.json
|
||||
```
|
||||
|
||||
密码不会进入命令参数、日志或 JSON 文件,初始化失败时资源和账号一起回滚。已经完成业务初始化的环境,也可以由数据库管理员单独创建控制台账号。账号绑定一个已有的命名空间凭据,账号权限就是该凭据的权限;这不会轮换或输出业务 Token。推荐从私有凭据文件读取命名空间和凭据标识,并从标准输入交付密码:
|
||||
|
||||
```sh
|
||||
./bin/orbit-admin console-user create \
|
||||
@@ -44,7 +59,11 @@ http://127.0.0.1:8080/console/
|
||||
|
||||
命令会把密码写成 bcrypt 哈希,只输出账号的脱敏信息。生产环境应通过受保护的密钥管道提供标准输入;不要把密码写进命令历史、镜像或仓库。账号创建后直接打开控制台,用账号密码登录。
|
||||
|
||||
`ORBIT_CONSOLE_QUEUE_ID` 只作为单一默认队列的展示和查询范围配置,页面不再要求填写 API 地址、队列 ID、Bearer Token,也不再选择凭据 JSON:
|
||||
页面的 API 地址默认自动取当前访问地址的 origin,不需要手填。部署到域名后,直接访问 `https://orbit.example.com/console/`,页面会自动请求同一域名下的服务端接口;生产建议用反向代理让控制台和 API 保持同源。页面不再要求填写队列 ID、Bearer Token,也不再选择凭据 JSON。
|
||||
|
||||
如果未来把前端静态资源和服务端拆成不同域名,需要额外设计 API 基地址、CORS、Cookie `SameSite`/Domain 和 CSRF 防护,不能只替换一个 URL。当前内置控制台优先保证同源部署的安全边界。
|
||||
|
||||
`ORBIT_CONSOLE_QUEUE_ID` 只作为单一默认队列的展示和查询范围配置:
|
||||
|
||||
```sh
|
||||
export ORBIT_CONSOLE_QUEUE_ID='queue_xxx'
|
||||
|
||||
Reference in New Issue
Block a user