Terraform Provider

Terraformビルドでシークレットにアクセス

機能

Keeper Terraformプラグインは、Keeperシークレットマネージャーを利用してKeeperボルトに保存されたシークレット認証情報にアクセスします。このプラグインを使うことで、Keeperのゼロ知識インフラを活用し、Terraformのビルド環境にシークレットを安全に直接挿入できます。

  • Terraformのビルドで使用するシークレットをKeeperボルトから取得します

  • Terraformのビルドスクリプトにクレデンシャルを直接注入します

  • Keeperボルトからファイルを取得します

Keeperシークレットマネージャー機能の完全なリストについては、概要のページをご参照ください。

要件

本ページでは、シークレットマネージャーとTerraformとの連携について説明します。この連携を利用するための要件は以下のとおりです。

インストール

レジストリのインストール

Keeperシークレットマネージャープロバイダのページはこちらです

このプロバイダをインストールするには、Terraformの設定に以下のコードを追加して、terraform initを実行します。

手動インストール

GitHubリリースページからご利用のプラットフォーム用の最新バージョンのTerraformプロバイダをダウンロードし、そのアーカイブを対応するTerraformプラグインフォルダにコピーします (パスに不足しているフォルダがあれば作成します)。完全なプロバイダURLでソースを初期化します ( "github.com/keeper-security/secretsmanager")。

Terraformプロバイダを手動でインストールする方法については、Terraformの公式ドキュメントをご参照ください。

使用方法

プロバイダを設定

Keeperシークレットマネージャープロバイダを使用して、Keeperシークレットマネージャーでサポートされているリソースと連携します。プロバイダを使用できるようにするには、Keeperのクレデンシャルを使用してプロバイダを設定する必要があります。

構成ファイルの内容

  • app_key - (必須) アプリケーションキー。

  • client_id - (必須) クライアントID。

  • private_key - (必須) 秘密鍵。

  • hostname - (オプション) デフォルトでは、プラグインは keepersecurity.com に接続します

シークレットマネージャーの構成の作成について、詳しくはこちらのページのをご参照ください。

データソースを使用してシークレットを取得

Keeperの標準レコードタイプごとにデータソースが用意されているため、シークレットのクレデンシャルを簡単に取得できます。

データソースには、以下の形式を使用してアクセスします。

たとえば、ログインタイプのレコードを使用する場合は、以下のようになります。

ユーザーが定義したレコードタイプの追加のカスタムフィールドまたは標準フィールドにアクセスするには、secretsmanager_field データソースを使用します。

サポートされているレコードタイプの一覧

レコードタイプ
データソース名

"secretsmanager_address"

"secretsmanager_bank_account"

"secretsmanager_bank_card"

"secretsmanager_birth_certificate"

"secretsmanager_contact"

"secretsmanager_database_credentials"

"secretsmanager_drivers_license"

"secretsmanager_encrypted_notes"

"secretsmanager_field"

"secretsmanager_file"

"secretsmanager_health_insurance"

"secretsmanager_login"

"secretsmanager_membership"

"secretsmanager_passport"

"secretsmanager_photo"

"secretsmanager_record"

"secretsmanager_server_credentials"

"secretsmanager_software_license"

"secretsmanager_ssh_keys"

"secretsmanager_ssn_card"

各データソースで使用可能なフィールドについては、レコードタイプのデータソースリファレンスをご参照ください。

レコードタイプの詳細は、レコードタイプのページおよびコマンダー使用法のページをご参照ください

レコードフィールドにアクセス

レコードのフィールドに保存されたシークレットのクレデンシャルにアクセスするには、データソースの一部としてフィールドにアクセスします。

タイプ指定されたレコードのデータソースのフィールドにアクセス

以下の形式を使用して、タイプ指定されたデータリソースのフィールドにアクセスします。

以下は、ログインタイプのデータソースのパスワードへのアクセスとなります。

フィールドデータソースを使用し、Keeper表記法でレコード内の任意のフィールドを照会

"secretsmanager_field"データソースタイプを使用してデータソースを作成し、pathプロパティでフィールドクエリを指定します。

フィールドクエリでは、"<UID>/field/<field type>"という形式が使用されます。

リソースを使用したレコードの作成

Keeperでは、上記の主要なKeeperレコードタイプ用のTerraformリソースがご利用になれます。 これらのリソースを利用し、KeeperシークレットマネージャーのTerraformプラグインを使用してKeeperのレコードを作成できます。

レコードを作成するには、使用したいレコードタイプに対応するリソースを使用します。

各レコードのリソースには、少なくともfolder_uidtitle、および各レコードフィールドの値が必要となります。

ログインリソースの例

フォルダUID

レコードを作成するには、Keeperシークレットマネージャーが新しいレコードを作成する場所を認識できるように、フォルダのUIDが必要となります。

フォルダUIDは、KeeperボルトまたはKeeperコマンダーを使用して確認できます。

指定したフォルダには、Terraformプラグインで使用されているKeeperシークレットマネージャーアプリケーションがアクセスできる必要があります。また、Keeperシークレットマネージャーによって使用される前に、フォルダに少なくとも1つのレコードが格納されている必要があります。

タイトル

レコードタイトル。

レコードフィールド

レコードの各フィールドの値と設定は、リソースで設定できます。 レコードタイプごとの利用可能なフィールドについては、リソース定義をご参照ください。

各フィールドは、リソース内ではオブジェクトとして表記されます。

ログインフィールドの例

フィールド値を設定

各フィールドの値を設定するには、valueフィールドを使用してください。フィールドの形式については、loginフィールドタイプは文字列を受け取りますが、nameフィールドは「first」「middle」「last」フィールドを持つオブジェクトを受け取るなど、異なる場合があります。

各フィールドの値の形式については、リソースのドキュメントをご参照ください。

フィールドの設定を指定

各フィールドは、様々な設定で構成できます。

フィールド
有効な値
説明

label

string

フィールドラベル

required

boolean

Trueの場合、このフィールドはKeeperボルトで必須と見なされます

privacy_screen

boolean

Trueの場合、このフィールドはKeeperボルトで非表示になります

パスワードフィールド

パスワードフィールドにはいくつかの特別な機能があります。

パスワード生成

Terraformプラグインを使用して作成されたレコードには、パスワードが自動的に生成されます。 プラグインでパスワードを生成するには、パスワードにvalueフィールドを指定せず、代わりにgenerate = "True"を使用します

パスワード生成は、complexityフィールドを使用して、指定した長さのパスワードを生成するように設定できます。

また、パスワードフィールドには、enforce_generationという設定があります。これがtrueの場合、パスワードの生成のみを可能にし、ユーザーによるパスワード設定はできないようにKeeperボルトに強制適用します。

Terraformにパスワードを再生成させるには、generateフィールドの相違を認識させる必要があります。 相違を認識できるように、generateフィールドは「true」と「yes」の両方の値を受け入れます。 一方から他方への変更が再生成のトリガーになります。

認証情報の読み取り

この例では、Keeperシークレットマネージャーをプロビジョニングして、ログインタイプのデータソースを読み取り、データソースの各フィールドにアクセスします。

Keeperのレコードを作成

その他の例については、ソースコードのexamplesフォルダをご参照ください。

最適化

secretsmanager_records データソースを使用すると、1回のAPIコールで複数のKeeperシークレットマネージャーのレコードを取得でき、多数のシークレットを扱う場合でもAPIリクエストの回数を大幅に減らし、パフォーマンスを向上させることができます。この機能は、数十または数百のシークレットを取得する必要がある場合に特に有効で、各レコードごとに個別のAPIコールを行う代わりに、リクエストをまとめて処理します。

最終更新