セキュリティ対策のベスト プラクティス
このドキュメントでは、 Trusted Cloud向け Terraform を安全に使用するためのガイドラインと推奨事項について説明します。Terraform を使用するには、対象のクラウド インフラストラクチャに対して機密性の高いアクセス権が必要です。セキュリティのベスト プラクティスに従うことで、関連するリスクを最小限に抑え、クラウド全体のセキュリティを改善できます。
このガイドでは Terraform の概要は説明しません。 Trusted Cloud by S3NSで Terraform を使用する方法については、Terraform を使ってみるをご覧ください。
リモート状態を使用する
Trusted Cloud のお客様には、Cloud Storage の状態バックエンドを使用することをおすすめします。このアプローチでは、チームとして共同作業できる状態が制限されます。また、状態と潜在的な機密情報をすべてバージョン管理から分離します。
リモート状態として使用されるバケットには、ビルドシステムおよび高い権限を持つ管理者のみがアクセスできるようにします。
開発環境の状態を誤ってソース管理に commit しないようにするには、Terraform の状態ファイルに gitignore を使用します。
状態を暗号化する
Trusted Cloud バケットは保存時に暗号化されますが、顧客指定の暗号鍵を使用して保護レイヤを追加できます。これを行うには、GOOGLE_ENCRYPTION_KEY
環境変数を使用します。状態ファイルに保存されるシークレットはないはずですが、常に追加の防御手段として状態を暗号化してください。
シークレットを状態に保持しない
Terraform には、状態ファイルに平文でシークレット値に保存するリソースやデータ プロバイダが多数あります。可能な限り、状態をシークレットに保存することは避けてください。シークレットを平文で保存するプロバイダの例を次に示します。
機密出力をマークする
手動で機密性の高い値を暗号化する代わりに、Terraform の組み込みの機密状態管理サポートを使用します。機密性の高い値を出力にエクスポートするときは、値を必ず「機密」とマークしてください。
職掌分散を確保する
ユーザーがアクセスできない自動システムから Terraform を実行できない場合は、権限とディレクトリを分離して職掌分散を確保してください。たとえば、ネットワーク プロジェクトは、そのプロジェクトにアクセスが制限されているネットワーク Terraform サービス アカウントまたはユーザーに対応します。
継続的な監査を実施する
terraform apply
コマンドの実行後、自動セキュリティ チェックを実行します。これらのチェックにより、インフラストラクチャが安全な状態からずれないようにすることができます。この種のチェックでは、次のツールが有効です。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-08 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-08-08 UTC。"],[[["Utilize the Cloud Storage state backend for Terraform state management to enable team collaboration and separate sensitive information from version control."],["Encrypt the Terraform state using customer-supplied encryption keys via the `GOOGLE_ENCRYPTION_KEY` environment variable, even though no secrets should be in the state file."],["Avoid storing secrets directly within the Terraform state file, as certain providers like `vault_generic_secret` and `google_service_account_key` may store them in plaintext."],["Mark sensitive outputs as such within Terraform configurations to prevent the exposure of sensitive data in command-line output and implement separation of duties by restricting access to Terraform resources."],["Implement pre-apply checks with tools like `gcloud terraform vet` and continuous audits using Security Health Analytics, InSpec, or Serverspec to detect security regressions and ensure infrastructure security."]]],[]]