20a1f8e2af
以 main 现有 cmd/server 设计为准(保留 probe + /v1 路由),叠加分支新增:internal/admin/ 自包含后台(session/2FA/IP 白名单/审计/模板)、internal/totp/ + cmd/adminctl/(TOTP + 管理员创建 CLI)、cmd/server/main.go 的 startAdminIfConfigured()(opt-in:ADMIN_SECRET_KEY+DB_DSN 才起)。统一 getenvDefault 命名;go.mod 取 HEAD + go mod tidy(x/term 提为直接依赖);admins 迁移与 main 既有 000008_provision 撞号,重排为 000009_admins。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
12 lines
696 B
SQL
12 lines
696 B
SQL
-- 管理端账户(独立监听 + 内网白名单 + 2FA 的身份表)
|
||
-- 凭证最小化:密码 argon2id,TOTP 密钥 AES-GCM 加密后以二进制存储,明文绝不入库。
|
||
CREATE TABLE admins (
|
||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||
username VARCHAR(64) NOT NULL UNIQUE,
|
||
pw_hash VARCHAR(255) NOT NULL, -- argon2id(PHC 编码)
|
||
totp_secret VARBINARY(255) NOT NULL, -- AES-GCM(密钥来自 ADMIN_SECRET_KEY)
|
||
status ENUM('active','disabled') NOT NULL DEFAULT 'active',
|
||
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||
last_login_at DATETIME(6) NULL
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|