
Cloudsplaining هي أداة تقييم أمان AWS IAM التي تحدد انتهاكات مبدأ الامتياز الأقل وتنشئ تقريرًا مرتبًا حسب أولوية المخاطر.
Cloudsplaining هي أداة تقييم أمان IAM في AWS لتحديد انتهاكات مبدأ الامتياز الأقل وإنشاء تقرير HTML مرتّب حسب الأولوية.
للاستفسار عن التوثيق الكامل، يرجى زيارة المشروع على ReadTheDocs.
يحدد Cloudsplaining انتهاكات مبدأ الامتياز الأقل في سياسات IAM في AWS وينشئ تقرير HTML جميل. يمكنه مسح جميع السياسات في حساب AWS الخاص بك، عبر حسابات AWS متعددة، أو مسح ملف سياسة واحد.
يساعد في تحديد إجراءات IAM التي لا تستخدم قيود الموارد. كما يساعد في تحديد أولويات عملية التصحيح من خلال وضع علامة على سياسات IAM التي تشكل المخاطر التالية على حساب AWS المعني دون قيود:
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)كما يحدد Cloudsplaining أدوار IAM التي يمكن لخدمات الحوسبة في AWS (مثل EC2 وECS وEKS أو Lambda) أن تفترضها، لأنها قد تشكل خطرًا أكبر من الأدوار المحددة من قبل المستخدم - خاصة إذا كانت خدمة الحوسبة في AWS موجودة على مثيل معرض بشكل مباشر أو غير مباشر للإنترنت. وضع علامات على هذه الأدوار مفيد بشكل خاص لاختبار الاختراق (أو المهاجمين) في سيناريوهات معينة. على سبيل المثال، إذا حصل مهاجم على صلاحيات تنفيذ ssm:SendCommand وكانت هناك مثيلات EC2 متميزة مثبت عليها وكيل SSM، فيمكنه الحصول فعليًا على صلاحيات تلك المثيلات EC2. كان تنفيذ التعليمات البرمجية عن بعد عبر وكيل AWS Systems Manager بالفعل مسار تصعيد/استغلال معروف، لكن Cloudsplaining يمكنه تسهيل عملية تحديد هذه الحالات. راجع التقرير النموذجي للحصول على بعض الأمثلة.
يمكنك أيضًا تحديد ملف استثناءات مخصص لتصفية النتائج التي تعتبر نتائج إيجابية خاطئة لأسباب مختلفة. على سبيل المثال، سياسات المستخدم متساهلة حسب التصميم، بينما أدوار النظام عادة ما تكون أكثر تقييدًا. قد يكون لديك أيضًا استثناءات خاصة باستراتيجية حسابات متعددة لمؤسستك أو بنية تطبيق AWS الخاصة بك.
كشف Policy Sentry لنا أنه من الممكن أخيرًا كتابة سياسات IAM وفقًا لمبدأ الامتياز الأقل بطريقة قابلة للتطوير. قبل إصدار Policy Sentry، كان من السهل جدًا العثور على مستندات سياسة IAM تفتقر إلى قيود الموارد. خذ بعين الاعتبار السياسة أدناه، التي تسمح للمبدأ الأساسي IAM (دور أو مستخدم) بتنفيذ s3:PutObject على أي حاوية S3 في حساب AWS:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
هذا سيئ. من الأفضل تقييد الوصول وفقًا لـ ARNs الخاصة بالموارد، مثل ما يلي:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry يجعل من السهل جدًا القيام بذلك. بمجرد أن يكتسب مطورو البنية التحتية كرمز أو مسؤولو AWS الإلمام بالأداة (والتي من السهل جدًا استخدامها)، وجدنا أن التبني يبدأ بسرعة كبيرة. ومع ذلك، إذا كنت تستخدم AWS، فمن المحتمل أن يكون هناك تراكم كبير جدًا من سياسات IAM التي يمكن تحسينها. إذا كان لديك مئات من حسابات AWS مع عشرات السياسات في كل حساب، كيف يمكننا تأمين حسابات AWS هذه من خلال تحديد السياسات التي يجب إصلاحها برمجيًا؟
لهذا السبب قمنا بكتابة Cloudsplaining.
يقوم Cloudsplaining بتحديد انتهاكات مبدأ الامتياز الأدنى في سياسات IAM الخاصة بـ AWS وينشئ تقرير HTML جميل. يمكنه فحص جميع السياسات في حساب AWS الخاص بك، عبر حسابات AWS متعددة، أو يمكنه فحص ملف سياسة واحد.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining من سطر الأوامر عن طريق تشغيل cloudsplaining --help.لتمكين إكمال Bash، ضع هذا في .bashrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
لتمكين ZSH completion، ضع هذا في .zshrc الخاص بك:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
يمكنك أيضًا مسح ملف سياسة واحد لتحديد المخاطر بدلاً من الحساب بأكمله.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
سيتضمن المخرجات وصفًا للاكتشاف وقائمة بإجراءات IAM التي لا تستخدم قيود الموارد.
سيبدو المخرجات مشابهًا لما يلي:```console
Issue found: Data Exfiltration
Actions: s3:GetObject
Issue found: Resource Exposure
Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl