凭证管理更新说明
更新内容
🔑 Access Key 类型凭证优化
问题: 之前创建 Access Key 类型的凭证时,需要手动输入 AWS Account ID,这是不必要的,因为可以通过 Access Key 自动获取账号信息。
解决方案:
- ✅ 前端优化: Access Key 类型时不再显示 Account ID 输入框
- ✅ 后端优化: 自动通过 AWS API 获取 Account ID
- ✅ 数据库更新: account_id 字段改为可空,支持自动检测
功能变化
创建凭证
Assume Role 类型 (无变化)
- ✅ 需要输入 AWS Account ID
- ✅ 需要输入 Role ARN
- ✅ 可选输入 External ID
Access Key 类型 (已优化)
- ✅ 只需输入 Access Key ID 和 Secret Access Key
- ✅ AWS Account ID 自动检测并保存
- ✅ 创建时会验证凭证有效性
编辑凭证
Assume Role 类型
- ✅ 可以修改 Account ID、Role ARN、External ID
Access Key 类型
- ✅ 可以修改 Access Key ID 和 Secret Access Key
- ✅ Account ID 不可手动修改(由系统管理)
技术实现
前端变化
// 创建凭证时的数据结构
interface CreateCredentialRequest {
name: string;
credentialType: 'assume_role' | 'access_key';
accountId?: string; // 现在是可选的
// ... 其他字段
}
后端变化
# 数据模型更新
class AWSCredential(db.Model):
account_id = db.Column(db.String(12), nullable=True) # 改为可空
# API逻辑更新
if credential_type == 'access_key' and not account_id:
# 自动检测 Account ID
provider = AWSCredentialProvider(...)
detected_account_id = provider.get_account_id()
credential.account_id = detected_account_id
数据库迁移
-- 将 account_id 字段改为可空
ALTER TABLE aws_credentials ALTER COLUMN account_id DROP NOT NULL;
使用指南
创建 Access Key 凭证
- 选择凭证类型: Access Key
- 输入名称: 为凭证起一个描述性名称
- 输入 Access Key ID: AWS 提供的访问密钥 ID
- 输入 Secret Access Key: AWS 提供的秘密访问密钥
- 点击创建: 系统会自动验证凭证并获取 Account ID
验证过程
创建 Access Key 凭证时,系统会:
- 使用提供的凭证调用 AWS STS GetCallerIdentity API
- 验证凭证有效性
- 自动获取 AWS Account ID
- 保存凭证信息到数据库
错误处理
如果凭证无效,会显示具体错误信息:
- "Access denied" - 凭证无权限
- "Invalid credentials" - 凭证格式错误或已失效
- "Network error" - 网络连接问题
迁移步骤
对于现有部署
备份数据库
# 备份当前数据库
cp backend/instance/dev.db backend/instance/dev.db.backup
应用迁移
cd backend
python apply_migration.py
验证迁移
python verify_setup.py
对于新部署
新部署会自动使用更新后的数据库结构,无需额外操作。
兼容性
现有数据
- ✅ 所有现有凭证保持不变
- ✅ 现有 Access Key 凭证的 Account ID 保留
- ✅ 现有功能完全兼容
API 兼容性
- ✅ 所有现有 API 调用保持兼容
- ✅ 前端可以继续传递 accountId(会被忽略)
- ✅ 响应格式保持不变
测试建议
功能测试
- 创建 Assume Role 类型凭证(需要 Account ID)
- 创建 Access Key 类型凭证(自动检测 Account ID)
- 编辑两种类型的凭证
- 验证凭证功能
- 删除凭证功能
数据验证
- 检查新创建的 Access Key 凭证是否有正确的 Account ID
- 验证现有凭证数据完整性
- 测试凭证验证功能
优势
用户体验
- 🎯 简化操作: 减少手动输入,降低出错概率
- 🎯 自动化: 系统自动获取准确的 Account ID
- 🎯 即时验证: 创建时立即验证凭证有效性
数据准确性
- 🎯 消除错误: 避免手动输入错误的 Account ID
- 🎯 实时同步: Account ID 始终与实际 AWS 账号一致
- 🎯 自动更新: 凭证更新时自动同步 Account ID
系统可靠性
- 🎯 验证机制: 创建前验证凭证有效性
- 🎯 错误处理: 完善的错误提示和处理
- 🎯 向后兼容: 不影响现有功能和数据
这个更新让 AWS 凭证管理更加智能和用户友好! 🚀