Terraform for Secrets Manager のセットアップ
IBM Cloud 上のTerraformを利用することで、 IBM Cloud サービスの予測可能かつ一貫性のある構築が可能となり、Infrastructure as Code( IaC )の原則に従った、複雑で多層的なクラウド環境を迅速に構築できます。 IBM Cloud のCLIやAPI、SDKを使用する場合と同様に、 HashiCorp Configuration Language(HCL)を使用することで、 Secrets Manager インスタンスの作成、更新、削除を自動化できます。
IBM Cloud ソリューションでマネージド型 Terraform をお探しですか。 IBM Cloud® Schematics をお試しください。 Schematics では、使い慣れたTerraformスクリプト言語を使うことができる。 しかし、Terraformのコマンドラインや IBM Cloud Providerプラグインのセットアップやメンテナンスについて心配する必要はない。 Schematics は、 IBM Cloud カタログから簡単にインストールできる定義済みのTerraformテンプレートも提供している。
Terraform のインストールと Secrets Manager 用のリソースの構成
Terraform を使用して許可を作成する前に、以下のステップを完了していることを確認してください。
- Secrets Manager リソースを作成して操作するために 必要なアクセス権限 があることを確認します。
- Terraform CLI をインストールし、Terraform 用の IBM Cloud プロバイダー・プラグインを構成します。 詳しくは、 Getting started with Terraform on IBM Cloud のチュートリアルを参照してください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。
main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、 HashiCorp 構成言語を使用してリソースを定義します。 詳細については、 Terraformのドキュメントを参照してください。
-
構成ファイルの作成が完了したら、Terraform CLI を初期化します。 詳しくは、 作業ディレクトリーの初期化を参照してください。
terraform init -
main.tfファイル内のibm_resource_instanceリソース引数を使用して、 Secrets Manager インスタンスを作成します。- 以下の例の Secrets Manager インスタンスは、
secrets-manager-londonという名前で、eu-gb領域に試行計画とともに作成されます。user@ibm.comには、IAM アクセス・ポリシーの管理者役割が割り当てられます。 その他のサポート対象地域については、 地域とエンドポイント を参照してください。 プラン・オプションには、trialおよびstandardが含まれます。
resource "ibm_resource_instance" "sm_instance" { name = "Secrets Manager-London" service = "secrets-manager" plan = "trial" location = "eu-gb" timeouts { create = "60m" delete = "2h" }, }サポートされる属性の完全なリストについては、
ibm_resource_instanceを参照してください。オプションで、以下のコマンドを実行して、 IBM Cloudから既存の Secrets Manager インスタンスに関する情報を取得するためのデータ・ソースを作成できます。
data "ibm_resource_instance" "sm_resource_instance" { name = "Secrets Manager-London" location = "eu-gb" service = "secrets-manager" }サポートされる属性の完全なリストについては、
ibm_resource_instanceを参照してください。 - 以下の例の Secrets Manager インスタンスは、
-
main.tfファイルからリソースをプロビジョンします。 詳しくは、 Terraform を使用したインフラストラクチャーのプロビジョニングを参照してください。terraform planを実行して、提案されたアクションをプレビューするための Terraform 実行プランを生成します。
terraform planterraform applyを実行して、計画に定義されているリソースを作成します。
terraform apply -
リソースの作成時に使用する Secrets Manager インスタンスのローカル値を定義します。
locals { instance_id = data.ibm_resource_instance.sm_resource_instance.guid region = data.ibm_resource_instance.sm_resource_instance.location } -
UIの「 IBM Cloud 」リソース一覧から、作成した Secrets Manager インスタンスを選択し、そのインスタンスIDを確認してください。
-
アクセス・ポリシーが正常に割り当てられていることを確認します。 詳細については、割り当てられたアクセス権限をコンソールで確認を参照してください。
リソース・ドリフトの管理
Terraform を使用すると、宣言構成ファイルを使用して、インフラストラクチャーのライフサイクルを安全かつ予測可能な方法で管理できます。 インフラストラクチャーをコードとして管理する場合に存在する 1 つの課題は、ドリフトです。 ドリフトは、Terraform 構成変更の適用の外部でリソースが追加、削除、または変更されたときに発生します。 例えば、シークレットの有効期限が切れた場合や、シークレットがローテーションされた場合などです。 ドリフトを回避するには、常に Terraform を使用して、最初に Terraform で作成されたリソースを管理します。
Terraform 状態ファイルは、Terraform が管理するすべてのリソースのレコードです。 Terraform によって制御されるリソースを手動で変更してはなりません。手動で変更すると、実際のインフラストラクチャーから状態ファイルが非同期 (「ドリフト」) になるためです。 ご使用の状態と構成がインフラストラクチャーと一致しない場合、Terraform はインフラストラクチャーの調整を試みますが、意図せずにリソースを破棄または再作成する可能性があります。
Secrets Manager Terraform プロバイダーを使用している場合、以下のような場合にドリフトが発生することがあります。
- シークレットの有効期限
- シークレットの自動ローテーション
- Terraform によって制御される Secret Manager リソースに対する外部変更
Terraformプロジェクトを設計するときは、ドリフトとライフサイクルの変更を管理するためのTerraformのベストプラクティスに従って、 Secrets Manager リソースの意図しない破壊や再作成を避ける。
次のステップ
IBM Cloud上の Terraform を使用して最初の Secrets Manager サービス・インスタンスが正常に作成されたので、 Terraform レジストリーで Secrets Manager リソースとデータ・ソースを確認できます。 また、「方法」セクションに記載されている Terraform ステップに従って、 Secrets Manager リソースを管理する方法を確認することもできます。 例えば、Terraform を使用して 任意のシークレット を作成する方法に関する指示に従うことができます。
本番環境での導入には、エンタープライズ・レディなコンフィギュレーションを提供する IBM Cloud® Secrets Manager を検討してください。 Terraform IBM モジュールについて 学ぶ。