CREDENTIAL_UPDATE.md 4.3 KB

凭证管理更新说明

更新内容

🔑 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 凭证

  1. 选择凭证类型: Access Key
  2. 输入名称: 为凭证起一个描述性名称
  3. 输入 Access Key ID: AWS 提供的访问密钥 ID
  4. 输入 Secret Access Key: AWS 提供的秘密访问密钥
  5. 点击创建: 系统会自动验证凭证并获取 Account ID

验证过程

创建 Access Key 凭证时,系统会:

  1. 使用提供的凭证调用 AWS STS GetCallerIdentity API
  2. 验证凭证有效性
  3. 自动获取 AWS Account ID
  4. 保存凭证信息到数据库

错误处理

如果凭证无效,会显示具体错误信息:

  • "Access denied" - 凭证无权限
  • "Invalid credentials" - 凭证格式错误或已失效
  • "Network error" - 网络连接问题

迁移步骤

对于现有部署

  1. 备份数据库

    # 备份当前数据库
    cp backend/instance/dev.db backend/instance/dev.db.backup
    
  2. 应用迁移

    cd backend
    python apply_migration.py
    
  3. 验证迁移

    python verify_setup.py
    

对于新部署

新部署会自动使用更新后的数据库结构,无需额外操作。

兼容性

现有数据

  • ✅ 所有现有凭证保持不变
  • ✅ 现有 Access Key 凭证的 Account ID 保留
  • ✅ 现有功能完全兼容

API 兼容性

  • ✅ 所有现有 API 调用保持兼容
  • ✅ 前端可以继续传递 accountId(会被忽略)
  • ✅ 响应格式保持不变

测试建议

功能测试

  1. 创建 Assume Role 类型凭证(需要 Account ID)
  2. 创建 Access Key 类型凭证(自动检测 Account ID)
  3. 编辑两种类型的凭证
  4. 验证凭证功能
  5. 删除凭证功能

数据验证

  1. 检查新创建的 Access Key 凭证是否有正确的 Account ID
  2. 验证现有凭证数据完整性
  3. 测试凭证验证功能

优势

用户体验

  • 🎯 简化操作: 减少手动输入,降低出错概率
  • 🎯 自动化: 系统自动获取准确的 Account ID
  • 🎯 即时验证: 创建时立即验证凭证有效性

数据准确性

  • 🎯 消除错误: 避免手动输入错误的 Account ID
  • 🎯 实时同步: Account ID 始终与实际 AWS 账号一致
  • 🎯 自动更新: 凭证更新时自动同步 Account ID

系统可靠性

  • 🎯 验证机制: 创建前验证凭证有效性
  • 🎯 错误处理: 完善的错误提示和处理
  • 🎯 向后兼容: 不影响现有功能和数据

这个更新让 AWS 凭证管理更加智能和用户友好! 🚀