अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ SCS-C03 परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आपके पास सादे Terraform का उपयोग करके वे चार सुरक्षा प्राइमिटिव उपलब्ध होंगे जो हर AWS खाते में पहले दिन से होने चाहिए - स्वचालित रोटेशन के साथ एक ग्राहक-प्रबंधित KMS कुंजी, अनपेक्षित क्रॉस-अकाउंट या सार्वजनिक एक्सेस के लिए स्कैन करने वाला एक IAM Access Analyzer, थ्रेट-इंटेल फ़ीड के साथ चालू GuardDuty, और एक केंद्रीकृत ऑडिट-लॉग बकेट जिसमें अन्य वर्कलोड लिखते हैं। यह SCS-C03 की सुरक्षित-डिफ़ॉल्ट आधारभूत संरचना है।
प्रत्येक संसाधन सादा Terraform है — वही कोड OpenTofu पर बिना किसी संशोधन के काम करता है। कोई वेरिएबल नहीं, कोई मॉड्यूल नहीं। स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply चरण-दर-चरण चलाएँ।
>= 1.5 या OpenTofu >= 1.6।us-east-1 के लिए AWS CLI प्रमाणित।यहां की चार सेवाओं में से तीन नए खातों के लिए मुफ्त हैं; एक का वास्तविक बिल है:
यदि आप इस आधारभूत संरचना को एक वास्तविक खाते पर चालू रखते हैं, तो कुल मिलाकर लगभग $5–15/माह का भुगतान करने की अपेक्षा करें। यह आपको मिलने वाली दृश्यता के लिए सस्ता है। यदि आप नहीं चाहते हैं तो लैब के बाद हटा दें।
मानक शुरुआत। SCS-C03 दायरे में प्रदाता- और क्षेत्र-अज्ञेयवादी है, लेकिन एक सुरक्षित आधारभूत संरचना को प्रति क्षेत्र लागू करने की आवश्यकता है — GuardDuty और Access Analyzer क्षेत्रीय सेवाएँ हैं। अधिकांश टीमें आधारभूत संरचना के लिए एक प्राथमिक क्षेत्र (जैसे us-east-1) चुनती हैं और खाते के विस्तार के साथ इसे Terraform के माध्यम से प्रति क्षेत्र दोहराती हैं।
terraform {
required_version = ">= 1.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.60"
}
}
}
provider "aws" {
region = "us-east-1"
default_tags {
tags = {
Project = "certlabpro-scs-c03"
ManagedBy = "terraform"
}
}
}
data "aws_caller_identity" "current" {}SCS-C03 AWS-प्रबंधित KMS कुंजियों (मुफ्त, स्वचालित रोटेशन, कोई कुंजी नीति जिस पर आपका नियंत्रण नहीं) और ग्राहक-प्रबंधित कुंजियों ($1/माह, आप नीति के मालिक हैं, आप रोटेशन को नियंत्रित करते हैं, आपको CloudTrail के माध्यम से हर Encrypt/Decrypt कॉल में ऑडिट दृश्यता मिलती है) के बीच के अंतर का परीक्षण करता है। उत्पादन में हमेशा ग्राहक-प्रबंधित कुंजी का उपयोग करना चाहिए।
हम वार्षिक रोटेशन (enable_key_rotation = true) को सक्षम करते हैं और एक कुंजी नीति लिखते हैं जो खाता रूट को कुंजी को प्रशासित करने की क्षमता देती है (किसी भी ग्राहक-प्रबंधित कुंजी के लिए AWS डिफ़ॉल्ट) और IAM Access Analyzer सेवा को कुंजी की नीति का मूल्यांकन करने के लिए स्पष्ट रूप से अनुमति प्रदान करती है। उपनाम कुंजी को UUID के बजाय डाउनस्ट्रीम कोड में मानव-पठनीय नाम से संदर्भित करने योग्य बनाता है — SCS-C03 इस नामकरण परंपरा का CloudTrail-ऑडिट पूर्वापेक्षा के रूप में परीक्षण करता है।
resource "aws_kms_key" "app_data" {
description = "Customer-managed key for application data encryption."
enable_key_rotation = true
deletion_window_in_days = 30
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Sid = "EnableRootAccountAdmin"
Effect = "Allow"
Principal = { AWS = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root" }
Action = "kms:*"
Resource = "*"
},
{
Sid = "AllowAccessAnalyzerToDescribe"
Effect = "Allow"
Principal = { Service = "access-analyzer.amazonaws.com" }
Action = ["kms:DescribeKey", "kms:GetKeyPolicy"]
Resource = "*"
},
]
})
}
resource "aws_kms_alias" "app_data" {
name = "alias/certlabpro-scs-c03-app-data"
target_key_id = aws_kms_key.app_data.id
}Access Analyzer संसाधन-आधारित नीतियों (S3 बकेट नीतियां, KMS कुंजी नीतियां, IAM भूमिका ट्रस्ट नीतियां, Lambda अनुमतियां, SQS क्यू नीतियां, Secrets Manager रोटेशन नीतियां, और बहुत कुछ) का लगातार मूल्यांकन करता है और जब भी यह आपके खाते या ट्रस्ट सीमा के बाहर से पहुंच योग्य संसाधन का पता लगाता है, तो एक खोज उजागर करता है। SCS-C03 का थ्रेट डिटेक्शन एंड इंसिडेंट रिस्पांस डोमेन इस सटीक पैटर्न का परीक्षण करता है — Access Analyzer की खोजें "ओह, यह बकेट अब सार्वजनिक है" के लिए प्रामाणिक संकेत हैं।
type = "ACCOUNT" विश्लेषक को आपके खाते तक सीमित करता है; type = "ORGANIZATION" के लिए AWS Organizations की आवश्यकता होती है और यह पूरे संगठन (SCS-C03 मल्टी-अकाउंट उत्तर) में फैलता है। किसी भी तरह से, सक्षम होने के बाद यह हमेशा मुफ्त और शून्य-कॉन्फ़िग होता है।
resource "aws_accessanalyzer_analyzer" "main" {
analyzer_name = "certlabpro-scs-c03"
type = "ACCOUNT"
}GuardDuty AWS की प्रबंधित थ्रेट-डिटेक्शन सेवा है। यह AWS के थ्रेट-इंटेल फ़ीड — ज्ञात-खराब IP, क्रिप्टो-माइनिंग डोमेन, कमांड-एंड-कंट्रोल इन्फ्रास्ट्रक्चर, और संदिग्ध खाता व्यवहार पैटर्न की प्रकाशित सूचियों के खिलाफ CloudTrail, VPC Flow Logs और DNS लॉग का लगातार विश्लेषण करता है। खोजें गंभीरता (कम / मध्यम / उच्च) और Recon:EC2/PortProbeUnprotectedPort जैसे मशीन-पार्स करने योग्य प्रकार के साथ टैग की हुई आती हैं।
हम डिटेक्टर को 15-मिनट की प्रकाशन आवृत्ति के साथ चालू करते हैं (6-घंटे के डिफ़ॉल्ट से तेज; MTTR के बारे में SCS-C03 के प्रश्न लगभग हमेशा लगातार प्रकाशन को मानते हैं)। IAM-आधारित सुरक्षा प्लग-इन (MALWARE_PROTECTION_FOR_EC2, S3_DATA_EVENTS, आदि) का अतिरिक्त खर्च होता है और वे इस आधारभूत संरचना के दायरे से बाहर हैं; उन्हें उत्पादन में प्रति वर्कलोड चालू करें।
खोजें स्वचालित रूप से EventBridge पर प्रकाशित होती हैं — इस तरह डाउनस्ट्रीम ऑटोमेशन (Slack सूचनाएं, Security Hub सहसंबंध, ऑटो-रीमेडिएशन Lambdas) जुड़ता है। SCS-C03 इस खोजें → EventBridge → प्रतिक्रिया श्रृंखला का बार-बार परीक्षण करता है। हम यहां डाउनस्ट्रीम को तार-तार नहीं करते हैं, लेकिन जैसे ही Step 4 समाप्त होता है, GuardDuty प्रकाशन शुरू कर देता है।
resource "aws_guardduty_detector" "main" {
enable = true
finding_publishing_frequency = "FIFTEEN_MINUTES"
}प्रत्येक SCS-C03 सुरक्षा लॉगिंग और मॉनिटरिंग प्रश्न की अपेक्षा है कि आपके पास एक केंद्रीकृत, एन्क्रिप्टेड, एक बार-लिखने-योग्य बकेट हो जिसमें अन्य सुरक्षा उपकरण — CloudTrail, VPC Flow Logs, ELB एक्सेस लॉग, GuardDuty एक्सपोर्ट, Config रिकॉर्डर — लिखते हैं। बकेट को Step 2 से ग्राहक-प्रबंधित KMS कुंजी के साथ एन्क्रिप्ट किया गया है, सार्वजनिक एक्सेस पूरी तरह से अवरुद्ध है, और एक बकेट नीति लागू करती है कि कोई भी लिखी गई वस्तु Step 2 से कुंजी के माध्यम से आनी चाहिए (कोई भी प्लेनटेक्स्ट लेखन स्वीकार नहीं किया जाता है)।
हम bucket-owner-enforced स्वामित्व सेटिंग (ACLs-अक्षम मोड, 2023 से AWS-अनुशंसित) का उपयोग करते हैं — यह SCS-C03 पर सबसे अधिक परीक्षण किए गए S3 हार्डनिंग विशेषताओं में से एक है क्योंकि यह क्रॉस-अकाउंट ACL गलत कॉन्फ़िगरेशन के एक पूरे वर्ग को समाप्त करता है।
बकेट के स्थापित होने के साथ, आधारभूत संरचना पूरी हो गई है: एन्क्रिप्शन कुंजियों के लिए KMS, अनपेक्षित एक्सपोजर के लिए Access Analyzer, खतरे का पता लगाने के लिए GuardDuty, और अनुपालन समीक्षा के लिए बनाए रखने योग्य हर चीज़ के लिए एक ऑडिट बकेट। प्रत्येक SCS-C03 मल्टी-सर्विस परिदृश्य में आपसे इन चारों की अपेक्षा की जाती है; अधिक उन्नत प्रश्न इस आधार पर Security Hub, Config, Inspector, या Macie जोड़ते हैं।
resource "aws_s3_bucket" "audit_logs" {
bucket_prefix = "certlabpro-scs-c03-audit-"
}
resource "aws_s3_bucket_public_access_block" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
resource "aws_s3_bucket_ownership_controls" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
rule {
object_ownership = "BucketOwnerEnforced"
}
}
resource "aws_s3_bucket_server_side_encryption_configuration" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "aws:kms"
kms_master_key_id = aws_kms_key.app_data.arn
}
bucket_key_enabled = true # cuts KMS request costs ~99% on bulk writes
}
}
resource "aws_s3_bucket_versioning" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
versioning_configuration {
status = "Enabled"
}
}
resource "aws_s3_bucket_policy" "audit_logs_require_kms" {
bucket = aws_s3_bucket.audit_logs.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Sid = "DenyUnencryptedWrites"
Effect = "Deny"
Principal = "*"
Action = "s3:PutObject"
Resource = "${aws_s3_bucket.audit_logs.arn}/*"
Condition = {
StringNotEquals = {
"s3:x-amz-server-side-encryption" = "aws:kms"
}
}
}]
})
}terraform destroy इस लैब में सब कुछ हटा देता है। दो बातें:
deletion_window_in_days = 30 है, जिसका अर्थ है कि destroy इसे 30 दिनों में हटाने के लिए शेड्यूल करता है — यह तुरंत नहीं हटाई जाती (यह SCS-C03-निर्धारित सुरक्षा पैटर्न है; KMS विलोपन अपरिवर्तनीय है)। 30 दिनों के दौरान आप कंसोल के माध्यम से रद्द कर सकते हैं। वास्तव में हटाने के लिए, आपको अवधि समाप्त होने का इंतजार भी करना होगा। AWS इस अवधि के दौरान $1/माह बिल करना जारी रखता है।force_destroy = false है — यदि आपने इसमें लॉग एकत्र किए हैं, तो हटाने से पहले इसे खाली कर दें (aws s3 rm s3://<bucket> --recursive)।SCS-C03 किसी भी एक लैब से अधिक क्षेत्र को कवर करता है — AWS Config (निरंतर अनुपालन मूल्यांकन), Security Hub (केंद्रीकृत खोज एकत्रीकरण), Macie (S3 PII खोज), Inspector (EC2/Lambda भेद्यता स्कैनिंग), Detective (खतरे की जांच), WAF + Shield (एज प्रोटेक्शन), Network Firewall, Network Access Analyzer, Cognito (उपयोगकर्ता पहचान), Secrets Manager + Systems Manager Parameter Store, ACM (TLS), Firewall Manager (बहु-खाता नीति प्रवर्तन), और पूरा CloudHSM हार्डवेयर-कुंजी स्थान।
हम ऊपर दिए गए चार प्राइमिटिव पर टिके रहते हैं क्योंकि वे पहले दिन की आधारभूत संरचना हैं जिस पर बाकी सब कुछ बनता है। Config नियम Security Hub में खोजें लिखते हैं, जो उन्हें GuardDuty खोजों के साथ सहसंबंधित करता है, जो KMS कुंजियों द्वारा संरक्षित संसाधनों की ओर इशारा करते हैं, Access Analyzer द्वारा पकड़े गए नीतिगत मुद्दों के साथ — और यह सब अनुपालन समीक्षा के लिए ऑडिट बकेट में उतरता है। पहले नींव बनाएँ; बाकी को वर्कलोड की जोखिम प्रोफाइल की मांग के अनुसार परत-दर-परत जोड़ें।
सेवा-दर-सेवा कवरेज के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें। Security Hub + Config + GuardDuty-से-EventBridge ऑटो-रीमेडिएशन चेन जोड़ने वाली एक अनुवर्ती लैब एक स्वाभाविक अगला कदम होगा।