
أداة AWS لمساعدتك في إنشاء تقييم في وقت معين لحساب AWS الخاص بك باستخدام Prowler.
لا تزال الأمن السيبراني موضوعًا مهمًا للغاية ومصدر قلق للعديد من مدراء تقنية المعلومات (CIOs)، ومدراء أمن المعلومات (CISOs)، وعملائهم. ولمواجهة هذه المخاوف المهمة، طورت AWS مجموعة أساسية من الخدمات التي يجب على العملاء استخدامها للمساعدة في حماية حساباتهم. تساعد مراجعات Amazon GuardDuty وAWS Security Hub وAWS Config وAWS Well-Architected العملاء في الحفاظ على وضع أمني قوي عبر حساباتهم في AWS. مع قيام المزيد من المؤسسات بالنشر إلى السحابة، خاصة إذا كانت تفعل ذلك بسرعة، ولم تقم بعد بتنفيذ خدمات AWS الموصى بها، قد تكون هناك حاجة لإجراء تقييم أمني سريع للبيئة السحابية.
لقد طورنا حلاً غير مكلف وسهل النشر وآمن وسريع لتزويد عملائنا بتقرير تقييم أمني. يتم إنشاء هذه التقارير باستخدام المشروع مفتوح المصدر Prowler. يقوم Prowler بإجراء تقييم أمني في نقطة زمنية معينة بناءً على أفضل ممارسات AWS ويمكن أن يساعد في تحديد أي مجالات خطر محتملة بسرعة في البيئة المنشورة لدى العميل. إذا كنت مهتمًا بإجراء هذه التقييمات بشكل مستمر، توصي AWS بتمكين معيار Foundational Security Best Practices standard في Security Hub. إذا كنت مهتمًا بدمج نتائج تقييم Prowler مع Security Hub، يمكنك اتباع التعليمات في وثائق Prowler.
ملاحظة: Prowler ليس حلاً مملوكًا لـ AWS. يجب على العملاء مراجعة Prowler بشكل مستقل قبل تشغيل هذا الحل. يجب الحفاظ على تحديث أي تبعيات مرتبطة بـ Prowler. يقوم هذا الحل بتثبيت إصدار مثبت من Prowler (حاليًا 5.41.0) من مثبت حزمة pip، بحيث لا يمكن لتغيير في تنسيق إخراج Prowler أن يكسر الفحص دون تحذير. للانتقال إلى إصدار أحدث، قم بتحرير سطر في ملف .
pip3 install prowler==2-sat2-codebuild-prowler.yaml📕 للحصول على تعليمات أكثر تفصيلاً خطوة بخطوة، قم بزيارة الوحدة 2 في ورشة عمل SHIP.
يتم نشر الحل باستخدام AWS CloudFormation. عند النشر، يتم إنشاء مشروع AWS CodeBuild ودلو Amazon S3 لتخزين التقارير التي ينشئها Prowler. ثم يتم استخدام دالة AWS Lambda لبدء مشروع AWS CodeBuild.
ستقوم القيم الافتراضية للمعلمات (مدخلات المستخدم) بتشغيل فحص أساسي في حساب واحد. ومع ذلك، يمكنك اختيار معلمات مختلفة لتشغيل فحوصات أكثر شمولاً أو لفحص حسابات متعددة. تستغرق عملية النشر أقل من 5 دقائق لإكمالها. يتم توفير قوالب AWS CloudFormation الخاصة بالحل للمراجعة في مستودع Github هذا.
بمجرد نشر القالب، سيتم تشغيل مشروع CodeBuild. يستغرق التقييم الافتراضي حوالي 5 دقائق لإكماله. سيختلف الوقت المستغرق لإكمال التقييم الأمني اعتمادًا على عدد الموارد وخيارات الفحص المحددة. في نهاية التقييمات، يتم تسليم التقارير إلى دلو S3 الذي تم إنشاؤه.

يمكن تخصيص SATv2 عن طريق تحديث معلمات CloudFormation. يلخص هذا القسم الخيارات المتاحة ويوفر رابطًا للقسم الذي يحتوي على مزيد من المعلومات.
| المعلمة | الوصف | مزيد من المعلومات |
|---|---|---|
| ProwlerScanType | حدد نوع الفحص الذي تريد تنفيذه. اختيار full دون تحديد ProwlerOptions مختلفة سيقوم بفحص كامل. لتنفيذ فحص محدد، اختر Full وأضف -c إلى ProwlerOptions. | أنواع الفحص |
| MultiAccountScan | اضبط هذا على true إذا كنت تريد فحص جميع الحسابات في مؤسستك. يجب أن تكون قد نشرت القالب المسبق لتوفير دور، أو حدد ProwlerRole مختلفًا بالصلاحيات المناسبة. | الفحص متعدد الحسابات |
| Reporting | اضبط هذا على true إذا كنت تريد تلخيص تقارير Prowler في ملف csv واحد. هذا مفيد عند فحص حسابات متعددة. | ملخص التقارير |
| EmailAddress | حدد عنوانًا إذا كنت تريد تلقي بريد إلكتروني عند اكتمال التقييم. | الإشعارات |
| المعلمات المتقدمة | ||
| ConcurrentAccountScans | للفحوصات متعددة الحسابات، حدد عدد الحسابات المراد فحصها بشكل متزامن. هذا مفيد للمؤسسات الكبيرة التي لديها العديد من الحسابات. اختيار أكثر من ثلاثة يغير حجم مثيل CodeBuild وقد يؤدي إلى تكاليف إضافية. | |
| CodeBuildTimeout | اضبط المهلة لوظيفة CodeBuild. الافتراضي هو 300 دقيقة (5 ساعات). | |
| MultiAccountListOverride | حدد قائمة مفصولة بمسافات من الحسابات المراد فحصها. ترك هذا فارغًا سيقوم بفحص جميع الحسابات في مؤسستك. تأكد من أنك قمت بتعيين معلمة MultiAccountScan أعلاه على true إذا كنت تريد فحص حسابات محددة. إذا لم تتمكن من توفير وصول ListAccount مفوض، يمكنك توفير معلمة MultiAccountListOverride. | الفحص متعدد الحسابات |
| ProwlerOptions | حدد المعلمات لـ Prowler. سيتم إضافة --role و ARN تلقائيًا إلى نهاية المعلمات التي تحددها. يمكن استخدام هذا أيضًا لتحديد فحص واحد. | الفحص الكامل |
| ProwlerRole | الدور الذي يجب أن يفترضه Prowler لتنفيذ الفحص. غيّر هذا إذا كنت تريد تحديد دورك الخاص بصلاحيات مختلفة. |
يمكنك استخدام هذا المشروع لتشغيل Prowler عبر حسابات متعددة في مؤسسة AWS، أو حساب واحد. نقدم تعليمات لاستخدام 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.
تفترض هذه التعليمات أن لديك بالفعل المتطلبات الأساسية لعمليات Stack Set. لمزيد من المعلومات، قم بزيارة دليل مستخدم AWS CloudFormation.
ملاحظة: لا تنطبق StackSets على حساب الإدارة. لتقييم حساب الإدارة، قم بنشر 1-sat2-member-role كمكدس CloudFormation.
سجل الدخول إلى حساب إدارة AWS الخاص بك.
في شريط التنقل، اختر AWS CloudShell.
حدد الحساب الذي ستشغل منه فحص Prowler. يستخدم العملاء عادةً حساب أدوات أمنية أو حساب تدقيق. دوّن معرف الحساب لمعلمة ProwlerAccountID.
لتنزيل قالب CloudFormation، أدخل الأمر التالي.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/1-sat2-member-roles.yaml
قم بنشر قالب CloudFormation عبر CloudFormation StackSets. قم بتحديث المعلمات التالية:
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، لذا ستحتاج إلى استخدام مسؤول مفوض.
7أ. قد يكون حساب Prowler الخاص بك لديه بالفعل تفويض. يمكنك استخدام الأوامر التالية للتحقق:
aws organizations list-delegated-administrators
7ب. قد يكون حساب Prowler الخاص بك لديه بالفعل سياسة موارد. يمكنك استخدام الأوامر التالية للتحقق:
aws organizations describe-resource-policy
إذا لم يكن لديك مسؤول مفوض أو سياسة موارد، يمكنك استخدام الأوامر التالية لإضافة الوصول المناسب.
ملاحظة: إذا لم تتمكن من توفير وصول ListAccount مفوض، يمكنك توفير معلمة MultiAccountListOverride في قالب
2-sat2-codebuild-prowler.
ملاحظة: إذا كنت تستخدم GovCloud، استخدم الخطوة 8أ لإنشاء مسؤول مفوض. إذا كنت تستخدم منطقة تجارية، استخدم الخطوة 8ب لتوفير وصول بأقل صلاحيات إلى ListAccounts.
8أ. استخدم الأمر التالي لتفويض مسؤول إذا لم يكن لديك واحد بالفعل. استبدل <aws-account-id> بمعرف الحساب الذي ستشغل منه Prowler.
aws organizations register-delegated-administrator <aws-account-id>
8ب. استخدم الأوامر التالية لإضافة سياسة موارد.
استبدل <aws-account-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وDescribeOrganizationalUnitهما ما يملآن عمودي و في النتائج. احذفهما وسيستمر باقي الفحص في العمل، لكن هذين العمودين سيعودان فارغين.
ملاحظة: تأكد من أنك قمت بالتبديل إلى الحساب الذي حددت أنه سيشغل Prowler.
لتنزيل القالب، افتح AWS CloudShell في حساب Prowler وأدخل الأمر التالي.
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 عبر CloudFormation StackSets. قم بتحديث المعلمات التالية:
في جزء التنقل، اختر StackSets.
اختر Create StackSet.
بالنسبة إلى Permissions، اترك Service-managed permissions محددًا.
ضمن Specify template، حدد Upload a template file.
اختر 1-sat2-member-roles.yaml الذي نزّلته في الخطوة 1-1.
اختر 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.
بالنسبة إلى Delegated administrator for AWS Organizations، أدرج العبارة التالية.
{
"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.
اختر 2-sat2-codebuild-prowler.yaml الذي نزّلته في الخطوة 1-1.
اختر 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. إذا قمت بتكوين إعداد التقارير، فسيكون لديك ملف csv موحّد في مجلد /reports.
إذا لم تقم بتكوين تنبيهات البريد الإلكتروني، يمكنك متابعة التقدم من وحدة تحكم 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 الموحّد ولوحة المعلومات
كل تشغيل يحصل على مجلده الخاص، لذا فإن تشغيل الحل مرة أخرى لا يخلط أبدًا النتائج الجديدة بالقديمة، بما في ذلك عند تشغيله أكثر من مرة في نفس اليوم. يتم الاحتفاظ بالتشغيلات السابقة حتى تتمكن من مقارنتها.
لكل حساب، سيكون هناك 4 أنواع ملفات (csv, html, json, json-ocsf) بصيغة prowler-output-<aws-account-id>-<datetime>.
حدد أحد كائنات html.
اختر Open.

ستفتح نافذة جديدة مع تقريرك. يمكنك استخدام عوامل التصفية لتحديد النتائج وترتيب أولوياتها.

إذا قمت بتفعيل إعداد التقارير، فستكون لوحة معلومات html ثابتة في مجلد التقارير.
ملاحظة: لا تشارك رابط presigned URL الخاص بك مع أي شخص. يستخدم رابط presigned URL بيانات اعتماد أمنية لمنح إذن محدود بالوقت لتنزيل الكائنات. يمكن إدخال الرابط في متصفح أو استخدامه بواسطة برنامج لتنزيل الكائن. بيانات الاعتماد المستخدمة بواسطة رابط presigned URL هي بيانات مستخدم AWS الذي أنشأ الرابط. لمزيد من المعلومات، راجع مشاركة الكائنات باستخدام روابط presigned URLs.
يحتوي Prowler على لوحة معلومات مدمجة لمراجعة النتائج. لاستخدام لوحة معلومات Prowler، يجب تثبيت Prowler محليًا ويجب تنزيل نتائج Prowler محليًا.
يجب أن يكون لديك AWS Command Line Interface (CLI) وبيانات اعتماد صالحة. لمزيد من المعلومات، راجع دليل مستخدم AWS Command Line interface.
ثبّت Prowler. لمزيد من المعلومات، راجع تعليمات تثبيت Prowler.
pip install prowler
احصل على اسم حاوية Amazon S3. اسم الحاوية موجود في وحدة تحكم CloudFormation كمورد ProwlerFindingsBucket. بدلاً من ذلك، انتقل إلى وحدة تحكم S3 وابحث عن حاوية بصيغة {stack_name}-prowlerfindingsbucket-{ID}
نزّل ملفات CSV وبيانات الامتثال من S3. إذا لم تقم بتشغيل فحص كامل، فقد لا يكون لديك بيانات امتثال. استبدل {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 أعلاه. وينطبق ذلك على كل مثال `aws cloudformation deploy` في هذا README.
تُضاف الفحوصات بشكل متكرر، ولمعرفة أحدث الفحوصات، شغّل الأمر `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 يومًا أو أقل.
- التأكد من عدم وجود حاويات S3 مفتوحة للجميع أو لأي مستخدم AWS.
### الفحص المتوسط
لعرض قائمة الفحوصات، راجع [الفحوصات المتوسطة](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/intermediate_checks.txt).
سيضيف هذا الفحص `--severity critical high` إلى خيارات فحص Prowler. مع تحديد هذا الخيار، سيشغّل 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`
## الإشعارات
يمكنك اختياريًا تحديد عنوان بريد إلكتروني في معامل EmailAddress عند نشر قالب CloudFormation. سيؤدي ذلك إلى إنشاء موضوع 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.
اختر مشروع البناء الذي يبدأ بـ ProwlerCodeBuild- .
ضمن Build history، سترى آخر تشغيل.

اختياريًا، يمكنك اختيار Start build لتشغيل فحص آخر بالخيارات التي اخترتها عند نشر الحل.
يمكنك اختياريًا تفعيل التقارير لتلخيص نتائج فحوصات Prowler المتعددة في ملف واحد. قد يكون هذا مفيدًا عند تشغيل Prowler عبر حسابات متعددة في مؤسسة AWS. ميزة ملخص التقارير معطلة افتراضيًا. لتفعيل التقارير، اضبط معلمة Reporting على true عند نشر قالب CloudFormation. سيؤدي ذلك إلى إنشاء WorkGroup في Athena، وجدول Glue، وتشغيل استعلام تلقائيًا لتوحيد النتائج. يقع ملف csv الملخص في نفس حاوية S3 الخاصة بنتائج Prowler داخل مجلد /reports.
إذا حددت عنوان بريد إلكتروني بينما التقارير مفعلة، فستتلقى بريدًا إلكترونيًا ثانيًا عند انتهاء استعلام Athena.
يستعلم Athena عن نسخة parquet/ من النتائج بدلاً من ملف CSV الخاص بـ Prowler. يحول مشروع CodeBuild كل CSV إلى Parquet قبل رفعه، ويشير جدول Glue prowler إلى parquet/.
يوجد التحويل لأن Prowler 5.17.0 والإصدارات الأحدث تتضمن markdown متعدد الأسطر في بيانات الفحص الوصفية، لذا تحتوي الحقول DESCRIPTION وRISK وREMEDIATION_* على أسطر جديدة. يقتبس Prowler تلك الحقول بشكل صحيح، لكن Athena يقرأ CSV عبر TextInputFormat الخاص بـ Hive، الذي يقسم السجلات على الأسطر الجديدة قبل تشغيل أي SerDe. لذلك يعيد الجدول المدعوم بـ CSV صفًا واحدًا لكل سطر فعلي بدلاً من صف واحد لكل نتيجة، ويسقط بصمت الأعمدة التي تتبع أول حقل متعدد الأسطر. لا يستخدم Parquet الأسطر الجديدة كحدود للسجلات، لذا يبقى النص سليمًا. كما يضغط Parquet نص المعالجة المتكرر بشكل كبير، مما يجعل الاستعلامات أرخص: مجموعة ملفات CSV بحجم 116 ميجابايت تصبح حوالي 3 ميجابايت من Parquet.
يُترك مجلد csv/ تمامًا كما كتبه Prowler، لذا تستمر لوحة تحكم Prowler وأي أدوات CSV موجودة في العمل.
الجدول مقسم على scan_date و scan_time، لذا يحصل كل تشغيل للحل على قسم خاص به. يترتب على ذلك أمران:
/reports أحدث تشغيل فقط، لذا فإن إعادة تشغيل الحل لا تحسب النتائج مرتين أبدًا، ولا تبقى النتائج التي لم تعد موجودة في التقرير.scan_date وscan_time عمودان عاديان، لذا يمكنك مقارنة النتائج بين التشغيلات. يقوم استعلام Prowler scan trend المحفوظ بذلك، صف واحد لكل تشغيل.التقسيم على التاريخ وحده غير كافٍ. فحص ثانٍ في نفس اليوم سيكتب في نفس القسم، وسيتم دمج نتائجه مع نتائج التشغيل السابق بدلاً من استبدالها. أي نتيجة لم يعد الفحص الأحدث يبلغ عنها، بسبب حذف مورد، أو مغادرة حساب للمؤسسة، أو توقف دور عضو عن العمل، أو تضييق نوع الفحص، ستظل تظهر في التقرير وتبدو حديثة.
يتم تسجيل الأقسام الجديدة تلقائيًا: ينفذ 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`، ثم قم بتشغيل `MSCK REPAIR TABLE prowler` في Athena.
على سبيل المثال، عملية فحص متعددة الحسابات مع تمكين التقارير والتنبيهات عبر البريد الإلكتروني ستستخدم هذا الأمر:```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-*.
اختر علامة التبويب الاستعلامات المحفوظة.
حدد الاستعلام الذي تريد تشغيله باختيار المعرّف.

اختر تشغيل لتشغيل الاستعلام.

| الفحص | التخفيف |
|---|---|
| التحقق مما إذا كانت عمليات استدعاء واجهة برمجة التطبيقات لدوال Lambda مسجلة بواسطة CloudTrail. | CloudTrail هو تكوين على مستوى حساب AWS. يجب تمكين CloudTrail بشكل مستقل عن SATv2. |
| تمكين حماية الإنهاء لمكدسات CloudFormation | يُقصد من SATv2 تشغيله لنقطة زمنية معينة، ثم حذفه. إذا تم إنهاء المكدس، تظل النتائج محفوظة في حاوية S3. |
| التحقق مما إذا كانت مجموعات سجلات CloudWatch محمية بواسطة AWS KMS. | بيانات مجموعة السجلات مشفرة دائمًا في CloudWatch Logs. افتراضيًا، يستخدم CloudWatch Logs التشفير من جانب الخادم لبيانات السجلات غير النشطة. لا يتم تكوين مفتاح KMS مُدار من قبل العميل لتوفير التكاليف. |
| التحقق مما إذا كانت مجموعات سجلات CloudWatch لديها سياسة استبقاء لأيام محددة. | تم تعيين استبقاء مجموعة السجلات إلى 7 أيام حسب التصميم. يبحث هذا الفحص عن مجموعات السجلات ذات الاستبقاء الأقل من عام. |
| التحقق مما إذا كانت حاويات S3 قد تم تمكين تشفير KMS لها. | جميع حاويات Amazon S3 لديها تشفير مُكوّن افتراضيًا، ويتم تشفير الكائنات تلقائيًا باستخدام التشفير من جانب الخادم مع مفاتيح مُدارة بواسطة Amazon S3 (SSE-S3). لا يتم تكوين مفتاح KMS مُدار من قبل العميل لتوفير التكاليف. |
| التحقق مما إذا كان حذف MFA لحاويات S3 غير ممكّن. | يمكن إعادة إنشاء نتائج تقييم Prowler ولا تتطلب حذف MFA. |
| التحقق مما إذا كانت حاويات S3 قد تم تمكين قفل الكائنات فيها | يمكن إعادة إنشاء نتائج تقييم Prowler ولا تتطلب قفل كائنات S3. |
| التحقق مما إذا كانت حاويات S3 قد تم تمكين تسجيل الوصول من الخادم فيها | لا تتطلب نتائج تقييم Prowler تسجيل الوصول من الخادم. |
بعد تشغيل الحل، يجب عليك حذف مكدسات CloudFormation لإزالة الموارد التي لم تعد هناك حاجة إليها. ستبقى حاوية S3 التي تحتوي على نتائج فحص Prowler.
لإزالة حل التقييم الأمني من حسابك، اتبع الخطوات التالية.
انتقل إلى وحدة تحكم AWS CloudFormation في الحساب الذي قمت بتشغيل الأداة منه (ProwlerAccountID).
في جزء التنقل، اختر المكدسات.
اختر مكدس sat2-prowler.
اختر حذف.
إذا قمت بنشر StackSet لدور العضو لفحص حسابات متعددة، فاتبع الخطوات التالية.
انتقل إلى وحدة تحكم AWS CloudFormation في الحساب الذي أنشأت فيه StackSet لدور العضو.
في جزء التنقل، اختر مجموعات المكدسات.
اختر مجموعة المكدسات sat2-member-roles.
اختر إجراءات، ثم حذف المكدسات من مجموعة المكدسات.
حدد نفس معرّف وحدة AWS OU عند إنشاء مجموعة المكدسات.
بالنسبة لـ تحديد المناطق، اختر إضافة جميع المناطق.
اختر التالي، ثم إرسال.
بعد اكتمال التغيير، يمكنك حذف مجموعة المكدسات.
اختر مجموعة المكدسات sat2-member-roles.
اختر إجراءات، ثم حذف مجموعة المكدسات.
إذا كنت تريد إزالة حاوية Amazon S3 التي تحتوي على نتائج الفحص، فاتبع الخطوات الواردة في دليل مستخدم Amazon S3 لحذف الكائنات والحاوية. إذا قمت بتشغيل الحل مرة أخرى، فسيتم إنشاء حاوية S3 جديدة لنتائجك.
راجع المساهمة لمزيد من المعلومات.
هذا المشروع مرخص بموجب ترخيص Apache-2.0.
account_ou_uidaccount_ou_name