أمان IAM والهوية
أخطاء تكوين IAM الخطيرة
أخطاء تكوين IAM وراء معظم خروقات السحابة. فهم الأخطاء الشائعة يساعدك في تجنبها والتعرف عليها أثناء تقييمات الأمان.
الأنماط الأكثر خطورة
1. السياسات المتساهلة بشكل مفرط ("المدير للجميع")
أكثر أخطاء التكوين شيوعاً وخطورة:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}]
}
لماذا هي خطيرة:
- أي بيانات اعتماد مخترقة = وصول كامل للحساب
- تنتهك مبدأ أقل صلاحيات
- شائعة في بيئات التطوير التي تصل للإنتاج
كيفية البحث:
# AWS CLI - البحث عن سياسات بإجراءات *
aws iam list-policies --scope Local --query 'Policies[*].Arn' | \
xargs -I {} aws iam get-policy-version --policy-arn {} --version-id v1 | \
grep -l '"Action": "\*"'
2. سياسات الثقة العامة
أدوار IAM التي يمكن لأي شخص تولیها:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "sts:AssumeRole"
}]
}
التأثير: أي حساب AWS في العالم يمكنه تولي هذا الدور.
النهج الصحيح:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "unique-external-id"
}
}
}]
}
3. مفاتيح الوصول طويلة العمر
بيانات الاعتماد الثابتة التي لا تتدور:
# مفاتيح الوصول الأقدم من 90 يوماً
aws iam list-access-keys --user-name developer
# المخرجات تظهر تاريخ إنشاء من 2023...
المخاطر:
- تسريب المفاتيح في مستودعات الكود
- تخزين المفاتيح على أجهزة محمولة مخترقة
- لا انتهاء صلاحية = نافذة هجوم غير محدودة
الحل: استخدام أدوار IAM وبيانات الاعتماد المؤقتة:
# بدلاً من بيانات الاعتماد المشفرة
import boto3
# استخدم instance profile (لا بيانات اعتماد في الكود)
session = boto3.Session()
s3 = session.client('s3')
# أو تولي دور
sts = boto3.client('sts')
credentials = sts.assume_role(
RoleArn='arn:aws:iam::123456789012:role/MyRole',
RoleSessionName='MySession'
)
4. متطلبات MFA المفقودة
السماح بعمليات حساسة بدون MFA:
{
"Effect": "Allow",
"Action": ["iam:*", "s3:*"],
"Resource": "*"
}
يجب أن تكون:
{
"Effect": "Allow",
"Action": ["iam:*", "s3:*"],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
5. مشكلة النائب المرتبك
الوصول عبر الحسابات بدون External ID:
سياسة ثقة ضعيفة:
{
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "sts:AssumeRole"
}
سيناريو الهجوم:
- تمنح وصولاً لخدمة طرف ثالث (الحساب A)
- المهاجم يستخدم نفس الخدمة أيضاً
- المهاجم يخدع الخدمة لتولي دورك
- المهاجم يحصل على وصول لحسابك
الوقاية:
{
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "your-unique-id-here"
}
}
}
أخطاء التكوين الخاصة بـ Azure
صلاحيات الدور المخصص المفرطة
{
"Name": "CustomAdmin",
"Actions": [
"*"
],
"AssignableScopes": [
"/subscriptions/subscription-id"
]
}
الوصول المشروط المفقود
لا متطلبات MFA للأدوار المميزة:
- Global Administrator يصل من أي موقع
- لا كشف عن السفر المستحيل
- لا متطلبات امتثال الجهاز
أسرار Service Principal
أسرار طويلة العمر بدلاً من مصادقة الشهادة:
# Service principal بكلمة مرور (محفوف بالمخاطر)
az ad sp create-for-rbac --name "MyApp" --password "WeakPassword123"
# أفضل: استخدم مصادقة الشهادة
az ad sp create-for-rbac --name "MyApp" --cert @cert.pem
أخطاء التكوين الخاصة بـ GCP
الأدوار البدائية في الإنتاج
استخدام Owner/Editor بدلاً من الأدوار المحددة مسبقاً:
# سيء: دور بدائي بصلاحيات مفرطة
gcloud projects add-iam-policy-binding my-project \
--member="user:developer@example.com" \
--role="roles/editor"
# جيد: دور محدد مسبقاً محدد
gcloud projects add-iam-policy-binding my-project \
--member="user:developer@example.com" \
--role="roles/cloudsql.viewer"
تصدير مفتاح Service Account
تنزيل مفاتيح service account يخلق بيانات اعتماد طويلة العمر:
# يخلق مفتاحاً قابلاً للتنزيل (تجنب هذا)
gcloud iam service-accounts keys create key.json \
--iam-account=sa@project.iam.gserviceaccount.com
نهج أفضل: Workload Identity لـ GKE، service accounts مرفقة للحوسبة.
قائمة فحص الكشف
| خطأ التكوين | طريقة الكشف |
|---|---|
| سياسات wildcard | أدوات تحليل السياسات (Prowler, ScoutSuite) |
| principals عامة | مراجعة سياسة الثقة |
| مفاتيح وصول قديمة | تقرير بيانات اعتماد IAM |
| لا MFA | تقرير بيانات الاعتماد، تدقيق Console |
| صلاحيات غير مستخدمة | IAM Access Analyzer (AWS) |
| أدوار ذات صلاحيات مفرطة | تحليل حدود الصلاحيات |
التالي، سنستكشف أفضل ممارسات إدارة بيانات الاعتماد لمنع هذه المشاكل. :::