我有一个使用加壳器的项目,需要 pem 文件来执行一些 ssh 任务。我正在尝试使用 CodeBuild 将其自动化。
将 pem 文件(或任何其他 secret )获取到 AWS CodeBuild 的最佳方式(或任何方式)是什么?
最佳答案
您可以使用 SSM Parameter Store 安全字符串来存储您的私钥。
Parameter Store 使用 AWS KMS 来加密和解密安全字符串参数的参数值。这意味着您可以创建客户管理的 CMK,并通过 key /IAM 策略控制谁可以使用此 key 来解密参数。
使用 put-parameter 将 key 存储为安全字符串。
aws ssm put-parameter --name mypem01 --type SecureString --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --value "<PEM_file_content>"
在构建规范中,使用以下命令获取 key 。
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"
}
]
}
有关详细信息,请参阅 How Parameter Store Uses AWS KMS。
关于amazon-web-services - 如何将 pem 文件和其他 secret 传递给 AWS CodeBuild?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698011/