Terraform-provider-local: local_file не должен выводить конфиденциальную информацию на выходе, если чувствительный = true

Созданный на 22 авг. 2018  ·  14Комментарии  ·  Источник: hashicorp/terraform-provider-local

_Эта проблема была первоначально открыта @mtheus как hashicorp/terraform#18718. Он был перенесен сюда в результате разделения провайдера . Исходное тело вопроса ниже._


Терраформ-версия

Terraform v0.11.8

Файлы конфигурации Terraform

resource "local_file" "kubeconfig" {
    sensitive = true
    content  = "${data.terraform_remote_state.kubernetes.kubeconfig}"
    filename = ".kube/config"
}

Отладочный вывод

Ожидаемое поведение

Конфиденциальная информация не отображается на выходе

Фактическое поведение

data.terraform_remote_state.kubernetes: Refreshing state...
local_file.kubeconfig: Creating...
  content:  "" => "\n\napiVersion: v1\nclusters:\n- cluster:\n    server: https://**<SENSIVE>**.sk1.us-east-1.eks.amazonaws.com\n    certificate-authority-data: LS0tLS1C**<SENSIVE>**\n  name: kubernetes\ncontexts:\n- context:\n    cluster: kubernetes\n    user: aws\n  name: aws\ncurrent-context: aws\nkind: Config\npreferences: {}\nusers:\n- name: aws\n  user:\n    exec:\n      apiVersion: client.authentication.k8s.io/v1alpha1\n      command: aws-iam-authenticator\n      args:\n        - \"token\"\n        - \"-i\"\n        - \"latam\"\n"
  filename: "" => ".kube/config"
local_file.kubeconfig: Creation complete after 0s (ID: 73a74cc24de6ebfe8304a9b889415884fd819390)

Действия по воспроизведению

  1. terraform init
  2. terraform apply

Дополнительный

Должен применяться во всех компонентах, выводящих на печать

Самый полезный комментарий

Вышел https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0 , который добавляет поддержку sensitive_content , поэтому я думаю, что теперь эту проблему можно закрыть.

Все 14 Комментарий

Код на мастере реализует решение: sensitve_content . Что не согласуется с остальными ресурсами терраформирования, но, по крайней мере, это решение.

Однако кажется, что он еще не доступен в Terraform v0.11.10 и provider.local v1.1.0.

Это было реализовано в #9 еще в марте 2018 года, но еще не выпущено.

@alewando извините за медленный ответ здесь! Основная команда упорно работала над выпуском terraform 0.12, и, к сожалению, в результате некоторые вещи (например, этот провайдер!) остались без внимания.

Я добавлю это в закладки, чтобы напомнить себе, что нужно пройтись по ожидающим PR и опубликовать релиз. Спасибо за работу над этим конкретным вопросом, и спасибо за ваше терпение!

@mildwonkey Есть ли шанс получить релизную версию? Мы можем сделать форк и сделать новый релиз, но для того, чтобы добавить пользовательский плагин, потребуется много шаблонов в оркестровке Terraform.

@mildwonkey Опять же, я призываю к освобождению. Это легкая победа, которая может нам очень помочь.

@mildwonkey Я также думаю, что это была бы фантастическая функция, и с нетерпением жду ее выпуска. 🙂

Для тех, кто ищет временную альтернативу, вот что я сделал для экспорта учетных данных для нескольких баз данных RDS (у меня есть карта базы данных/пароля и мастер-пароль):

locals {
  databases = "${keys(var.shared_db_databases_passwords)}"
  manual_output = {
    endpoint  = "${module.shared_database.database_endpoint}"
    username  = "myusername"
    password  = "${var.shared_db_master_password}"
    port      = 5432
    databases = "${local.databases}"
    passwords = "${values(var.shared_db_databases_passwords)}"
  }
}

resource "null_resource" "manual_output" {
  triggers {
    databases = "${join(",", local.databases)}"
  }

  provisioner "local-exec" {
    command = "echo $DATA > manual_output.json"
    environment {
      DATA = "${jsonencode(local.manual_output)}" # Necessary to hide outputs
    }
  }
}

Вышел https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0 , который добавляет поддержку sensitive_content , поэтому я думаю, что теперь эту проблему можно закрыть.

спасибо @invidian !

Источник данных local_file также должен поддерживать sensitive_content

@ShahNewazKhan Вы говорите, что должен быть атрибут sensitive_content для источника данных local_file ? Если да, то какой вариант использования для этого?

@unacceptable Представьте, что вы устанавливаете содержимое ресурса local_file другим способом, чем фактически создаете ресурс local_file (или вы просто хотите прочитать существующий файл). Если этот контент в первую очередь является конфиденциальным, вам потребуется получить к нему доступ, не показывая его непосредственно в выводе или в tfstate.

Я думаю, что наличие этой функции имеет смысл. Источник данных local_file может иметь параметр sensitive_filename , указывающий, что содержимое должно быть помещено в свойство sensitive_content вместо contentcontent_base64 ). Однако это похоже на предложение новой функции. Может быть, нам стоит создать еще одну проблему, чтобы решить эту проблему?

Я только что создал его здесь:
https://github.com/terraform-providers/terraform-provider-local/issues/36

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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги