aws_ssm_parameter の value を ignore_change に指定しない
概要
これまで秘密情報は以下の様な取り扱いをしていることが多かったです。
1 | resource "aws_ssm_parameter" "master_password" { |
1 | data "aws_ssm_parameter" "master_password" { |
上記いずれの場合にも、事前に Parameter Store への登録が必須です。
つまり、terraform で管理されない作業が発生していることになります。
対応ステップ
terraform で完結させる方法としては、パラメータストアに登録する value を暗号化して登録することです。
1 | resource "aws_kms_key" "a" { |
- aws kms encrypt で値を暗号化
1 | aws kms encrypt --key-id <key-id> --plaintext <value> |
- data.aws_kms_secrets で取得した値をパラメータストアに登録する
1 | data "aws_kms_secrets" "parameters" { |
パラメータストアに登録という前提では resource "aws_ssm_parameter"
の処理が必要でしたが、以下の様に直接リソースへの指定も可能です。
1 | resource "aws_rds_cluster" "example" { |
まとめ
悩んだ時に公式ドキュメントを見ると解決されていることが本当に多いです。
ちなみに、
KMS キーで暗号化するのは誰がするか?と考えると、おそらく terraform のコードを書いている方になろうかと思いますが、
その施行者には KMS キーで暗号化する権限が必要になります。
- kms:Encrypt
以上
参考になれば幸いです。
aws_ssm_parameter の value を ignore_change に指定しない
https://kenzo0107.github.io/2020/05/31/2020-06-01-terraform-sensitive-data/