TerraformでVault読み書き

レイ
2023-12-07
2023-12-07

vaultproject-ar21お疲れ様です。おれちゃんでござる!

前回の記事と同様また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お楽しみにしてね ^^💦