AWS Secrets Manager(静态凭据)
本指南会带你完成将 AWS Secrets Manager 配置为 CrewAI Platform 组织的密钥 provider 的全过程,使用的是 static credentials(access keys,也可选使用 AssumeRole)。完成后,CrewAI Platform 就能够读取你 AWS 账户中的密钥,并在运行时把它们注入为环境变量值。
选择认证方式
Section titled “选择认证方式”CrewAI Platform 支持两种方式让平台与 AWS Secrets Manager 认证。开始前请选择其中一种 - 下方步骤会因你的选择而不同。
| Method | 适用场景 | 取舍 |
|---|---|---|
| Static access keys | 快速上手、单账户部署 | 设置最简单;access keys 需要手动轮换 |
| AssumeRole | 跨账户、生产加固 | 短期凭据;支持 External ID;需要额外的 IAM role |
本指南的步骤 3-5 使用 tabs,这样你可以按照自己选择的路径继续。
第 1 步 - 创建一个 IAM User
Section titled “第 1 步 - 创建一个 IAM User”打开 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。
第 2 步 - 创建 IAM Policy
Section titled “第 2 步 - 创建 IAM Policy”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。
第 3 步 - 附加 Policy
Section titled “第 3 步 - 附加 Policy”- 在 IAM console 中,进入 Users 并点击你在第 1 步创建的用户。
- 在 Permissions 标签页,点击 Add permissions → Attach policies directly。
- 搜索
CrewAISecretsManagerRead,选中它,然后点击 Next。 - 点击 Add permissions。
在 AssumeRole 模式下,policy 会附加到单独的 IAM role 上(而不是直接附加到 user)。第 1 步中的 user 只需要被允许对该 role 调用 sts:AssumeRole。
创建 role:
- 在 IAM console 中,进入 Roles 并点击 Create role。
- 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。
- 点击 Next。
- 附加
CrewAISecretsManagerReadpolicy。 - 点击 Next,将 role 命名为
CrewAISecretsManagerRole,然后点击 Create role。
允许 IAM user assume 这个 role:
- 打开你刚创建的 role,并复制它的 ARN。
- 在 IAM console 中,进入 Users,点击第 1 步中的 user,然后在 Permissions 标签页点击 Add permissions → Create inline policy。
- 在 JSON 标签页中粘贴下面内容(把
ROLE_ARN_FROM_ABOVE替换掉):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "ROLE_ARN_FROM_ABOVE" } ]}- 将 policy 命名为
CrewAIAssumeSecretsRole,然后点击 Create policy。
第 4 步 - 获取凭据
Section titled “第 4 步 - 获取凭据”- 在 IAM console 中,打开第 1 步中的 user。
- 点击 Security credentials 标签页。
- 在 Access keys 下,点击 Create access key。
- 将 use case 选择为 Application running outside AWS(或 Other)。点击 Next。 5.(可选)添加 description tag。点击 Create access key。
- 点击 Show 显示 secret access key,然后复制 Access key ID 和 Secret access key,或点击 Download .csv file。
完整细节请参见 AWS 文档:Manage access keys for IAM users。
即使使用 AssumeRole,CrewAI Platform 仍然需要 IAM user 的 access key - 它会用这些 keys 作为调用身份去执行 sts:AssumeRole 调用。
- 按上方 Static access keys 标签页中的说明,为 user 创建 access key。
- 打开第 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。
填写表单:
- 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。
填写表单:
- 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。
第 7 步 - 测试连接
Section titled “第 7 步 - 测试连接”回到 CrewAI Platform,在 Secret Provider Credentials 页面找到你刚创建的凭据,并点击 Test Connection。
成功提示会确认 CrewAI Platform 能够对 AWS 进行认证,并从你的账户读取密钥。
如果测试失败,请检查最常见的原因:
| 症状 | 可能原因 |
|---|---|
AccessDenied on secretsmanager:ListSecrets | Policy 没有附加,或者附加到了错误的 user。重新检查第 3 步。 |
AccessDenied on kms:Decrypt | 缺少 KMSDecrypt statement,或者你的密钥使用了未被 Resource: "*" 覆盖的 customer-managed KMS key。 |
InvalidClientTokenId / SignatureDoesNotMatch | access 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 时获取。