Table of contents
Open Table of contents
配置Vault的AWS根用户
我们肯定先要配置一个根用户给Vault使用,以便动态创建AWS IAM资源。
这个根用户需要一些基本的权限,官方给出了一个策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:AttachUserPolicy",
"iam:CreateAccessKey",
"iam:CreateUser",
"iam:DeleteAccessKey",
"iam:DeleteUser",
"iam:DeleteUserPolicy",
"iam:DetachUserPolicy",
"iam:GetUser",
"iam:ListAccessKeys",
"iam:ListAttachedUserPolicies",
"iam:ListGroupsForUser",
"iam:ListUserPolicies",
"iam:PutUserPolicy",
"iam:AddUserToGroup",
"iam:RemoveUserFromGroup"
],
"Resource": ["arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/vault-*"]
}
]
}
AWS中创建好一个IAM用户,vault-opr,然后授权上面的策略。跟着生成外部使用的访问密钥,然后就可以在Vault中配置根用户信息了。
创建AWS角色
凭证类型有三种:
- IAM User
- Assumed Role
- Federation Token
这里以IAM用户为例,在Vault中创建AWS角色,这个角色是Vault的资源,关联到AWS的凭证类型。这个角色名也会用在API路径中。
生成凭证
下面所有密钥均已销毁。
从UI创建
Copy credentials:
{
"accessKey": "AKIAXBH6LLT6NF5B74PC",
"secretKey": "xxx/N/8KHjjxBXwhqNaZs",
"leaseId": "aws/creds/s3-opr-astro/6t55CbSvdHxVAixYPL6vhyKe"
}
用API创建
export VAULT_URL="xxx"
curl -X 'GET' \
"$VAULT_URL/v1/aws/creds/s3-opr-astro?ttl=3600" \
-H 'accept: */*' \
-H 'X-Vault-Token: hvs.xxx'
{
"request_id": "1686eb44-cfc0-d525-152a-ce54e9e8b4e9",
"lease_id": "aws/creds/s3-opr-astro/fXlPUYQOCXjkO7SmWrNXnRMs",
"renewable": true,
"lease_duration": 2764800,
"data": {
"access_key": "AKIAXBH6LLT6GDKQ3JPB",
"secret_key": "J2eDrD+xxx",
"security_token": null
},
"wrap_info": null,
"warnings": null,
"auth": null
}
检查租期
创建凭证后,返回结果中有一个租期字段,lease_duration,默认值是2764800,单位是秒,含义和TTL一样,大概是32天。如果你要用凭证执行一个耗时长的任务,我们肯定要先检查一下lease_duration,看是否足够我们完成任务。如果不够了,可以续订。
AWS 查看用户
进入IAM界面,可以看到通过UI和API创建的两个用户已经显示出来。
关于AWS IAM临时安全凭证
Vault官方建议使用STS创建临时安全凭证,因为创建IAM 用户会有几秒钟的延迟,而STS federation tokens和STS AssumeRole在创建成功时可立即使用凭证,这能使CI/CD流程更加顺滑。
而且AWS官方也推荐使用临时凭证,因为这符合最小权限原则而且也是最佳实践。
您可以使用 AWS Security Token Service (AWS STS) 创建可控制对您的 AWS 资源的访问的临时安全凭证,并将这些凭证提供给受信任用户。临时安全凭证的工作方式与长期访问密钥凭证的工作方式几乎相同,仅存在以下差异:
- 顾名思义,临时安全凭证是_短期_ 凭证。可将这些凭证的有效时间配置几分钟到几小时。一旦这些凭证到期,AWS 将不再识别这些凭证或不再允许来自使用这些凭证发出的 API 请求的任何类型的访问。
- 临时安全凭证不随用户一起存储,而是动态生成并在用户提出请求时提供给用户。临时安全凭证到期时 (甚至之前),用户可以请求新的凭证,只要请求凭证的用户仍有权这样做。
因此,与长期凭证相比,临时凭证具有以下优势:
- 您不必随应用程序分配或嵌入长期 AWS 安全凭证。
- 可允许用户访问您的 AWS 资源,而不必为这些用户定义 AWS 身份。临时凭证是角色和联合身份验证的基础。
- 临时安全凭证的使用期限有限,因此,在不需要这些凭证时不必轮换或显式撤销这些凭证。临时安全凭证到期后无法重复使用。您可指定凭证的有效期,但有最长限期。