
आपके AWS खाते का Prowler का उपयोग करके एक समय-बिंदु मूल्यांकन बनाने में मदद करने के लिए एक AWS उपकरण।
साइबर सुरक्षा कई CIO, CISO और उनके ग्राहकों के लिए एक बहुत ही महत्वपूर्ण विषय और चिंता का विषय बनी हुई है। इन महत्वपूर्ण चिंताओं को दूर करने के लिए, AWS ने सेवाओं का एक प्राथमिक सेट विकसित किया है जिसका उपयोग ग्राहकों को अपने खातों की सुरक्षा में सहायता के लिए करना चाहिए। Amazon GuardDuty, AWS Security Hub, AWS Config, और AWS Well-Architected समीक्षाएँ ग्राहकों को उनके AWS खातों पर एक मजबूत सुरक्षा स्थिति बनाए रखने में मदद करती हैं। जैसे-जैसे अधिक संगठन क्लाउड पर तैनात होते हैं, विशेष रूप से यदि वे इसे तेज़ी से कर रहे हैं, और उन्होंने अभी तक अनुशंसित AWS सेवाओं को लागू नहीं किया है, तो क्लाउड वातावरण का त्वरित सुरक्षा मूल्यांकन करने की आवश्यकता हो सकती है।
हमने अपने ग्राहकों को सुरक्षा मूल्यांकन रिपोर्ट प्रदान करने के लिए एक सस्ता, तैनात करने में आसान, सुरक्षित और तेज़ समाधान विकसित किया है। ये रिपोर्ट ओपन सोर्स प्रोजेक्ट Prowler का उपयोग करके उत्पन्न की जाती हैं। Prowler AWS सर्वोत्तम प्रथाओं के आधार पर समय-बिंदु सुरक्षा मूल्यांकन करता है और ग्राहक के तैनात वातावरण में किसी भी संभावित जोखिम क्षेत्र की तुरंत पहचान करने में मदद कर सकता है। यदि आप इन मूल्यांकनों को निरंतर आधार पर करने में रुचि रखते हैं, तो AWS Security Hub के Foundational Security Best Practices standard को सक्षम करने की अनुशंसा करता है। यदि आप अपने Prowler मूल्यांकन परिणामों को Security Hub के साथ एकीकृत करने में रुचि रखते हैं, तो आप Prowler Documentation में दिए गए निर्देशों का पालन कर सकते हैं।
नोट: Prowler AWS के स्वामित्व वाला समाधान नहीं है। ग्राहकों को इस समाधान को चलाने से पहले Prowler की स्वतंत्र रूप से समीक्षा करनी चाहिए। Prowler से जुड़ी किसी भी निर्भरता को अद्यतन रखा जाना चाहिए। यह समाधान pip पैकेज इंस्टॉलर से Prowler का एक पिन किया हुआ संस्करण (वर्तमान में 5.41.0) स्थापित करता है, ताकि Prowler के आउटपुट प्रारूप में बदलाव बिना चेतावनी के स्कैन को तोड़ न सके। नए रिलीज़ पर जाने के लिए, में लाइन को संपादित करें।
2-sat2-codebuild-prowler.yamlpip3 install prowler==📕 अधिक गहन चरण-दर-चरण निर्देशों के लिए, SHIP Workshop में मॉड्यूल 2 देखें।
समाधान AWS CloudFormation के साथ तैनात किया गया है। तैनात होने पर, एक AWS CodeBuild प्रोजेक्ट और Prowler द्वारा उत्पन्न रिपोर्टों को संग्रहीत करने के लिए एक Amazon S3 बकेट बनाई जाती है। फिर AWS CodeBuild प्रोजेक्ट को शुरू करने के लिए एक AWS Lambda फ़ंक्शन का उपयोग किया जाता है।
पैरामीटर (उपयोगकर्ता इनपुट) डिफ़ॉल्ट एक एकल खाते में एक बेसिक स्कैन चलाएंगे। हालाँकि, आप अधिक व्यापक स्कैन चलाने या कई खातों को स्कैन करने के लिए विभिन्न पैरामीटर चुन सकते हैं। तैनाती प्रक्रिया पूरी होने में 5 मिनट से कम समय लेती है। समाधान के AWS CloudFormation टेम्पलेट इस Github रिपॉजिटरी में समीक्षा के लिए प्रदान किए गए हैं।
टेम्पलेट तैनात होने के बाद, CodeBuild प्रोजेक्ट चलेगा। डिफ़ॉल्ट मूल्यांकन पूरा होने में लगभग 5 मिनट लगते हैं। सुरक्षा मूल्यांकन पूरा करने का समय संसाधनों की संख्या और चयनित स्कैन विकल्पों के आधार पर भिन्न होगा। मूल्यांकन के अंत में रिपोर्ट बनाई गई S3 बकेट में वितरित की जाती हैं।

SATv2 को CloudFormation पैरामीटर अपडेट करके अनुकूलित किया जा सकता है। यह अनुभाग उपलब्ध विकल्पों का सारांश प्रदान करता है और अधिक जानकारी वाले अनुभाग का लिंक प्रदान करता है।
| पैरामीटर | विवरण | अधिक जानकारी |
|---|---|---|
| ProwlerScanType | निर्दिष्ट करें कि किस प्रकार का स्कैन करना है। अलग-अलग ProwlerOptions निर्दिष्ट किए बिना full चुनने पर पूर्ण स्कैन होगा। एक विशिष्ट जांच करने के लिए, Full चुनें और ProwlerOptions में -c <check> जोड़ें। | स्कैन प्रकार |
| MultiAccountScan | यदि आप अपने संगठन के सभी खातों को स्कैन करना चाहते हैं तो इसे true पर सेट करें। आपके पास उचित अनुमतियों के साथ एक भूमिका प्रदान करने के लिए पूर्वापेक्षित टेम्पलेट तैनात होना चाहिए, या उचित अनुमतियों के साथ एक अलग ProwlerRole निर्दिष्ट करना चाहिए। | बहु-खाता स्कैन |
| Reporting | यदि आप Prowler रिपोर्टों को एक एकल csv में सारांशित करना चाहते हैं तो इसे true पर सेट करें। कई खातों को स्कैन करते समय यह सहायक होता है। | रिपोर्टिंग सारांश |
| EmailAddress | यदि आप मूल्यांकन पूरा होने पर एक ईमेल प्राप्त करना चाहते हैं तो एक पता निर्दिष्ट करें। | सूचनाएँ |
| उन्नत पैरामीटर | ||
| ConcurrentAccountScans | बहु-खाता स्कैन के लिए, एक साथ स्कैन करने के लिए खातों की संख्या निर्दिष्ट करें। यह कई खातों वाले बड़े संगठनों के लिए उपयोगी है। तीन से अधिक चुनने से CodeBuild इंस्टेंस का आकार बदल जाता है और अतिरिक्त लागत लग सकती है। | |
| CodeBuildTimeout | CodeBuild कार्य के लिए टाइमआउट सेट करें। डिफ़ॉल्ट 300 मिनट (5 घंटे) है। | |
| MultiAccountListOverride | स्कैन करने के लिए खातों की एक स्पेस-सीमांकित सूची निर्दिष्ट करें। इसे खाली छोड़ने पर आपके संगठन के सभी खाते स्कैन होंगे। सुनिश्चित करें कि यदि आप विशिष्ट खातों को स्कैन करना चाहते हैं तो आपने उपरोक्त MultiAccountScan पैरामीटर को true पर सेट किया है। यदि आप प्रत्यायोजित ListAccount एक्सेस प्रदान नहीं कर सकते हैं, तो आप MultiAccountListOverride पैरामीटर प्रदान कर सकते हैं। | बहु-खाता स्कैन |
| ProwlerOptions | Prowler के लिए पैरामीटर निर्दिष्ट करें। --role और ARN स्वचालित रूप से आपके द्वारा निर्दिष्ट पैरामीटर के अंत में जोड़ दिए जाएंगे। इसका उपयोग एक एकल जांच निर्दिष्ट करने के लिए भी किया जा सकता है। | पूर्ण स्कैन |
| ProwlerRole | वह भूमिका जिसे Prowler को स्कैन करने के लिए ग्रहण करना चाहिए। यदि आप विभिन्न अनुमतियों के साथ अपनी स्वयं की भूमिका निर्दिष्ट करना चाहते हैं तो इसे बदलें। |
आप इस प्रोजेक्ट का उपयोग AWS Organization में कई खातों या एक एकल खाते में Prowler चलाने के लिए कर सकते हैं। हम AWS CloudShell या AWS कंसोल का उपयोग करने के निर्देश प्रदान करते हैं। आरंभ करने के लिए एक विकल्प चुनें।
सेल्फ-सर्विस सुरक्षा मूल्यांकन समाधान (SATv2) को एक एकल खाते के विरुद्ध चलाने के लिए, नीचे दिए गए निर्देशों का पालन करें। आप AWS CLI या AWS कंसोल का उपयोग करना चुन सकते हैं।
अपने AWS खाते में लॉगिन करें।
नेविगेशन बार में, AWS CloudShell चुनें।
CloudFormation टेम्पलेट डाउनलोड करने के लिए, निम्न कमांड दर्ज करें।
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml
टेम्पलेट को स्टेज करने के लिए एक S3 बकेट बनाने हेतु, निम्न कमांड दर्ज करें। टेम्पलेट 51,200 बाइट्स से बड़ा है, इसलिए CloudFormation को इसे इनलाइन पास करने के बजाय S3 पर अपलोड करने की आवश्यकता होती है।
TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION
aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION
CloudFormation टेम्पलेट तैनात करने के लिए, निम्न कमांड दर्ज करें। --s3-bucket विकल्प स्टैक बनाने से पहले टेम्पलेट को बकेट में अपलोड करता है।
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2 \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET
स्टैक बन जाने के बाद, आप स्टेजिंग बकेट को हटा सकते हैं। इसका उपयोग केवल टेम्पलेट को CloudFormation को सौंपने के लिए किया जाता है।
aws s3 rb s3://$TEMPLATE_BUCKET --force
सेल्फ-सर्विस सुरक्षा मूल्यांकन समाधान (SAT) बहु-खाता स्कैन का भी समर्थन करता है। आपको उस प्रत्येक खाते में एक पूर्वापेक्षित भूमिका तैनात करनी होगी जिस पर आप स्कैन करना चाहते हैं। कई खातों के लिए SATv2 चलाने के लिए, नीचे दिए गए निर्देशों का पालन करें। आप AWS CLI या AWS कंसोल का उपयोग करना चुन सकते हैं।
ये निर्देश मानते हैं कि आपके पास पहले से ही स्टैक सेट संचालन के लिए पूर्वापेक्षाएँ हैं। अधिक जानकारी के लिए, AWS CloudFormation उपयोगकर्ता गाइड पर जाएँ।
नोट: StackSets प्रबंधन खाते पर लागू नहीं होते हैं। प्रबंधन खाते का मूल्यांकन करने के लिए, 1-sat2-member-role को CloudFormation Stack के रूप में तैनात करें।
अपने AWS प्रबंधन खाते में लॉगिन करें।
नेविगेशन बार में, AWS CloudShell चुनें।
पहचानें कि आप किस खाते से Prowler स्कैन चलाएंगे। ग्राहक आमतौर पर एक सुरक्षा टूलिंग खाते या ऑडिट खाते का उपयोग करते हैं। ProwlerAccountID पैरामीटर के लिए खाता ID नोट करें।
CloudFormation टेम्पलेट डाउनलोड करने के लिए, निम्न कमांड दर्ज करें।
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/1-sat2-member-roles.yaml
CloudFormation StackSets के माध्यम से CloudFormation टेम्पलेट तैनात करें। निम्न पैरामीटर अपडेट करें:
aws cloudformation create-stack-set --template-body file://1-sat2-member-roles.yaml \
--stack-set-name sat2-member-roles \
--permission-model SERVICE_MANAGED \
--auto-deployment Enabled=true,RetainStacksOnAccountRemoval=false \
--capabilities CAPABILITY_NAMED_IAM \
--parameters ParameterKey=ProwlerAccountID,ParameterValue=<aws-account-id> \
--region <region>
अपने संगठन के प्रत्येक खाते के लिए स्टैक इंस्टेंस बनाने के लिए निम्न कमांड का उपयोग करें। आप एक विशिष्ट OU या रूट OU को लक्षित कर सकते हैं। निम्न पैरामीटर अपडेट करें:
aws cloudformation create-stack-instances --stack-set-name sat2-member-roles \
--deployment-targets OrganizationalUnitIds='["<root-ou>"]' \
--regions '["<region>"]' \
--operation-preferences FailureTolerancePercentage=100,MaxConcurrentPercentage=100 \
--region <region>
निर्धारित करें कि क्या आपके पास अपने Prowler खाते के लिए प्रत्यायोजित व्यवस्थापक या एक संसाधन नीति पहले से मौजूद है। केवल एक विकल्प की आवश्यकता है और संसाधन नीति को प्रोत्साहित किया जाता है क्योंकि यह अधिक सूक्ष्म है।
नोट: संसाधन नीतियाँ GovCloud में उपलब्ध नहीं हैं, इसलिए आपको प्रत्यायोजित व्यवस्थापक का उपयोग करने की आवश्यकता होगी।
7a. आपके Prowler खाते में पहले से ही एक प्रत्यायोजन हो सकता है। आप जाँचने के लिए निम्न कमांड का उपयोग कर सकते हैं:
aws organizations list-delegated-administrators
7b. आपके Prowler खाते में पहले से ही एक संसाधन नीति हो सकती है। आप जाँचने के लिए निम्न कमांड का उपयोग कर सकते हैं:
aws organizations describe-resource-policy
यदि आपके पास प्रत्यायोजित व्यवस्थापक या संसाधन नीति नहीं है, तो आप उचित एक्सेस जोड़ने के लिए निम्न कमांड का उपयोग कर सकते हैं।
नोट: यदि आप प्रत्यायोजित ListAccount एक्सेस प्रदान नहीं कर सकते हैं, तो आप
2-sat2-codebuild-prowler टेम्पलेटमें MultiAccountListOverride पैरामीटर प्रदान कर सकते हैं।
नोट: यदि आप GovCloud का उपयोग कर रहे हैं, तो प्रत्यायोजित व्यवस्थापक बनाने के लिए चरण 8a का उपयोग करें। यदि आप एक वाणिज्यिक region का उपयोग कर रहे हैं, तो ListAccounts तक न्यूनतम विशेषाधिकार एक्सेस प्रदान करने के लिए चरण 8b का उपयोग करें।
8a. यदि आपके पास पहले से नहीं है तो व्यवस्थापक को प्रत्यायोजित करने के लिए निम्न कमांड का उपयोग करें। <aws-account-id> को उस खाता ID से बदलें जिससे आप Prowler चलाएंगे।
aws organizations register-delegated-administrator <aws-account-id>
8b. संसाधन नीति जोड़ने के लिए निम्न कमांड का उपयोग करें।
<aws-account-id> को उस खाता ID से बदलें जिससे आप Prowler चलाएंगे।
aws organizations put-resource-policy --content \
'{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<aws-account-id>:root"
},
"Action": [
"organizations:ListAccounts",
"organizations:DescribeAccount",
"organizations:ListTagsForResource",
"organizations:ListParents",
"organizations:DescribeOrganizationalUnit"
],
"Resource": "*"
}
]
}'
नोट:
ListParentsऔर वही हैं जो निष्कर्षों में और कॉलम भरते हैं। उन्हें छोड़ दें और बाकी स्कैन अभी भी काम करता है, लेकिन वे दो कॉलम खाली वापस आते हैं।
नोट: सुनिश्चित करें कि आपने उस खाते पर स्विच किया है जिसे आपने Prowler चलाने के लिए निर्दिष्ट किया था।
टेम्पलेट डाउनलोड करने के लिए, Prowler खाते में AWS CloudShell खोलें और निम्न कमांड दर्ज करें।
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml
टेम्पलेट को स्टेज करने के लिए एक S3 बकेट बनाने हेतु, निम्न कमांड दर्ज करें। टेम्पलेट 51,200 बाइट्स से बड़ा है, इसलिए CloudFormation को इसे इनलाइन पास करने के बजाय S3 पर अपलोड करने की आवश्यकता होती है।
TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION
aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION
Prowler खाते में टेम्पलेट तैनात करने के लिए। अपने संगठन के सभी खातों को स्कैन करने के लिए MultiAccountScan को true पर सेट करें। --s3-bucket विकल्प स्टैक बनाने से पहले टेम्पलेट को बकेट में अपलोड करता है।
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides MultiAccountScan=true
स्टैक बन जाने के बाद, आप स्टेजिंग बकेट को हटा सकते हैं। इसका उपयोग केवल टेम्पलेट को CloudFormation को सौंपने के लिए किया जाता है।
aws s3 rb s3://$TEMPLATE_BUCKET --force
1-sat2-member-roles.yaml और 2-sat2-codebuild-prowler.yaml फ़ाइलें डाउनलोड करें।
CloudFormation StackSets के माध्यम से CloudFormation टेम्पलेट तैनात करें। निम्न पैरामीटर अपडेट करें:
नेविगेशन फलक में, StackSets चुनें।
Create StackSet चुनें।
Permissions के लिए, Service-managed permissions को चयनित छोड़ दें।
Specify template के अंतर्गत, Upload a template file चुनें।
चरण 1-1 में डाउनलोड की गई 1-sat2-member-roles.yaml फ़ाइल चुनें।
Next चुनें।
Stack name के लिए, sat2-member-role दर्ज करें।
Parameters के लिए, निम्नलिखित दर्ज करें:
Next चुनें।
Configure StackSet options पृष्ठ पर, Next चुनें।
Set deployment options पर, निम्नलिखित दर्ज करें:
Next चुनें।
Review पृष्ठ पर, I acknowledge that AWS CloudFormation might create IAM resources. बॉक्स चुनें और Submit चुनें।
निर्धारित करें कि क्या आपके पास प्रत्यायोजित व्यवस्थापक या एक संसाधन नीति पहले से मौजूद है जिस खाते में आप Prowler तैनात करना चाहते हैं। यह अनुशंसित है कि आप Prowler को अपने सुरक्षा टूलिंग (Audit) खाते से चलाएं। यह सत्यापित करने या अपडेट करने के लिए कि ऑडिट खाते के पास ListAccounts की अनुमति है, इन चरणों का पालन करें।
AWS Organization कंसोल पर नेविगेट करें।
नेविगेशन फलक में, Settings चुनें।
AWS Organizations के लिए Delegated administrator के लिए, निम्नलिखित कथन शामिल करें।
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<aws-account-id>:root"
},
"Action": [
"organizations:ListAccounts",
"organizations:DescribeAccount",
"organizations:ListTagsForResource",
"organizations:ListParents",
"organizations:DescribeOrganizationalUnit"
],
"Resource": "*"
}
]
}
नोट:
ListParentsऔरDescribeOrganizationalUnitही निष्कर्षों मेंaccount_ou_uidऔरaccount_ou_nameकॉलम भरते हैं। उन्हें हटा दें और बाकी स्कैन अभी भी काम करेगा, लेकिन वे दो कॉलम खाली रहेंगे।
उस खाते में AWS CloudFormation कंसोल पर नेविगेट करें जिससे आप टूल चलाएंगे (ProwlerAccountID)।
नेविगेशन फलक में, Stacks चुनें।
Create stack चुनें।
Specify template के अंतर्गत, Upload a template file चुनें।
चरण 1-1 में डाउनलोड की गई 2-sat2-codebuild-prowler.yaml फ़ाइल चुनें।
Next चुनें।
Stack name के लिए, sat2-prowler दर्ज करें।
Parameters अनुभाग में, MultiAccountScan के लिए, true चुनें।
आप वैकल्पिक रूप से सभी खातों का सारांश एक एकल csv फ़ाइल में प्राप्त करने के लिए रिपोर्टिंग सक्षम कर सकते हैं। Reporting के लिए, true चुनें।
Next चुनें।
Configure stack options पृष्ठ पर, Next चुनें।
Review SAS पृष्ठ पर, I acknowledge that AWS CloudFormation might create IAM resources. बॉक्स चुनें और Submit चुनें।
समाधान तैनात होने के बाद, एक Lambda फ़ंक्शन CodeBuild प्रोजेक्ट शुरू करता है। CodeBuild प्रोजेक्ट का निर्माण पूरा होने के बाद, Prowler परिणाम बनाए गए Amazon S3 बकेट पर अपलोड किए जाएंगे। यदि आपने सूचनाएं कॉन्फ़िगर की हैं, तो Prowler स्कैन पूरा होने पर आपको एक ईमेल प्राप्त होगा। यदि आपने रिपोर्टिंग कॉन्फ़िगर की है, तो आपके पास /reports फ़ोल्डर में एक समेकित csv फ़ाइल होगी।
यदि आपने ईमेल अलर्ट कॉन्फ़िगर नहीं किए हैं, तो आप CodeBuild कंसोल से प्रगति की निगरानी कर सकते हैं।
परिणामों की समीक्षा करने के लिए, इन चरणों का पालन करें।
उस खाते में Amazon S3 कंसोल पर नेविगेट करें जहां आपने Prowler तैनात किया था।
उस बकेट का चयन करें जो sat2-prowler-prowlerfindingsbucket- से शुरू होता है।
उस आउटपुट प्रारूप के लिए फ़ोल्डर चुनें जो आप चाहते हैं, फिर उस रन के लिए scan_date= और scan_time= फ़ोल्डर चुनें जिसकी समीक्षा करनी है।
प्रत्येक आउटपुट प्रारूप का अपना शीर्ष-स्तरीय फ़ोल्डर होता है, और प्रत्येक रन उसके नीचे एक scan_date=YYYY-MM-DD/scan_time=HHMMSS उपफ़ोल्डर में लिखता है। समय वह UTC समय है जब स्कैन शुरू हुआ था:
csv/scan_date=2026-09-01/scan_time=204955/ Prowler के CSV निष्कर्ष, जैसे लिखे गए हैं
html/scan_date=2026-09-01/scan_time=204955/ प्रति-खाता HTML रिपोर्ट
json/scan_date=2026-09-01/scan_time=204955/ प्रति-खाता JSON
ocsf-json/scan_date=2026-09-01/scan_time=204955/ प्रति-खाता OCSF JSON
parquet/scan_date=2026-09-01/scan_time=204955/ वह प्रति जिसे Athena क्वेरी करता है
compliance/scan_date=2026-09-01/scan_time=204955/ अनुपालन CSV, जब उत्पन्न होते हैं
reports/ समेकित CSV और डैशबोर्ड
प्रत्येक रन को अपना स्वयं का फ़ोल्डर मिलता है, इसलिए समाधान को फिर से चलाने से नए निष्कर्ष कभी भी पुराने के साथ मिश्रित नहीं होते, जिसमें उसी दिन इसे एक से अधिक बार चलाना भी शामिल है। पिछले रन संरक्षित रहते हैं ताकि आप उनकी तुलना कर सकें।
प्रत्येक खाते के लिए, prowler-output-<aws-account-id>-<datetime> प्रारूप में 4 फ़ाइल प्रकार (csv, html, json, json-ocsf) होंगे।
html ऑब्जेक्ट्स में से एक चुनें।
Open चुनें।

आपकी रिपोर्ट के साथ एक नई विंडो खुलेगी। आप निष्कर्षों की पहचान करने और प्राथमिकता देने के लिए फ़िल्टर का उपयोग कर सकते हैं।

यदि आपने रिपोर्टिंग सक्षम की है, तो रिपोर्टिंग फ़ोल्डर में एक स्थिर html डैशबोर्ड होगा।
नोट: अपना presigned URL किसी के साथ साझा न करें। एक presigned URL ऑब्जेक्ट डाउनलोड करने के लिए समय-सीमित अनुमति देने हेतु सुरक्षा क्रेडेंशियल का उपयोग करता है। URL को ब्राउज़र में दर्ज किया जा सकता है या ऑब्जेक्ट डाउनलोड करने के लिए किसी प्रोग्राम द्वारा उपयोग किया जा सकता है। presigned URL द्वारा उपयोग किए गए क्रेडेंशियल उस AWS उपयोगकर्ता के हैं जिसने URL उत्पन्न किया था। अधिक जानकारी के लिए, presigned URLs के साथ ऑब्जेक्ट साझा करने की समीक्षा करें।
Prowler में परिणामों की समीक्षा करने के लिए एक अंतर्निहित डैशबोर्ड है। Prowler डैशबोर्ड का उपयोग करने के लिए, Prowler को स्थानीय रूप से स्थापित होना चाहिए और आपको Prowler के परिणाम स्थानीय रूप से डाउनलोड करने होंगे।
आपके पास AWS कमांड लाइन इंटरफ़ेस (CLI) और मान्य क्रेडेंशियल होने चाहिए। अधिक जानकारी के लिए, AWS कमांड लाइन इंटरफ़ेस उपयोगकर्ता गाइड की समीक्षा करें।
Prowler स्थापित करें। अधिक जानकारी के लिए, Prowler स्थापना निर्देश की समीक्षा करें।
pip install prowler
Amazon S3 बकेट का नाम प्राप्त करें। बकेट का नाम CloudFormation कंसोल में ProwlerFindingsBucket संसाधन के रूप में है। वैकल्पिक रूप से, S3 कंसोल पर नेविगेट करें और {stack_name}-prowlerfindingsbucket-{ID} प्रारूप में एक बकेट देखें।
S3 से CSV और अनुपालन डेटा डाउनलोड करें। यदि आपने पूर्ण स्कैन नहीं चलाया है, तो आपके पास अनुपालन डेटा नहीं हो सकता है। {bucket_name} को अपने बकेट के नाम से बदलें, और {scan_date} और {scan_time} को उस रन से बदलें जिसे आप लोड करना चाहते हैं, उदाहरण के लिए 2026-09-01 और 204955। उपलब्ध रन सूचीबद्ध करने के लिए, aws s3 ls s3://{bucket_name}/csv/scan_date={scan_date}/ का उपयोग करें।
aws s3 sync s3://{bucket_name}/compliance/scan_date={scan_date}/scan_time={scan_time}/ output/compliance/
aws s3 sync s3://{bucket_name}/csv/scan_date={scan_date}/scan_time={scan_time}/ output/
नोट: एक समय में एक रन सिंक करें। Prowler डैशबोर्ड
output/*.csvपढ़ता है और उपफ़ोल्डर खोजता नहीं है, इसलिएscan_date=फ़ोल्डरों को स्वयंoutput/में कॉपी करने से एक खाली डैशबोर्ड उत्पन्न होगा। एक साथ दो रन लोड करने से प्रत्येक निष्कर्ष दो बार दिखाई देगा।
डैशबोर्ड चलाएं। डैशबोर्ड चलाने के लिए निम्नलिखित कमांड का उपयोग करें। डिफ़ॉल्ट रूप से, यह http://127.0.0.1:11666/ पर शुरू होगा।
prowler dashboard
डिफ़ॉल्ट रूप से, SAT2 एक बुनियादी स्कैन चलाएगा जिसमें 13 जाँचें शामिल हैं। आप एक अलग ProwlerScanType पैरामीटर मान चुनकर मध्यवर्ती या पूर्ण जाँच चलाने का विकल्प चुन सकते हैं।
उदाहरण के लिए, मध्यवर्ती स्कैन विकल्प का उपयोग करके एकल खाता स्कैन इस कमांड का उपयोग करेगा:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml
--stack-name sat2-prowler
--capabilities CAPABILITY_NAMED_IAM
--s3-bucket $TEMPLATE_BUCKET
--parameter-overrides ProwlerScanType=Intermediate
>नोट: `--s3-bucket` विकल्प आवश्यक है क्योंकि टेम्पलेट 51,200 बाइट्स से बड़ा है, जो CloudFormation इनलाइन स्वीकार करता है उसकी अधिकतम सीमा है। `$TEMPLATE_BUCKET` ऊपर CloudShell डिप्लॉयमेंट चरणों में बनाया गया स्टेजिंग बकेट है। यह इस README में हर `aws cloudformation deploy` उदाहरण पर लागू होता है।
चेक अक्सर जोड़े जाते हैं, नवीनतम चेक देखने के लिए, `prowler aws --list-checks` कमांड चलाएँ। प्रत्येक चेक स्तर के लिए नीचे एक उदाहरण दिया गया है।
### बेसिक स्कैन
चेक की सूची देखने के लिए, [बेसिक चेक](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/basic_checks.txt) की समीक्षा करें।
- मैनुअल चेक - वर्तमान संपर्क विवरण बनाए रखें।
- अप्रचलित Lambda रनटाइम खोजें।
- सुनिश्चित करें कि CloudTrail सभी क्षेत्रों में सक्षम है।
- सुनिश्चित करें कि AWS Config सभी क्षेत्रों में सक्षम है।
- सुनिश्चित करें कि कोई सुरक्षा समूह किसी भी पोर्ट पर 0.0.0.0/0 या ::/0 से इनग्रेस की अनुमति नहीं देता है।
- जाँचें कि GuardDuty सक्षम है या नहीं।
- सुनिश्चित करें कि IAM पासवर्ड नीति में कम से कम एक लोअरकेस अक्षर आवश्यक है।
- सुनिश्चित करें कि IAM पासवर्ड नीति में कम से कम एक संख्या आवश्यक है।
- सुनिश्चित करें कि IAM पासवर्ड नीति में कम से कम एक प्रतीक आवश्यक है।
- सुनिश्चित करें कि IAM पासवर्ड नीति में कम से कम एक अपरकेस अक्षर आवश्यक है।
- सुनिश्चित करें कि रूट खाते के लिए MFA सक्षम है।
- सुनिश्चित करें कि एक्सेस कुंजियाँ हर 90 दिन या उससे कम में घुमाई जाती हैं।
- सुनिश्चित करें कि Everyone या किसी भी AWS उपयोगकर्ता के लिए कोई S3 बकेट खुला नहीं है।
### इंटरमीडिएट स्कैन
चेक की सूची देखने के लिए, [इंटरमीडिएट चेक](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/intermediate_checks.txt) की समीक्षा करें।
यह स्कैन Prowler स्कैन विकल्पों में `--severity critical high` जोड़ेगा। इस चयन के साथ Prowler उन सभी सुरक्षा चेक चलाएगा जिनके परिणाम क्रिटिकल या हाई गंभीरता के हों।
### फुल स्कैन
चेक की सूची देखने के लिए, [फुल चेक](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/full_checks.txt) की समीक्षा करें।
यह विकल्प Prowler स्कैन में कोई अतिरिक्त पैरामीटर नहीं जोड़ता है। इसके परिणामस्वरूप Prowler 500+ चेक चलाएगा।
आप स्कैन को अपनी पसंद के अनुसार अनुकूलित करने के लिए फुल स्कैन का भी उपयोग कर सकते हैं।
**ProwlerScanType** के लिए **Full** चुनें।
**ProwlerOptions** के लिए, चेक जोड़ें। उदाहरण के लिए, केवल यह जाँचने के लिए कि GuardDuty सक्षम है या नहीं, दर्ज करें:
`aws --ignore-exit-code-3 -c guardduty_is_enabled`
## सूचनाएँ
आप CloudFormation टेम्पलेट तैनात करते समय EmailAddress पैरामीटर में वैकल्पिक रूप से एक ईमेल पता निर्दिष्ट कर सकते हैं। यह एक SNS टॉपिक बनाएगा और CodeBuild कार्य पूरा होने पर एक ईमेल भेजेगा।
यह लंबे स्कैन या कई खातों में स्कैन चलाते समय सहायक हो सकता है।
उदाहरण के लिए, ईमेल सूचनाओं के साथ एकल खाता स्कैन इस कमांड का उपयोग करेगा:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides [email protected]
वैकल्पिक EmailAddress पैरामीटर सेट हो या न हो, आप CodeBuild कंसोल में प्रगति देख सकते हैं।
CodeBuild कंसोल पर नेविगेट करें।
नेविगेशन फलक में, Build के अंतर्गत, Build projects चुनें।
उस Build प्रोजेक्ट को चुनें जो ProwlerCodeBuild- से शुरू होता है।
Build history के अंतर्गत, आपको अंतिम रन दिखाई देगा।

वैकल्पिक रूप से, आप समाधान को तैनात करते समय चुने गए विकल्पों के साथ एक और स्कैन चलाने के लिए Start build चुन सकते हैं।
आप वैकल्पिक रूप से कई Prowler स्कैन परिणामों को एक ही फ़ाइल में सारांशित करने के लिए रिपोर्टिंग सक्षम कर सकते हैं। यह AWS Organization में कई खातों में Prowler चलाते समय सहायक हो सकता है। रिपोर्टिंग सारांश सुविधा डिफ़ॉल्ट रूप से बंद है। रिपोर्टिंग सक्षम करने के लिए, CloudFormation टेम्पलेट तैनात करते समय Reporting पैरामीटर को true पर सेट करें। यह एक Athena WorkGroup, एक Glue टेबल बनाएगा, और परिणामों को समेकित करने के लिए स्वचालित रूप से एक क्वेरी चलाएगा। सारांशित csv फ़ाइल Prowler परिणामों के समान S3 बकेट में /reports फ़ोल्डर में स्थित है।
यदि आप रिपोर्टिंग सक्षम होने पर एक ईमेल पता निर्दिष्ट करते हैं, तो Athena क्वेरी समाप्त होने पर आपको एक दूसरा ईमेल मिलेगा।
Athena Prowler के CSV के बजाय निष्कर्षों की parquet/ प्रति पर क्वेरी करता है। CodeBuild प्रोजेक्ट अपलोड करने से पहले प्रत्येक CSV को Parquet में परिवर्तित करता है, और Glue टेबल prowler parquet/ की ओर इशारा करती है।
यह रूपांतरण इसलिए मौजूद है क्योंकि Prowler 5.17.0 और बाद के संस्करण अपने चेक मेटाडेटा में बहु-पंक्ति मार्कडाउन भेजते हैं, इसलिए DESCRIPTION, RISK और REMEDIATION_* फ़ील्ड में नई पंक्तियाँ होती हैं। Prowler उन फ़ील्ड्स को सही ढंग से उद्धृत करता है, लेकिन Athena CSV को Hive के TextInputFormat के माध्यम से पढ़ता है, जो किसी भी SerDe चलने से पहले रिकॉर्ड को नई पंक्तियों पर विभाजित करता है। इसलिए एक CSV-समर्थित टेबल प्रति निष्कर्ष एक पंक्ति के बजाय प्रति भौतिक पंक्ति एक पंक्ति लौटाती है, और पहले बहु-पंक्ति फ़ील्ड के बाद आने वाले कॉलम को चुपचाप छोड़ देती है। Parquet नई पंक्तियों को रिकॉर्ड सीमा के रूप में उपयोग नहीं करता है, इसलिए टेक्स्ट बरकरार रहता है। Parquet बार-बार आने वाले रेमेडिएशन टेक्स्ट को भी भारी रूप से संपीड़ित करता है, जिससे क्वेरी सस्ती हो जाती हैं: 116 MB का CSV सेट लगभग 3 MB Parquet बन जाता है।
csv/ फ़ोल्डर को बिल्कुल वैसे ही छोड़ दिया गया है जैसे Prowler ने लिखा था, इसलिए Prowler डैशबोर्ड और कोई भी मौजूदा CSV टूलिंग काम करती रहती है।
टेबल scan_date और scan_time पर विभाजित है, इसलिए समाधान के प्रत्येक रन को अपना स्वयं का विभाजन मिलता है। इससे दो बातें निकलती हैं:
/reports में समेकित CSV केवल सबसे हालिया रन को कवर करता है, इसलिए समाधान को फिर से चलाने से निष्कर्ष कभी दोगुने नहीं होते, और जो निष्कर्ष अब मौजूद नहीं हैं वे रिपोर्ट में बने नहीं रहते।scan_date और scan_time सामान्य कॉलम हैं, इसलिए आप रनों के बीच परिणामों की तुलना कर सकते हैं। Prowler scan trend सहेजी गई क्वेरी यही करती है, प्रति रन एक पंक्ति।केवल तारीख पर विभाजन पर्याप्त नहीं है। उसी दिन दूसरा स्कैन उसी विभाजन में लिखेगा, और उसके निष्कर्ष पहले के रन के साथ विलय हो जाएंगे, न कि उन्हें प्रतिस्थापित करेंगे। कोई भी निष्कर्ष जो नया स्कैन अब रिपोर्ट नहीं करता, क्योंकि कोई संसाधन हटा दिया गया था, कोई खाता organization छोड़ गया था, कोई सदस्य भूमिका काम करना बंद कर दी थी, या स्कैन प्रकार संकुचित हो गया था, फिर भी रिपोर्ट में दिखाई देगा और वर्तमान जैसा लगेगा।
नए विभाजन स्वचालित रूप से पंजीकृत होते हैं: रिपोर्टिंग Lambda समेकन क्वेरी चलाने से पहले MSCK REPAIR TABLE चलाता है, इसलिए शेड्यूल करने के लिए कोई क्रॉलर नहीं है और हाथ से जोड़ने के लिए कुछ भी नहीं है।
यदि आप अपनी स्वयं की Athena क्वेरी लिखते हैं, तो उन्हें एक ही रन तक सीमित रखें या आप बकेट में हर स्कैन को एक साथ एकत्रित कर देंगे। दोनों कुंजियाँ निश्चित चौड़ाई की हैं, इसलिए उन्हें संयोजित करके तुलना करने से रन कालानुक्रमिक रूप से क्रमबद्ध होते हैं:```sql SELECT severity, count(*) FROM "{bucket_name}"."prowler" WHERE status = 'FAIL' AND concat(scan_date, scan_time) = ( SELECT max(concat(scan_date, scan_time)) FROM "{bucket_name}"."prowler" ) GROUP BY severity
पूरे दिन के सभी रनों को क्वेरी करने के लिए, केवल `scan_date` पर फ़िल्टर करें।
>नोट: यदि आप किसी ऐसे डिप्लॉयमेंट को अपग्रेड कर रहे हैं जो पहले के केवल `scan_date` वाले लेआउट का उपयोग करता था, तो अपग्रेड से पहले के परिणाम नई टेबल में दिखाई नहीं देंगे, क्योंकि उनके S3 पथों में `scan_time=` स्तर नहीं है। डेटा S3 में अछूता रहता है। या तो अगले स्कैन को टेबल को फिर से भरने दें, या पुरानी फ़ाइलों को `scan_time=` फ़ोल्डर में ले जाएँ, उदाहरण के लिए `aws s3 mv s3://{bucket_name}/parquet/scan_date={scan_date}/ s3://{bucket_name}/parquet/scan_date={scan_date}/scan_time=000000/ --recursive`, और फिर Athena में `MSCK REPAIR TABLE prowler` चलाएँ।
उदाहरण के लिए, रिपोर्टिंग और ईमेल अलर्ट सक्षम के साथ एक मल्टी-अकाउंट स्कैन इस कमांड का उपयोग करेगा:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides MultiAccountScan=true Reporting=true [email protected]

उदाहरण के रूप में दो सहेजे गए क्वेरी बनाए गए हैं:
| सहेजा गया क्वेरी | यह क्या दर्शाता है |
|---|---|
| Prowler संगठन सारांश | सबसे हालिया स्कैन के लिए, मूल्यांकन किए गए प्रत्येक खाते में विफल जाँचें। |
| Prowler स्कैन प्रवृत्ति | समय के साथ रनों की तुलना करने के लिए, स्कैन तिथि और गंभीरता के अनुसार विफल जाँचें। |
क्वेरी की समीक्षा करने और चलाने के लिए, इन चरणों का पालन करें:
Amazon Athena कंसोल पर नेविगेट करें।
उस वर्कग्रुप को चुनें जो sat2-prowler-* से शुरू होता है।
सहेजे गए क्वेरी टैब चुनें।
ID चुनकर उस क्वेरी का चयन करें जिसे आप चलाना चाहते हैं।

क्वेरी चलाने के लिए Run चुनें।

| जाँच | शमन |
|---|---|
| जाँचें कि क्या Lambda फ़ंक्शन API ऑपरेशन CloudTrail द्वारा रिकॉर्ड किए जा रहे हैं। | CloudTrail एक AWS खाता स्तर का कॉन्फ़िगरेशन है। CloudTrail को SATv2 से स्वतंत्र रूप से सक्षम किया जाना चाहिए। |
| Cloudformation Stacks के लिए समाप्ति सुरक्षा सक्षम करें | SATv2 को एक समय बिंदु के लिए चलाने और फिर हटाने का इरादा है। यदि Stack समाप्त हो जाता है, तो निष्कर्ष अभी भी S3 बकेट में बनाए रखे जाते हैं। |
| जाँचें कि क्या CloudWatch लॉग समूह AWS KMS द्वारा सुरक्षित हैं। | लॉग समूह डेटा हमेशा CloudWatch Logs में एन्क्रिप्ट किया जाता है। डिफ़ॉल्ट रूप से, CloudWatch Logs आराम पर लॉग डेटा के लिए सर्वर-साइड एन्क्रिप्शन का उपयोग करता है। लागत बचाने के लिए ग्राहक-प्रबंधित KMS कुंजी कॉन्फ़िगर नहीं की गई है। |
| जाँचें कि क्या CloudWatch लॉग समूहों में विशिष्ट दिनों की अवधारण नीति है। | लॉग समूह अवधारण डिज़ाइन द्वारा 7 दिनों पर सेट है। यह जाँच एक वर्ष से कम अवधारण वाले लॉग समूहों की तलाश करती है। |
| जाँचें कि क्या S3 बकेट में KMS एन्क्रिप्शन सक्षम है। | सभी Amazon S3 बकेट में डिफ़ॉल्ट रूप से एन्क्रिप्शन कॉन्फ़िगर किया गया है, और ऑब्जेक्ट स्वचालित रूप से Amazon S3 प्रबंधित कुंजियों (SSE-S3) के साथ सर्वर-साइड एन्क्रिप्शन का उपयोग करके एन्क्रिप्ट किए जाते हैं। लागत बचाने के लिए ग्राहक-प्रबंधित KMS कुंजी कॉन्फ़िगर नहीं की गई है। |
| जाँचें कि क्या S3 बकेट MFA Delete सक्षम नहीं है। | Prowler मूल्यांकन परिणाम पुनः उत्पन्न किए जा सकते हैं और MFA delete की आवश्यकता नहीं है। |
| जाँचें कि क्या S3 बकेट में ऑब्जेक्ट लॉक सक्षम है | Prowler मूल्यांकन परिणाम पुनः उत्पन्न किए जा सकते हैं और S3 ऑब्जेक्ट लॉक की आवश्यकता नहीं है। |
| जाँचें कि क्या S3 बकेट में सर्वर एक्सेस लॉगिंग सक्षम है | Prowler मूल्यांकन परिणामों को सर्वर एक्सेस लॉगिंग की आवश्यकता नहीं है। |
समाधान चलाने के बाद, आपको उन संसाधनों को हटाने के लिए CloudFormation Stacks को हटा देना चाहिए जिनकी अब आवश्यकता नहीं है। Prowler स्कैन परिणामों वाला S3 बकेट बना रहेगा।
अपने खाते से सुरक्षा मूल्यांकन समाधान को हटाने के लिए, इन चरणों का पालन करें।
उस खाते में AWS CloudFormation कंसोल पर नेविगेट करें जिससे आपने उपकरण चलाया था (ProwlerAccountID)।
नेविगेशन फलक में, Stacks चुनें।
sat2-prowler Stack चुनें।
Delete चुनें।
यदि आपने कई खातों को स्कैन करने के लिए सदस्य भूमिका StackSet तैनात किया है, तो इन चरणों का पालन करें।
उस खाते में AWS CloudFormation कंसोल पर नेविगेट करें जिसमें आपने सदस्य भूमिका StackSet बनाया था।
नेविगेशन फलक में, StackSets चुनें।
sat2-member-roles StackSet चुनें।
Actions चुनें, फिर Delete stacks form StackSet चुनें।
StackSet बनाते समय वही AWS OU ID निर्दिष्ट करें।
Specify regions के लिए, Add all regions चुनें।
Next चुनें, और Submit चुनें।
परिवर्तन समाप्त होने के बाद, आप StackSet को हटा सकते हैं।
sat2-member-roles StackSet चुनें।
Actions चुनें, फिर Delete StackSet चुनें।
यदि आप स्कैन परिणामों वाले Amazon S3 बकेट को हटाना चाहते हैं, तो ऑब्जेक्ट और बकेट को हटाने के लिए Amazon S3 उपयोगकर्ता गाइड में दिए गए चरणों का पालन करें। यदि आप समाधान फिर से चलाते हैं, तो आपके परिणामों के लिए एक नया S3 बकेट बनाया जाएगा।
अधिक जानकारी के लिए CONTRIBUTING देखें।
यह प्रोजेक्ट Apache-2.0 लाइसेंस के तहत लाइसेंस प्राप्त है।
DescribeOrganizationalUnitaccount_ou_uidaccount_ou_name