■ はじめに
https://dk521123.hatenablog.com/entry/2023/04/05/000224
https://dk521123.hatenablog.com/entry/2023/04/09/104204
https://dk521123.hatenablog.com/entry/2023/04/08/220411
の続き。 今回は、Terraform で AWS Secrets Manager について扱う。
目次
【1】Secrets Manager 【2】公式ドキュメント 【3】サンプル 【4】補足:ランダム文字列生成「random_password」「random_string」 1)使用上の注意 2)サンプル
【1】Secrets Manager
* Secrets Manager については、以下の関連記事を参照のこと
機密データの管理 ~ Secrets Manager 編 ~
https://dk521123.hatenablog.com/entry/2020/03/12/220717
【2】公式ドキュメント
* 以下のAPI を使う
aws_secretsmanager_secret
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret
aws_secretsmanager_secret_version
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret_version
【3】サンプル
# [0]-1 To define setting values locals { env = "dev" # or stage or prod aws_region = "us-west-2" } # [0]-2:To specify AWS provider "aws" { region = local.aws_region default_tags { tags = { env = local.env } } } # [Option] Create password resource "random_password" "demo_password" { length = 20 special = false } # Set your secret values variable "demo_secret_values" { default = { key1 = "secret_value1" key2 = "secret_value2" key3 = random_password.demo_password.result } type = map(string) } # aws_secretsmanager_secret resource "aws_secretsmanager_secret" "your_secret" { name = "your_secret_name" description = "This is a just sample secret..." } # aws_secretsmanager_secret_version resource "aws_secretsmanager_secret_version" "your_secret_version" { secret_id = aws_secretsmanager_secret.your_secret.id secret_string = jsonencode(var.demo_secret_values) }
【4】補足:ランダム文字列生成「random_password」「random_string」
random_password
https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password
random_string
https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string
1)使用上の注意
* random_stringは、パスワードには使用しないこと => 生成結果が標準出力として表示されるため
https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string
より抜粋 ~~~~~ This resource does use a cryptographic random number generator. ~~~~~
2)サンプル
# 実験コード resource "random_string" "experiment1" { length = 16 special = false override_special = "_%@" } resource "random_password" "experiment2" { length = 16 special = true override_special = "_%@" } output "experiment1" { value = random_string.experiment1.result sensitive = false } output "experiment2" { value = random_password.experiment2.result sensitive = true }
出力例
# 事前に「terraform init」「terraform plan」は行っておくこと # => ★1は、random_stringを使っていて内容が出力される # => ★2は、random_passwordを使っており出力されない $ terraform apply ・・・略・・・ random_string.experiment1: Refreshing state... [id=idl8DgafJYy8S9Nf] << ★1 random_password.experiment2: Refreshing state... [id=none] << ★2 ・・・略・・・ Outputs: experiment1 = "idl8DgafJYy8S9Nf" << ★1 experiment2 = <sensitive> << ★2
参考文献
https://ahyt910.hateblo.jp/entry/2021/07/04/142112
https://engineering.mobalab.net/2021/03/25/handling-secrets-with-terraform/
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ AWS S3 ~
https://dk521123.hatenablog.com/entry/2023/04/09/104204
Terraform ~ AWS IAM ~
https://dk521123.hatenablog.com/entry/2023/04/12/214311
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
Terraform ~ Docker ~
https://dk521123.hatenablog.com/entry/2023/04/10/193239
Terraform ~ 機密情報の扱いを考える ~
https://dk521123.hatenablog.com/entry/2023/05/18/005103
機密データの管理 ~ Secrets Manager 編 ~
https://dk521123.hatenablog.com/entry/2020/03/12/220717
Scala ~ AWS SDK / Secrets Managerサンプル ~
https://dk521123.hatenablog.com/entry/2023/04/03/012600
機密データの管理 ~ Secrets Manager / AWS CLI 編 ~
https://dk521123.hatenablog.com/entry/2022/06/14/110641