【发布时间】:2021-01-31 19:44:33
【问题描述】:
我在获取 terraform 以解密我的 KMS 密文时遇到问题。
我已经使用 aws cli 创建了一个新的 KMS 密文。
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 文件中我添加了:
data "aws_kms_secrets" "example" {
secret {
name = "some-name"
payload = "AQICAHgVf2E9PsbkjhirN4jL+dPBwssdKYuzvWfinKOjd/F3CAHsILNXf2iPu08U0FgT88FcAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMVxbKhOhe6Ykgqrc8AgEQgDv9fPIMcjvGOpK78J43xMMxR9C35cJvFT+JAHTxgd5Nk5lNfS+/AyJY+5W4TVq9sLw0Cz8ziSM/HW2xVg=="
}
}
但是,当我运行 terraform plan 时,我收到以下错误:
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 成功解密密文:
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 时,它要求我设置我设置为 eu-west-2 的 provider.aws.region。
我不确定它为什么要我设置它,因为在计划中我还是将它设置为 eu-west-2:
provider aws {
profile = "freid"
region = "eu-west-2"
}
所以,我对为什么 terraform 会获得拒绝访问异常感到困惑。 任何帮助都会得到极大的帮助,你可以在这里找到我的 tf 文件:https://github.com/redstraw/sommelier/tree/master/infrastructure
【问题讨论】:
标签: amazon-web-services terraform terraform-provider-aws aws-kms