お疲れ様です。おれちゃんでござる!
前回の記事と同様またTerraformの話をしたいとおもいます。でも今回はTerraformのコードを構築する際に便意で使えそうなツールとそのツールの使い方を紹介したいと思います。
Vaultとは
Terraformコードで構築を作る時にデータベースパスワードやIAMユーザーのアクセスキーなどを作成する必要が時々あります。この情報が生成した際に、Terraformのlocals(リソースの変数の値を表示する関数)で表示しかったらパスワードの値がわからなくなる。でも逆に表示したらセキュリティ的にあんまり良くないです。
そこでVaultが登場します。
Vaultは、シークレット(秘密情報)やプロテクトドデータ(機密情報)のセキュアな管理を提供するためのオープンソースのツールです。Vaultは、クレデンシャル(認証情報)、APIキー、パスワードなどの秘密情報を安全に格納し、アクセス制御を強化するために使用できます。また、Vaultはさまざまな認証方式をサポートし、アクセスポリシーによってアクセス権を細かく制御することができます。
TerraformのVaultプロバイダーがいますから簡単にコードで情報保管よ読み取りできます。
TerraformのVault設定
先ずはTerraformのbackend.tfというファイルにプロバイダー設定が揃っていますのでVaultの情報も追加する必要があります。
上記の設定でVaultプロバイダーとそのバージョンを記入でき、アドレスやクレデンシャルなど追加したらVaultが使えるようになります。
Vaultプロバイダーのリソースは下記のドキュメンテーションに書いています。
https://registry.terraform.io/providers/hashicorp/vault/latest/docs
TerraformでVaultの使い方
backend.tfに設定し終わったら他のTerraformファイルでVaultリソースを使えます。ここに読み取りと書き込みの二つの例をあげたいと思います。
上記ではAWSのキーペア用のRSAキーをTLSリソースで生成してからVaultのPathのところで保管します。保管される情報は秘密的にVaultへ提供される。故に、以後このキーのアクセスは厳しく制御されてるので妥当なトーケンでしかアクセスできなくなります。
上記ではdataでVaultのPathを変数にして、aws_acm_certificateリソースでVaultで保管されたデータで情報を書き込みます。
こうすればCertificateをVaultで保管して、Terraformで情報を読み取ってACMリソースを安全に作れます。
最後に
これで繊細情報や証明証まではTerraformで使えます。DBのパスワードなどもどんな繊細情報をこの仕組みで綺麗に、安全に保管できます。
また次のTipsお楽しみにしてね ^^💦