Hyper Protect Crypto Services 標準プラン用の Terraform のセットアップ
Terraform on IBM Cloud® は、IBM Cloud サービスの予測性の高い安定したプロビジョニングを可能にして、Infrastructure as Code (IaC) の原則に従って高度なマルチレイヤ―・クラウド環境を高速ビルドできるようにします。 IBM Cloud CLI または API および SDK を使用する場合と同様に、HashiCorp 構成言語 (HCL) を使用して、Hyper Protect Crypto Services インスタンスのプロビジョニング、更新、および削除を自動化できます。
このトピックでは、 Hyper Protect Crypto Services 標準プラン用に Terraform をセットアップする方法についてのみ説明します。
IBM Cloud ソリューションでマネージド型 Terraform をお探しですか。 IBM Cloud® Schematics をお試しください。 Schematics では、使い慣れた Terraform スクリプト言語を使用できますが、Terraform コマンド・ラインと IBM Cloud プロバイダー・プラグインのセットアップとメンテナンスを懸念する必要はありません。Schematics では、IBM Cloud カタログから簡単にインストールできる事前定義済みの Terraform テンプレートもご用意しています。
始める前に、Hyper Protect Crypto Services リソースを作成して使用するために必要なアクセス権限を持っていることを確認してください。
例: Terraform を使用したサービス・インスタンスのプロビジョニングと初期設定
Terraform を使用して Hyper Protect Crypto Services インスタンスの作成と初期設定を行うには、以下の手順を実行します。
-
Terraform on IBM Cloud の入門チュートリアルに従って、Terraform CLI をインストールし、Terraform 用の IBM Cloud Provider プラグインを構成します。
このプラグインは、IBM Cloud サービスのインスタンスとリソースのプロビジョン、更新、削除に使用される Hyper Protect Crypto Services API を抜き出したものです。 推奨される Terraform バージョンは 0.13.x、0.14.x、および 0.15.x です。
versions.tfファイルで、versionパラメーターに1.29.0を指定する必要があります。 -
暗号装置の管理者署名鍵をセットアップします。 管理者署名鍵の作成方法としては、次の方法から選択できます。
-
IBM Cloud の Trusted Key Entry (TKE) の CLI プラグインを使用する
こちらの手順に従って TKE CLI プラグインをインストールして構成したら、コマンド
ibmcloud tke sigkey-addを使用して管理者署名鍵を作成できます。 署名鍵はパスワードで保護されたファイルに入れられ、ローカル・ワークステーションで保管されます。 このファイルのパスは、環境変数CLOUDTKEFILESで指定します。 -
サード・パーティーの署名サービスを使用する
サード・パーティー署名サービスを使用して、TKE CLI プラグインと Terraform の両方で使用される署名キーの作成、保管、アクセスが可能です。 TKE CLI プラグインで署名サービスを使用できるようにするには、ローカル・ワークステーションで、
TKE_SIGNSERV_URL環境変数に、署名サービスが実行されている URL とポート番号を設定する必要があります。 Terraform で署名サービスを使用できるようにするには、リース・ブロックでsignature_server_urlパラメーターに同じ値を設定する必要があります。
-
-
main.tfと同じフォルダーに、Terraform 構成ファイルversions.tfを作成します。 このファイルに、対応するアクションを実行するための構成を追加します。以下のテンプレートは、運用暗号装置を 2 台備えた Hyper Protect Crypto Services インスタンスを
us-southリージョンにプロビジョンする構成ファイルの例です。 このインスタンスは、標準価格プランに基づいて課金され、2 人の管理者によって初期設定されます。 マスター鍵は、インスタンスに割り当てられたリカバリー用暗号装置に自動的に生成されます。 署名鍵は、TKE CLI プラグインを使用して作成され、ローカルの保護ファイルに保管されています。Terraform を使用した Hyper Protect Crypto Services インスタンスの初期化は、マドリッド (
eu-es) 以外の地域でサポートされています。 手動初期化について詳しくは、 サービス・インスタンス初期化アプローチの概要 を参照してください。resource ibm_hpcs hpcs { location = "us-south" name = "test-hpcs" plan = "standard" units = 2 signature_threshold = 1 revocation_threshold = 1 admins { name = "admin1" key = "/cloudTKE/1.sigkey" token = "sensitive1234" } admins { name = "admin2" key = "/cloudTKE/2.sigkey" token = "sensitive1234" } } resource "ibm_iam_user_policy" "policy" { ibm_id = "user@ibm.com" roles = ["Manager"] resources { service = "test-hpcs" resource_instance_id = element(split(":", ibm_resource_instance.hpcs.id), 7) } }実稼働環境では、署名鍵ファイルのパスワードまたは署名サービスのトークンは、構成ファイルに平文で書き込んでおくのではなく、Terraform の適用処理時に指定することをお勧めします。 その場合は、Terraform コマンドの実行時に認証パスワードまたは認証トークンの入力を求めるプロンプトが表示されます。 インスタンスを初期設定すると、パスワードまたはトークンとして入力した値が、
.tfstateファイルに保管されます。 Terraform での機密データの保護について詳しくは、 状態の機密データを参照してください。次の表に、Terraform を使用してサービス・インスタンスの作成と初期設定を行う場合にサポートされるパラメーターを示します。
表 1. Terraform を使用してサービス・インスタンスをプロビジョニングするためにサポートされるパラメーター パラメーター 説明 name必須。 Hyper Protect Crypto Services インスタンスの名前。 location必須。 サービス・インスタンスの運用暗号装置が配置される地理的領域を表すリージョンの省略形 ( us-southなど)。 詳細については、リージョンおよびロケーションを参照してください。 リカバリー暗号装置はマドリッド (eu-es) ではサポートされていないため、この地域でのインスタンス初期化に Terraform を使用することはできません。plan必須。 サービス・インスタンスの料金プラン。 units必須。 サービス・インスタンスの運用暗号装置の台数。 有効な値は 2 または 3 です。 failover_unitsオプション。 サービス・インスタンスのフェイルオーバー用暗号装置の台数。 有効な値は 0、2、または 3 です。この数は、運用暗号装置の台数以下でなければなりません。 0 に設定すると、リージョン間の高可用性は利用できません。 現在、このオプションを有効にできるのは、 us-southとus-eastのリージョンのみです。 値を指定しない場合、デフォルト値は 0 です。service_endpointsオプション。 サービス・インスタンスへのネットワーク・アクセス。 有効な値は、 public-and-privateおよびprivate-onlyです。 値を指定しない場合、デフォルト設定はpublic-and-privateです。tagsオプション。 インスタンスにタグを関連付けてリソースの編成に使用できます。 タグについて詳しくは、タグの操作を参照してください。 resource_group_idオプション。 サービス・インスタンスの編成と管理を行うリソース・グループ。 値を指定しない場合、デフォルトのリソース・グループは Defaultです。signature_threshold必須。 管理コマンドの実行に必要な管理者署名の数。 有効な値の範囲は 1 から 8 です。 クォーラム認証を有効にするには、少なくとも 2 に設定する必要があります。 revocation_threshold必須。 インプリント・モードの終了後に管理者を削除するために必要な管理者署名の数。 有効な値の範囲は 1 から 8 です。 admins必須。 インスタンスの暗号装置の管理者のリスト。 管理者は最大 8 人設定できます。この数は、指定するしきい値以上である必要があります。 管理者ごとに以下の値を設定する必要があります。 name:
管理者の名前。 長さは 30 文字以下でなければなりません。key:
- TKE CLI プラグインによって作成され、サード・パーティーの署名サービスを使用していないローカル・ワークステーション上で署名鍵ファイルを使用する場合は、使用する署名鍵ファイルの絶対パスとファイル名を指定します。
- 署名サービスを使用して署名鍵を渡す場合は、署名サービスの定義に基づいて署名鍵の名前を指定します。 鍵の名前の文字ストリングは、署名サービスに送信される URI に付加されます。この文字ストリングには、 RFC3986 のセクション 2.3 で定義された非予約文字のみを含める必要があります。
トークン:
- TKE CLI プラグインによって作成され、サード・パーティーの署名サービスを使用しないローカル・ワークステーション上で署名鍵ファイルを使用する場合。 対応する署名鍵ファイルにアクセスするための管理者パスワードを指定します。
- 署名サービスを使用して署名鍵を渡す場合は、署名サービスの定義に基づいて、署名鍵の使用を許可するトークンを指定します。
注: トークン・パラメーターはオプションです。 トークンを指定しない場合は、Terraform コマンドの実行時にトークンの値の入力を求めるプロンプトが表示されます。 インスタンスを初期設定すると、token パラメーターに入力した値が
.tfstateファイルに保管されます。 Terraform での機密データの保護について詳しくは、 状態の機密データ を参照してください。signature_server_urlオプション。 署名サービスが実行されている URL およびポート番号。 サード・パーティーの署名サービスを使用して管理者署名鍵を渡す場合は、このパラメーターを指定する必要があります。 main.tfファイルで複数のサービス・インスタンスを管理する場合は、各インスタンスに必ず同じsignature_server_urlパラメーターを設定してください。 そうしないと、アクションを正常に実行できません。 -
以下のコマンドを使用して、Terraform CLI を初期化します。
terraform init -
以下のコマンドを使用して、Terraform 実行プランを作成します。 Terraform 実行プランは、アカウントで Hyper Protect Crypto Services インスタンスを作成するために実行する必要があるすべてのアクションをまとめたものです。
terraform plan -
Terraform を適用して、Hyper Protect Crypto Services インスタンスの作成と初期設定を行います。
terraform apply -
Hyper Protect Crypto Services インスタンスが IBM Cloud リソース・リストから作成および初期化されているかどうかを確認します。
-
アクセス・ポリシーが正常に割り当てられていることを確認します。 詳しくは、 UI での割り当てられたアクセス権限の確認 を参照してください。
次のステップ
- Terraform を使用した Hyper Protect Crypto Services インスタンスの管理について詳しくは、 Terraform の資料- Hyper Protect Crypto Servicesを参照してください。
- 鍵の作成や鍵ポリシーの設定など、Terraform を使用したその他の鍵管理の例については、 Terraform 資料-鍵管理サービスを参照してください。 この資料には、引数と属性の完全なリファレンスもリストされています。