跳转到内容

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 permissions → Attach 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 permissions → Create 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 ID 和 Secret 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 中,进入 Settings → Secret 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 ARN 和 External 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 时获取。