amazon-web-services - 如何将 pem 文件和其他机密传递给 AWS CodeBuild?
问题描述
我有一个使用打包程序的项目,需要 pem 文件来执行一些 ssh 任务。我正在尝试使用 CodeBuild 自动执行此操作。
将 pem 文件(或任何其他机密)获取到 AWS CodeBuild 的最佳方式(或任何方式)是什么?
解决方案
您可以使用 SSM Parameter Store 安全字符串来存储您的私钥。
Parameter Store 使用 AWS KMS 加密和解密安全字符串参数的参数值。这意味着您可以创建客户管理的 CMK 并控制谁可以使用此密钥通过密钥/IAM 策略来解密参数。
使用 put-parameter 将密钥存储为安全字符串。
aws ssm put-parameter --name mypem01 --type SecureString --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --value "<PEM_file_content>"
在 buildspec 中,使用以下命令获取密钥。
aws ssm get-parameter --name mypem01 --with-decryption --output text --query Parameter.Value
您应该将以下 IAM 策略附加到 CodeBuild 服务角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:GetParameter*"
],
"Resource": "arn:aws:ssm:us-west-1:123456789012:parameter/EC2PEM/*"
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": "arn:aws:kms:us-west-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
]
}
IAM 用户需要以下策略来创建安全字符串参数:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:PutParameter"
],
"Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/FinancialParameters/*"
},
{
"Effect": "Allow",
"Action": [
"kms:Encrypt"
],
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
]
}
有关更多详细信息,请参阅Parameter Store 如何使用 AWS KMS。
推荐阅读
- python - 为 Windows 编写一个脚本文件(.bat 或 .cmd),这样我就可以在任何预装 Python 的 Windows 10 PC 上自动运行现有的 Django 项目
- reactjs - React Bootstrap 列未水平显示
- javascript - 库存物品数量
- c++ - 计算字符串中有多少特定字符无法正常工作
- minecraft - Minecraft 1.15.2 的随机矿石生成问题
- java - 使用 CompletableFuture 时,HttpServletRequest 标头消失
- snowflake-cloud-data-platform - 雪花存储过程变量绑定错误
- xml - 动态地将孩子兄弟姐妹的价值观吸收到一个父母的文本中
- asp.net-core - SwaggerUI Asp.Net Core - 如何引用 .json 文件
- c++ - 线程池在一些循环后阻塞主线程