gpt4 book ai didi

boto3 - 使用 KMS 解密的 AWS SSM 参数 GET

转载 作者:行者123 更新时间:2023-12-03 15:45:38 24 4
gpt4 key购买 nike

设想:
我们的一个脚本使用 boto3 kms api 通过 KMS 加密和解密来 PUT 和 GET SSM 参数。 SSM param put 工作得非常好,并且在 EC2 SSM param 存储中使用安全字符串添加参数(解密为真)。我们面临的问题是在尝试获取解密为 true 的 SSM 参数值时。尝试运行以下 boto3 脚本(在运行 get_ssm_parameters_by_path 时)时,运行此脚本的相应 lambda 代码会引发以下错误:

       session = boto3.Session()
ssm_client = session.client('ssm', 'us-east-1')
ssm_parameters = []
response = ssm_client.get_parameters_by_path(
Path=self.ssm_parameter_path,
Recursive=True,
WithDecryption=True
)

ERROR:调用GetParametersByPath操作时出现错误(AccessDeniedException):密文引用的客户主 key 不存在,不存在于该区域,或者您不被允许访问。 (服务:AWSKMS;状态代码:400;错误代码:AccessDeniedException;请求 ID:eaaxx-7ae7-11e8-97xx5e-b9exxxxxxx410):ClientError

我浏览了不同的 AWS 文档来使用 KMS 加密和解密,并更新了我的策略文档如下,但到目前为止还没有运气。
lambda 使用的角色具有以下策略访问权限:
{
"Sid": "AllowSSMAccess",
"Effect": "Allow",
"Action": ["kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey"],
"Resource": "arn:aws:kms:us-east-1:AWS_ACCOUNT_NUMBER:key/<aws/ssm default key id>",
"Condition": {
"StringEquals": {
"kms:ViaService": "ssm.us-east-1.amazonaws.com",
"kms:CallerAccount": "AWS_ACCOUNT_NUMBER"
}
}
},
{
"Sid": "AllowKeyMetadata",
"Effect": "Allow",
"Action": ["kms:Describe*", "kms:Get*", "kms:List*"],
"Resource": "arn:aws:kms:us-east-1:AWS_ACCOUNT_NUMBER:key/<aws/ssm default key id>"
},
{
"Sid": "KeyAccess",
"Effect": "Allow",
"Action": [
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Get*",
"kms:TagResource"
],
"Resource": "arn:aws:kms:us-east-1:AWS_ACCOUNT_NUMBER:key/<aws/ssm default key id>"
}

其中 AWS_ACCOUNT_NUMBER 是我的 AWS 帐号,kms key ID 是默认的“aws/ssm” key ,用于加密和解密 SSM 参数。 key 确实存在于帐户中。我们提供的区域是“us-east-1”,所以对 0 没问题。错误的最后一部分说“或者您无权访问”。

我可以看到该参数在 EC2 SSM 参数存储中可用,并使用我用来解密的 key ID 正确解密。

我们需要执行哪些其他策略访问或添加才能成功运行“get_parameters_by_path”。

最佳答案

您必须定义以下策略才能访问参数存储 key 。

{
"Sid": "getParameter",
"Effect": "Allow",
"Action": [
"ssm:GetParameters"
],
"Resource": "arn:aws:ssm:<region>:<AWS_ACCOUNT_NUMBER>:parameter/<Parameter_Store_Key_Name>"
},
{
"Sid": "decryptKey",
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": "arn:aws:kms:<region>:<AWS_ACCOUNT_NUMBER>:key/<aws/ssm_Key_Id>"
}

ssm:GetParameters 将允许我们访问 Parameter_Store_Key_Name。
引用 https://docs.aws.amazon.com/kms/latest/developerguide/services-parameter-store.html .

关于boto3 - 使用 KMS 解密的 AWS SSM 参数 GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com