首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拒绝Terraform KMS访问?

拒绝Terraform KMS访问?
EN

Stack Overflow用户
提问于 2020-10-17 22:23:56
回答 1查看 450关注 0票数 1

我在获取terraform来破解我的KMS密文时遇到问题。

我已经使用aws cli创建了一个新的KMS密文。

代码语言:javascript
复制
aws kms create-key
aws kms create-alias --alias-name alias/some-name --target-key-id KEYID
aws kms encrypt --key-id KEYID --plaintext SOMETEXT

在我的terraform文件中,我添加了:

代码语言:javascript
复制
data "aws_kms_secrets" "example" {
  secret {
    name = "some-name"
    payload = "AQICAHgVf2E9PsbkjhirN4jL+dPBwssdKYuzvWfinKOjd/F3CAHsILNXf2iPu08U0FgT88FcAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMVxbKhOhe6Ykgqrc8AgEQgDv9fPIMcjvGOpK78J43xMMxR9C35cJvFT+JAHTxgd5Nk5lNfS+/AyJY+5W4TVq9sLw0Cz8ziSM/HW2xVg=="
  }
}

但是,当我运行terraform plan时,我得到以下错误:

代码语言:javascript
复制
data.aws_kms_secrets.example: Refreshing state...

Error: Failed to decrypt 'some-name': AccessDeniedException: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.
status code: 400, request id: 8daef259-61b4-4cb0-9991-bb84ad76c71a

但是,我可以使用aws cli成功解密密文:

代码语言:javascript
复制
aws kms decrypt --profile=freid --region=eu-west-2 --ciphertext-blob fileb://<(echo AQICAHgVf2E9PsbkjhirN4jL+dPBwssdKYuzvWfinKOjd/F3CAHsILNXf2iPu08U0FgT88FcAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMVxbKhOhe6Ykgqrc8AgEQgDv9fPIMcjvGOpK78J43xMMxR9C35cJvFT+JAHTxgd5Nk5lNfS+/AyJY+5W4TVq9sLw0Cz8ziSM/HW2xVg== | base64 -D) --query Plaintext --output text | base64 -D

我的cli和terraform都使用相同的aws证书,所以我不认为这是权限问题。我使用的是区域eu-west-2,但是当我运行terraform plan时,它会要求我将provider.aws.region设置为eu-west-2。我不确定为什么它要求我设置它,因为在计划中,我无论如何都将它设置为eu-west-2:

代码语言:javascript
复制
provider aws {
  profile = "freid"
  region = "eu-west-2"
}

所以,我有点搞不懂为什么terraform的访问权限被拒绝了。任何帮助都会非常有用,你可以在这里找到我的tf文件:https://github.com/redstraw/sommelier/tree/master/infrastructure

EN

回答 1

Stack Overflow用户

发布于 2020-10-17 23:22:58

我没有意识到,但当您不使用默认的亚马逊网络服务配置文件时,您需要将提供商添加到每个.tf文件中。

有一次,我把这段代码添加到example.tf中,它开始工作了:

代码语言:javascript
复制
provider aws {
  profile = "freid" 
  region = "eu-west-2" 
}

我不完全确定为什么会这样。如果有人知道为什么,请发表评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64403503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档