跳转到内容

AWS Secrets Manager(静态凭据)

本指南会带你完成将 AWS Secrets Manager 配置为 CrewAI Platform 组织的密钥 provider 的全过程,使用的是 static credentials(access keys,也可选使用 AssumeRole)。完成后,CrewAI Platform 就能够读取你 AWS 账户中的密钥,并在运行时把它们注入为环境变量值。

CrewAI Platform 支持两种方式让平台与 AWS Secrets Manager 认证。开始前请选择其中一种 - 下方步骤会因你的选择而不同。

Method适用场景取舍
Static access keys快速上手、单账户部署设置最简单;access keys 需要手动轮换
AssumeRole跨账户、生产加固短期凭据;支持 External ID;需要额外的 IAM role

本指南的步骤 3-5 使用 tabs,这样你可以按照自己选择的路径继续。

打开 IAM console,进入 Users,然后点击 Create user

  • 建议名称:crewai-secrets-reader
  • 不要勾选 Provide user access to the AWS Management Console - 这个 principal 供 CrewAI Platform 程序化使用,而不是给人直接登录用的。
  • 点击 Next

Set permissions 页面,保留默认选择。你会在第 3 步附加 policy。

点击 Next,确认后点击 Create user

完整细节请参见 AWS 文档:Create an IAM user in your AWS account

CrewAI Platform 需要对 AWS Secrets Manager 的只读访问权限,以及通过 KMS 解密密钥的权限。请创建一个 customer-managed policy,使用下面的 JSON。

在 IAM console 中,进入 Policies,然后点击 Create policy

切换到 JSON 标签,并把内容替换为:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecretsManagerRead",
"Effect": "Allow",
"Action": [
"secretsmanager:ListSecrets",
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": "*"
},
{
"Sid": "KMSDecrypt",
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}

点击 Next,然后在 Review and create 页面:

  • Policy name: CrewAISecretsManagerRead
  • Description (optional): Read-only access to AWS Secrets Manager for CrewAI Platform

点击 Create policy

Static access keys
  1. 在 IAM console 中,进入 Users 并点击你在第 1 步创建的用户。
  2. Permissions 标签页,点击 Add permissionsAttach policies directly
  3. 搜索 CrewAISecretsManagerRead,选中它,然后点击 Next
  4. 点击 Add permissions
AssumeRole

在 AssumeRole 模式下,policy 会附加到单独的 IAM role 上(而不是直接附加到 user)。第 1 步中的 user 只需要被允许对该 role 调用 sts:AssumeRole

创建 role:

  1. 在 IAM console 中,进入 Roles 并点击 Create role
  2. Trusted entity type: AWS account。选择 This account(对于跨账户设置则选择 Another AWS account,然后输入第 1 步中 IAM user 所在的 AWS account ID)。 3.(推荐)勾选 Require external ID,并填入你自己生成的值 - 这是一段 shared secret,你会在第 5 步把它粘贴到 CrewAI Platform。
  3. 点击 Next
  4. 附加 CrewAISecretsManagerRead policy。
  5. 点击 Next,将 role 命名为 CrewAISecretsManagerRole,然后点击 Create role

允许 IAM user assume 这个 role:

  1. 打开你刚创建的 role,并复制它的 ARN
  2. 在 IAM console 中,进入 Users,点击第 1 步中的 user,然后在 Permissions 标签页点击 Add permissionsCreate inline policy
  3. JSON 标签页中粘贴下面内容(把 ROLE_ARN_FROM_ABOVE 替换掉):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "ROLE_ARN_FROM_ABOVE"
}
]
}
  1. 将 policy 命名为 CrewAIAssumeSecretsRole,然后点击 Create policy
Static access keys
  1. 在 IAM console 中,打开第 1 步中的 user。
  2. 点击 Security credentials 标签页。
  3. Access keys 下,点击 Create access key
  4. 将 use case 选择为 Application running outside AWS(或 Other)。点击 Next。 5.(可选)添加 description tag。点击 Create access key
  5. 点击 Show 显示 secret access key,然后复制 Access key IDSecret access key,或点击 Download .csv file

完整细节请参见 AWS 文档:Manage access keys for IAM users

AssumeRole

即使使用 AssumeRole,CrewAI Platform 仍然需要 IAM user 的 access key - 它会用这些 keys 作为调用身份去执行 sts:AssumeRole 调用。

  1. 按上方 Static access keys 标签页中的说明,为 user 创建 access key。
  2. 打开第 3 步中创建的 role,并复制:
    • Role ARN(来自 role summary)。
    • 你配置的 External ID(如果有) - 它是你在第 3 步自己设置的,所以请确保手头有这个值。

第 5 步 - 在 CrewAI Platform 中添加凭据

Section titled “第 5 步 - 在 CrewAI Platform 中添加凭据”

在 CrewAI Platform 中,进入 SettingsSecret Provider Credentials,然后点击 Add Credential

Static access keys

填写表单:

  • Name: 描述性名称,例如 aws-prod
  • Provider: AWS Secrets Manager
  • Region: 存放密钥的 AWS region,例如 us-east-1。这必须与要读取的密钥所在 region 一致。
  • Access Key ID: 第 4 步中的值。
  • Secret Access Key: 第 4 步中的值。 -(可选)勾选 Set as default credential for this provider。环境变量如果引用 AWS 密钥但没有显式指定凭据,就会使用默认凭据。

Role ARNExternal ID 留空。

点击 Create

AssumeRole

填写表单:

  • Name: 描述性名称,例如 aws-prod-assumerole
  • Provider: AWS Secrets Manager
  • Region: 存放密钥的 AWS region。
  • Access Key ID: 第 4 步中 IAM user 的 access key(用于调用 STS)。
  • Secret Access Key: 第 4 步中 IAM user 的 secret access key。
  • Role ARN: 第 4 步中复制的 Role ARN。
  • External ID: 你在 role trust policy 中设置的 External ID(如果没有则省略)。 -(可选)勾选 Set as default credential for this provider

点击 Create

第 6 步 - 在 AWS 中至少创建一个 Secret

Section titled “第 6 步 - 在 AWS 中至少创建一个 Secret”

如果你还没有在 AWS Secrets Manager 中创建密钥,请现在创建一个,以便在第 7 步验证连接。

AWS Secrets Manager console 中,点击 Store a new secret

  • Secret type: 选择 Other type of secret
  • Key/value pairs - 你可以:
    • 输入一个或多个 key/value 对(推荐用于结构化密钥),或者
    • 使用 Plaintext 标签页输入单个字符串值。
  • Encryption key: 除非你有特定的 KMS key 要求,否则使用 aws/secretsmanager(AWS-managed key)。

点击 Next,然后输入:

  • Secret name: 唯一名称,例如 crewai/openai-api-key
  • Description (optional): 简短说明这个 secret 的用途。

继续点击 Next 完成 rotation 和 review 步骤,然后点击 Store

回到 CrewAI Platform,在 Secret Provider Credentials 页面找到你刚创建的凭据,并点击 Test Connection

成功提示会确认 CrewAI Platform 能够对 AWS 进行认证,并从你的账户读取密钥。

如果测试失败,请检查最常见的原因:

症状可能原因
AccessDenied on secretsmanager:ListSecretsPolicy 没有附加,或者附加到了错误的 user。重新检查第 3 步。
AccessDenied on kms:Decrypt缺少 KMSDecrypt statement,或者你的密钥使用了未被 Resource: "*" 覆盖的 customer-managed KMS key。
InvalidClientTokenId / SignatureDoesNotMatchaccess key ID 或 secret access key 错误。重新检查第 4 步和第 5 步。
RegionDisabledException / no secrets found凭据的 Region 与你的密钥实际所在 region 不匹配。
AccessDenied on sts:AssumeRole (AssumeRole only)IAM user 上缺少 inline sts:AssumeRole policy,或者 role 的 trust policy 不允许这个 principal,或者 External ID 不匹配。
刚创建 IAM user 时测试通过,但下次失败IAM 凭据有时需要一两分钟才能在全球范围传播。请重试。

既然 AWS 已连接,接下来前往 Using the Secrets Manager,以:

  • 为组织成员授予使用(或管理)Secrets Manager 的正确权限。
  • 从 CrewAI Platform 环境变量中引用你的 AWS 密钥。

如果你想要rotation-aware 的密钥,并且希望在不重新部署的情况下传播,请切换到 AWS Workload Identity (OIDC Federation) - 同一个密钥存储,不用静态凭据,密钥会在每次 kickoff 时获取。