Полезно ли шифровать состояние Terraform, хранящееся на удаленном бэкэнде (например, GCS bucket)? - PullRequest
0 голосов
/ 30 ноября 2018

Я использую Terraform для управления ресурсами Google Cloud Platform (GCP).Я использую бэкэнд Google Cloud Storage для хранения файла состояния.GCP предоставляет управляемую службу управления ключами , поэтому с этими ключами можно управлять ключами и легко включать шифрование в корзине.Поэтому я использую следующее для шифрования моего бэкэнда (test-terraform-state, это будет только состояние Terraform).

variable my-project {}
variable my-region {}

provider "google" {
  project = "${var.my-project}"
  region  = "${var.my-region}"
  version = "1.19.1"
}

resource "google_kms_key_ring" "test-terraform-state" {
  name     = "test-terraform-state"
  location = "${var.my-region}"
}

resource "google_kms_crypto_key" "test-terraform-state-bucket" {
  name            = "test-terraform-state-bucket"
  key_ring        = "${google_kms_key_ring.test-terraform-state.self_link}"
  rotation_period = "86400s"

  lifecycle {
    prevent_destroy = true
  }
}

resource "google_storage_bucket" "test-terraform-state" {
  name = "test-terraform-state"

  location      = "${var.my-region}"
  storage_class = "REGIONAL"

  versioning {
    enabled = true
  }

  encryption {
    default_kms_key_name = "${google_kms_crypto_key.test-terraform-state-bucket.self_link}"
  }
}

Поэтому мой вопрос: содержимое корзины (состояние (я) Terraform здесь)можно зашифровать, но действительно ли это полезно?Если в корзине есть политики, например, «только некоторые пользователи могут получить к ней доступ (чтение / запись)», имеет ли преимущество шифрование?Я вижу здесь только дополнительный уровень безопасности (необходимо?), Потому что людям потребуется доступ к этой группе + роль roles/cloudkms.cryptoKeyEncrypterDecrypter для доступа к содержимому.Но я думаю, что мне не хватает некоторых вариантов использования, оправдывающих шифрование состояния Terraform.

1 Ответ

0 голосов
/ 30 ноября 2018

Я не знаю достаточно о GCP, но в AWS довольно типично предоставлять достаточно широкие права на чтение непривилегированным пользователям / ролям для многих пользователей, учитывая управляемую AWS политику ReadOnly, которая позволяет читать все, включая получение объектов из каждого сегмента..

Шифрование файла состояния с помощью специального ключа KMS, который непривилегированные пользователи не получают расшифрованный доступ, обеспечивает дополнительный способ управления доступом к файлам состояния и потенциально конфиденциальной информации в них.

Даже если это не так в GCP, он по-прежнему обеспечивает еще один уровень безопасности на случай, если что-то изменится, и кому-то непривилегированному случайно предоставлены широкие разрешения на чтение в вашем файле состояния.

Как дополнительная особенность AWSкорзины по умолчанию не зашифрованы в состоянии покоя (не проблема с Google Cloud Storage, поскольку по умолчанию зашифрованы в состоянии покоя ), поэтому при неправильной утилизации диска технически было бы возможно прочитать данные с негов том числе любой станциисекреты файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...