【问题标题】:How to setup terraform state on encrypted s3 bucket如何在加密的 s3 存储桶上设置 terraform 状态
【发布时间】:2022-02-20 04:05:27
【问题描述】:

在 Austin Davis 的 excellent answer 之后,我已经为 terraform 状态设置了一个 s3 后端。我按照 Matt Lavin 的建议添加了加密存储桶的策略。

不幸的是,存储桶策略意味着 terraform state list 现在抛出

加载状态失败:AccessDenied:拒绝访问状态码:403,请求id:XXXXXXXXXXXXXXXX,主机id:XXXX...

我怀疑我错过了在 terraform 端传递或配置某些内容以加密通信,或者缺少能够读取加密状态的附加策略条目。

这是添加到 tf-state 存储桶的策略:

{
  "Version": "2012-10-17",
  "Id": "RequireEncryption",
   "Statement": [
    {
      "Sid": "RequireEncryptedTransport",
      "Effect": "Deny",
      "Action": ["s3:*"],
      "Resource": ["arn:aws:s3:::${aws_s3_bucket.terraform_state.bucket}/*"],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      },
      "Principal": "*"
    },
    {
      "Sid": "RequireEncryptedStorage",
      "Effect": "Deny",
      "Action": ["s3:PutObject"],
      "Resource": ["arn:aws:s3:::${aws_s3_bucket.terraform_state.bucket}/*"],
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      },
      "Principal": "*"
    }
  ]
}

【问题讨论】:

  • "策略加密桶"什么是策略?你到底使用了什么样的加密?自定义 CMK?
  • 添加到桶上的策略中

标签: amazon-web-services amazon-s3 terraform terraform-remote-state


【解决方案1】:

我将首先删除该存储桶策略,然后在 S3 存储桶上启用较新的 default bucket encryption 设置。如果您在执行此操作后仍然被拒绝访问,那么您在运行 Terraform 时使用的 IAM 角色缺少一些权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 2023-01-05
    • 2021-12-12
    • 2019-05-02
    • 2010-11-10
    • 2019-04-29
    • 2021-12-07
    • 1970-01-01
    相关资源
    最近更新 更多