Terraform-provider-local: local_file seharusnya tidak mencetak informasi sensitif dalam output jika sensitif = true

Dibuat pada 22 Agu 2018  ·  14Komentar  ·  Sumber: hashicorp/terraform-provider-local

_Masalah ini awalnya dibuka oleh @mtheus sebagai hashicorp/terraform#18718. Itu dimigrasikan ke sini sebagai akibat dari pemisahan penyedia . Isi asli masalah ada di bawah._


Versi Terraform

Terraform v0.11.8

File Konfigurasi Terraform

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

Keluaran Debug

Perilaku yang Diharapkan

Informasi sensitif sepertinya tidak ada di output

Perilaku Sebenarnya

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)

Langkah-langkah untuk Reproduksi

  1. terraform init
  2. terraform apply

Yang saling melengkapi

Harus berlaku di semua komponen yang mencetak output

Komentar yang paling membantu

https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0 sekarang keluar, yang menambahkan dukungan untuk sensitive_content , jadi saya pikir masalah ini sekarang dapat ditutup.

Semua 14 komentar

Kode di master mengimplementasikan solusi: sensitve_content . Yang tidak konsisten dengan sumber daya terraform lainnya tetapi setidaknya ini adalah solusinya.

Namun sepertinya belum tersedia di Terraform v0.11.10 dan provider.local v1.1.0.

Ini diterapkan di # 9 pada Maret 2018, tetapi belum dirilis.

@alewando maaf atas slow respon disini! Tim inti telah bekerja keras pada rilis terraform 0.12 dan sayangnya beberapa hal (seperti penyedia ini!) telah diabaikan sebagai hasilnya.

Saya akan menandai ini untuk mengingatkan diri saya sendiri untuk melewati PR yang tertunda dan menerbitkan rilis. Terima kasih telah menangani masalah khusus ini, dan terima kasih atas kesabaran Anda!

@mildwonkey Apakah ada kemungkinan untuk mendapatkan potongan rilis? Kami dapat melakukan fork dan melakukan rilis baru tetapi membutuhkan banyak pelat boiler dalam orkestrasi Terraform untuk menarik plugin khusus.

@mildwonkey Sekali lagi, saya meminta rilis. Ini kemenangan yang mudah dan bisa banyak membantu kami.

@mildwonkey Saya juga berpikir bahwa ini akan menjadi fitur yang fantastis, dan menantikan rilisnya. 🙂.

Bagi mereka yang mencari alternatif sementara, itulah yang saya lakukan untuk mengekspor kredensial untuk beberapa basis data RDS (Saya memiliki peta basis data/kata sandi dan kata sandi utama):

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 sekarang keluar, yang menambahkan dukungan untuk sensitive_content , jadi saya pikir masalah ini sekarang dapat ditutup.

terima kasih @invidian !

Sumber data local_file juga harus mendukung sensitive_content

@ShahNewazKhan Apakah Anda mengatakan bahwa harus ada atribut sensitive_content untuk sumber data local_file ? Jika demikian, apa yang akan menjadi use case untuk ini?

@unacceptable Bayangkan Anda mengatur konten sumber daya local_file melalui cara yang berbeda dari sebenarnya membuat sumber daya local_file (atau Anda hanya ingin membaca file yang ada). Jika konten itu sensitif sejak awal, Anda harus mengaksesnya tanpa menampilkannya langsung di output atau di tfstate.

Saya pikir memiliki fungsi ini masuk akal. local_file sumber data dapat memiliki parameter sensitive_filename , yang akan menunjukkan, bahwa konten harus diletakkan di properti sensitive_content alih-alih content (dan content_base64 ). Namun, itu sepertinya proposal fitur baru. Mungkin kita harus membuat masalah lain untuk mengatasinya?

Saya baru saja membuatnya di sini:
https://github.com/terraform-providers/terraform-provider-local/issues/36

Saya percaya opsi harus ada dalam struktur data, jadi dimungkinkan tidak hanya untuk mendapatkan sensitive_content dari file yang ditentukan melalui sumber daya local_file tetapi juga untuk mendapatkannya dari file yang ada.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat