Help us understand the problem. What is going on with this article?

Terraform入門 - RDSのパスワード自動生成

More than 1 year has passed since last update.

概要

TerraformでRDSを立てる時にPasswordに入れる値ってどうしてますか?

方法

主にはterraform/variablesに書いてある方法

  1. 環境変数で渡す方法
    • export TF_VAR_secret_key=bar
    • -var 'secret_key=bar'
  2. 標準入力で渡す方法
    • variableをnullで定義しておく : variable "secret_key" {} (対話形式で入力が出来る)
  3. 自動生成する方法
  4. 固定で書いてしまう方法

課題

(1) の方法の場合、envファイルかコマンド実行時に毎回パラメーターを渡すかしないといけなくてめんどくさい。envファイルをいろんなひとに配るのもめんどくさい。けどenvを持ってる人じゃないと実行できない。

(2) の方法の場合、実行時に毎回聞かれる。(嘘の値を入れてもPasswordの更新は走らないわけだけどとてもめんどくさい)

(3) は(1)と(2)に比べればまともに運用しやすい。tfファイルにはコードは残らないので良い。

(4) はtfファイルにパスワード平文残していまう。

どの手法を使ってもtfstateファイルに平文が残ってしまう。tfstateファイルの管理方法によるが、ひと目に見えるrootパスワードというのはいかがなものだろう

解決方法

(3) で作って、その後手動でrootパスワードを更新してあげるのが安全に運用できそうだと思う。本当のrootパスワードはパスワードマネージャーで管理かな。

実装

(3)の実装は以下の感じです。

terraform version : 0.8.8

resource "random_id" "db_pswd" {
  byte_length = 8
  prefix      = "w)2v_r"
}

~~

resource "aws_rds_cluster" "aurora-cluster" {
    ~~
  master_password        = "${random_id.db_pswd.b64}"
    ~~
}

  • prefixは 0.8.8 からのattributeです。base64だと記号が含まれないので、ちょっとしたお気持ちでつけてみました。(作成後に手動変更もするので気持ちの問題だと思います…)

おまけ

random_idは以下の様な値がとれます

random_id.db_pswd:
  id = DRbsI2S5vck
  b64 = w)2v_rDRbsI2S5vck
  b64_std = w)2v_rDRbsI2S5vck=
  b64_url = w)2v_rDRbsI2S5vck
  dec = w)2v_r942218400924646857
  hex = w)2v_r0d26fc2364b9bdc9

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away