【问题标题】:Terraform KMS access denied?Terraform KMS 访问被拒绝?
【发布时间】: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


    【解决方案1】:

    我没有意识到,但是当您不使用默认的 aws 配置文件时,您需要将提供程序添加到每个 .tf 文件中。

    有一次,我将此添加到 example.tf 它开始工作:

    provider aws {
      profile = "freid" 
      region = "eu-west-2" 
    }
    

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

    【讨论】:

    • 这不是真的。文件夹中的所有 .tf 文件都会合并,您只需将其放在文件夹中的一个文件中即可。
    • 是的,我也是这么想的。我最初只是在我的 aws.tf 文件中有这个。但是,在我将它添加到 example.tf 之后,terraform 能够找到主密钥。检查日志时,我可以看到当 terraform 尝试检索主密钥时,它使用的是默认的 aws 配置文件。
    • 您实际上应该得到一个错误,即您现在有多个 aws 提供程序而没有不同的别名。既然你不是,你的 aws.tf 文件似乎没有被使用?鉴于您在问题中提供的详细信息量,您的文件夹布局有问题或不明显。
    猜你喜欢
    • 2020-05-19
    • 2022-08-10
    • 2021-10-14
    • 2019-11-28
    • 2020-04-01
    • 2018-09-23
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多