菜单

API 密钥管理

相关源文件

此页面记录了 AutoGPT 平台的 API 密钥管理系统。它解释了 API 密钥的结构、生成、存储以及在其生命周期内的管理方式。该系统为访问平台 API 提供了安全的编程访问认证。

有关用户认证和 JWT 令牌的信息,请参阅相关的认证系统文档。

概述

API 密钥管理系统允许用户创建和管理 API 密钥,以实现安全、编程化的访问 AutoGPT 平台。密钥可以根据特定权限进行范围限定,并通过从创建到吊销的整个生命周期进行管理。

来源

API 密钥结构

AutoGPT 平台中的 API 密钥遵循特定的格式,以确保安全和便于管理。每个密钥包含多个部分,在认证过程中用于不同的目的。

密钥格式和组成部分

  • 前缀:所有密钥都以 agpt_ 开头,以识别它们是 AutoGPT API 密钥。
  • 前缀长度:前 8 个字符,包括 agpt_ 前缀。
  • 后缀:密钥的最后 8 个字符。
  • 哈希:密钥以 SHA-256 哈希的形式存储在数据库中,以确保安全。
  • 原始密钥:在创建时提供给用户的完整 API 密钥。

来源

数据库模型

系统在不同上下文中处理 API 密钥时使用了不同的模型

模型描述目的
APIKey完整的表示,包括哈希值。内部数据库操作。
APIKeyWithoutHash排除敏感的哈希值。面向用户的操作。
APIKeyContainer包含原始密钥、前缀、后缀和哈希值。生成和验证。

来源

API 密钥生成与认证

API 密钥的生成和认证过程在保证安全的同时,力求提供良好的用户体验。

密钥生成流程

来源

身份验证流程

来源

API 密钥管理

API 密钥管理系统提供了一整套用于创建、列出、更新和吊销 API 密钥的操作。

密钥生命周期状态

来源

密钥管理操作

系统提供了贯穿密钥生命周期进行管理的全套功能

操作功能描述
创建generate_api_key()创建具有指定权限的新 API 密钥。
验证validate_api_key()验证提供的密钥并返回其元数据。
列表list_user_api_keys()列出用户拥有的所有密钥。
获取get_api_key_by_id()通过 ID 检索特定密钥。
吊销revoke_api_key()永久禁用密钥。
暂停suspend_api_key()暂时禁用密钥。
更新权限update_api_key_permissions()更新密钥上的权限。

来源

权限系统

API 密钥可以指定特定的权限来限制其访问范围。这遵循最小权限原则,即密钥只应拥有其预期用途所需的最低权限。

可用权限

系统支持可分配给 API 密钥的各种权限。每项权限都授予对特定 API 功能的访问权限。

来源

权限检查

当收到带有 API 密钥的 API 请求时,系统会验证密钥本身以及它是否具有请求操作所需的权限。

来源

安全考量

API 密钥系统设计了多项安全功能,以防范常见威胁。

  1. 不存储明文:原始 API 密钥绝不会存储在数据库中。只存储 SHA-256 哈希值。

  2. 基于前缀的查找:使用密钥前缀进行初始查找,平衡了安全性和性能,从而实现了高效的密钥验证。

  3. 权限范围限定:密钥可以限制为特定权限,从而减少了密钥泄露的影响。

  4. 密钥轮换:用户可以根据需要吊销旧密钥并生成新密钥,以遵循安全最佳实践。

  5. 生命周期管理:密钥可以被暂时暂停或永久吊销,以应对安全问题。

来源

错误处理

API 密钥系统包含强大的错误处理机制,可安全地管理各种失败场景。

来源

实现细节

密钥管理器实现

API 密钥系统的核心是 APIKeyManager 类,它提供了用于生成和验证 API 密钥的基础功能。

来源

数据库操作

系统提供了各种与数据库交互以进行 API 密钥管理的功能。

来源