
जानबूझकर कमजोर बनाया गया Terraform बुनियादी ढांचा, जो AWS, Azure और GCP में क्लाउड गलत कॉन्फ़िगरेशन पहचान और DevSecOps प्रथाओं को सीखने के लिए है।
TerraGoat, Bridgecrew का "डिज़ाइन द्वारा संवेदनशील" Terraform रिपॉजिटरी है।

TerraGoat, Bridgecrew का "डिज़ाइन द्वारा संवेदनशील" Terraform रिपॉजिटरी है। TerraGoat एक सीखने और प्रशिक्षण परियोजना है जो प्रदर्शित करती है कि कैसे सामान्य कॉन्फ़िगरेशन त्रुटियाँ उत्पादन क्लाउड वातावरण में पहुँच सकती हैं।
TerraGoat को DevSecOps टीमों को एक स्थायी गलत-कॉन्फ़िगरेशन रोकथाम रणनीति डिज़ाइन और लागू करने में सक्षम बनाने के लिए बनाया गया था। इसका उपयोग Bridgecrew और Checkov जैसे पॉलिसी-एज़-कोड फ्रेमवर्क, इनलाइन-लिंटर्स, प्री-कमिट हुक या अन्य कोड स्कैनिंग विधियों का परीक्षण करने के लिए किया जा सकता है।
TerraGoat मौजूदा *Goat परियोजनाओं की परंपरा का अनुसरण करता है जो क्लाउड इन्फ्रास्ट्रक्चर के लिए सुरक्षित विकास सर्वोत्तम प्रथाओं को लागू करने का अभ्यास करने के लिए एक बुनियादी प्रशिक्षण मैदान प्रदान करते हैं।
कृपया आगे बढ़ने से पहले इन चेतावनियों पर ध्यान दें:
⚠️ TerraGoat आपके खाते में जानबूझकर संवेदनशील AWS संसाधन बनाता है। TerraGoat को उत्पादन वातावरण या किसी भी संवेदनशील AWS संसाधनों के साथ तैनात न करें।
उत्पादन में संवेदनशील इन्फ्रास्ट्रक्चर को आने से रोकने के लिए देखें: Bridgecrew और checkov, इन्फ्रास्ट्रक्चर एज़ कोड के लिए ओपन सोर्स स्टैटिक विश्लेषण उपकरण।
आप एकल AWS खाते में TF_VAR_environment पैरामीटर का उपयोग करके कई TerraGoat स्टैक तैनात कर सकते हैं।
export TERRAGOAT_STATE_BUCKET="mydevsecops-bucket" export TF_VAR_company_name=acme export TF_VAR_environment=mydevsecops export TF_VAR_region="us-west-2"
aws s3api create-bucket --bucket $TERRAGOAT_STATE_BUCKET
--region $TF_VAR_region --create-bucket-configuration LocationConstraint=$TF_VAR_region
aws s3api put-bucket-versioning --bucket $TERRAGOAT_STATE_BUCKET --versioning-configuration Status=Enabled
aws s3api put-bucket-encryption --bucket $TERRAGOAT_STATE_BUCKET --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms" } } ] }'
#### TerraGoat (AWS) लागू करें```bash
cd terraform/aws/
terraform init \
-backend-config="bucket=$TERRAGOAT_STATE_BUCKET" \
-backend-config="key=$TF_VAR_company_name-$TF_VAR_environment.tfstate" \
-backend-config="region=$TF_VAR_region"
terraform apply
terraform destroy
#### एकाधिक TerraGoat AWS स्टैक बनाना```bash
cd terraform/aws/
export TERRAGOAT_ENV=$TF_VAR_environment
export TERRAGOAT_STACKS_NUM=5
for i in $(seq 1 $TERRAGOAT_STACKS_NUM)
do
export TF_VAR_environment=$TERRAGOAT_ENV$i
terraform init \
-backend-config="bucket=$TERRAGOAT_STATE_BUCKET" \
-backend-config="key=$TF_VAR_company_name-$TF_VAR_environment.tfstate" \
-backend-config="region=$TF_VAR_region"
terraform apply -auto-approve
done
cd terraform/aws/
export TF_VAR_environment = $TERRAGOAT_ENV
for i in $(seq 1 $TERRAGOAT_STACKS_NUM)
do
export TF_VAR_environment=$TERRAGOAT_ENV$i
terraform init
-backend-config="bucket=$TERRAGOAT_STATE_BUCKET"
-backend-config="key=$TF_VAR_company_name-$TF_VAR_environment.tfstate"
-backend-config="region=$TF_VAR_region"
terraform destroy -auto-approve
done
### Azure सेटअप
#### इंस्टॉलेशन (Azure)
आप एकल Azure सब्सक्रिप्शन में पैरामीटर `TF_VAR_environment` का उपयोग करके कई TerraGoat स्टैक्स तैनात कर सकते हैं।
#### Terraform स्थिति रखने के लिए Azure Storage Account बैकएंड बनाएं```bash
export TERRAGOAT_RESOURCE_GROUP="TerraGoatRG"
export TERRAGOAT_STATE_STORAGE_ACCOUNT="mydevsecopssa"
export TERRAGOAT_STATE_CONTAINER="mydevsecops"
export TF_VAR_environment="dev"
export TF_VAR_region="westus"
# Create resource group
az group create --location $TF_VAR_region --name $TERRAGOAT_RESOURCE_GROUP
# Create storage account
az storage account create --name $TERRAGOAT_STATE_STORAGE_ACCOUNT --resource-group $TERRAGOAT_RESOURCE_GROUP --location $TF_VAR_region --sku Standard_LRS --kind StorageV2 --https-only true --encryption-services blob
# Get storage account key
ACCOUNT_KEY=$(az storage account keys list --resource-group $TERRAGOAT_RESOURCE_GROUP --account-name $TERRAGOAT_STATE_STORAGE_ACCOUNT --query [0].value -o tsv)
# Create blob container
az storage container create --name $TERRAGOAT_STATE_CONTAINER --account-name $TERRAGOAT_STATE_STORAGE_ACCOUNT --account-key $ACCOUNT_KEY
cd terraform/azure/
terraform init -reconfigure -backend-config="resource_group_name=$TERRAGOAT_RESOURCE_GROUP"
-backend-config "storage_account_name=$TERRAGOAT_STATE_STORAGE_ACCOUNT"
-backend-config="container_name=$TERRAGOAT_STATE_CONTAINER"
-backend-config "key=$TF_VAR_environment.terraform.tfstate"
terraform apply
#### TerraGoat (Azure) हटाएं```bash
terraform destroy
आप TF_VAR_environment पैरामीटर का उपयोग करके एक ही GCP प्रोजेक्ट में कई TerraGoat स्टैक तैनात कर सकते हैं।