إتقان AWS IAM: users، groups، roles، policies (managed و inline)، trust policies، identity federation (SAML، Cognito)، Service Control Policies عبر Organizations، MFA، access keys، AWS STS و assume-role، IAM Access Analyzer.
للسياق: الدليل الرئيسي AWS SAA-C03 · حساب AWS Free Tier.
المقدّمة
IAM (Identity and Access Management) هو حجر الزاوية لأمن AWS. يزن ~25% من المجال 1 (Secure Architectures = 30%) من SAA-C03، أي 7-8 أسئلة في الاختبار. إتقان IAM غير قابل للتفاوض.
المتطلّبات
- حساب AWS مُهيَّأ.
- AWS CLI شغّال.
- فهم JSON.
- المستوى المتوسّط.
- الوقت: ساعتان.
الخطوة 1 — المفاهيم الأساسيّة
User : هويّة بشريّة (شخص واحد = user واحد، لا مشاركة أبداً)
Group : مجموعة users لها نفس الصلاحيّات
Role : هويّة قابلة للاستلام مؤقّتاً (من EC2، Lambda، خدمة AWS أخرى، حساب آخر)
Policy : وثيقة JSON تُعدّد Allow/Deny للإجراءات على الموارد
الفرق الحرج: User = credentials طويلة الأمد (password + access keys). Role = credentials مؤقّتة (STS، تنتهي).
الخطوة 2 — تشريح policy IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadOnBucket",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::diallo-lab-2026",
"arn:aws:s3:::diallo-lab-2026/*"
],
"Condition": {
"IpAddress": { "aws:SourceIp": "203.0.113.0/24" }
}
}
]
}
المكوّنات: Effect (Allow/Deny)، Action (فعل API)، Resource (ARN)، Condition (قيود).
ترتيب التقييم: 1) Deny صريح يَغلب دائماً، 2) وإلّا Allow صريح، 3) وإلّا deny ضمنيّ افتراضيّ.
الخطوة 3 — إنشاء user و group و policies
# إنشاء group
aws iam create-group --group-name developers
# إرفاق policy AWS-managed للـ group
aws iam attach-group-policy --group-name developers --policy-arn arn:aws:iam::aws:policy/PowerUserAccess
# إنشاء user
aws iam create-user --user-name fatou-dev
# إضافة user إلى group
aws iam add-user-to-group --user-name fatou-dev --group-name developers
# إنشاء login profile (password)
aws iam create-login-profile --user-name fatou-dev --password "TempPwd2026!" --password-reset-required
# إنشاء access key (CLI/SDK)
aws iam create-access-key --user-name fatou-dev
# Output: AccessKeyId + SecretAccessKey (للتسليم عبر قناة آمنة)
الخطوة 4 — Roles و trust policies
لـ role policy اثنين:
- Trust policy: من يستطيع استلام هذا الـ role
- Permissions policy: ماذا يستطيع الـ role فعله بعد الاستلام
Trust policy لـ role قابل للاستلام من EC2:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com" },
"Action": "sts:AssumeRole"
}]
}
# إنشاء role
aws iam create-role --role-name EC2-S3-ReadOnly --assume-role-policy-document file://trust-policy.json
# إرفاق permissions
aws iam attach-role-policy --role-name EC2-S3-ReadOnly --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# إنشاء instance profile (ربط role ← EC2)
aws iam create-instance-profile --instance-profile-name EC2-S3-ReadOnly
aws iam add-role-to-instance-profile --instance-profile-name EC2-S3-ReadOnly --role-name EC2-S3-ReadOnly
# إرفاق بـ instance EC2
aws ec2 associate-iam-instance-profile --instance-id i-xxx --iam-instance-profile Name=EC2-S3-ReadOnly
الـ instance يستطيع الآن قراءة S3 بلا access keys مُضمَّنة. هذا best practice — لا keys على EC2 أبداً.
الخطوة 5 — STS و credentials مؤقّتة
# وصول cross-account عبر assume-role
aws sts assume-role --role-arn arn:aws:iam::123456789:role/CrossAccountRole --role-session-name fatou-session
# Output: AccessKeyId + SecretAccessKey + SessionToken (تنتهي بعد ساعة افتراضيّاً، حدّ أقصى 12 ساعة)
الاستخدامات:
- وصول cross-account (user في الحساب A يستلم role في الحساب B)
- Federation: user مؤسّسيّ (AD) يصل AWS عبر SAML/OIDC، يستلم creds STS
- Cognito Identity Pool: مستخدم تطبيق موبايل يستلم creds STS لوصول محدود
الخطوة 6 — MFA و CLI
# إعداد MFA على user
aws iam create-virtual-mfa-device --virtual-mfa-device-name fatou-mfa --outfile QRCode.png --bootstrap-method QRCodePNG
aws iam enable-mfa-device --user-name fatou --serial-number arn:aws:iam::xxx:mfa/fatou-mfa --authentication-code1 123456 --authentication-code2 654321
# CLI مع MFA للإجراءات الحسّاسة
aws sts get-session-token --serial-number arn:aws:iam::xxx:mfa/fatou-mfa --token-code 123456 --duration-seconds 28800
# استعمل الـ creds المُرتجَعة (صلاحيّة 8 ساعات)
في الاختبار: MFA لكلّ الإجراءات الحسّاسة (delete S3، terminate EC2). نفّذه عبر condition aws:MultiFactorAuthPresent: true في policies.
الخطوة 7 — IAM Identity Center (سابقاً SSO)
لـ multi-حسابات (Organizations):
1. فعّل IAM Identity Center
2. أنشئ "permission sets" (أدوار مُهيَّأة: ReadOnly، PowerUser، Admin)
3. أَسنِد users/groups إلى حسابات + permission sets
4. Users يدخلون عبر بوّابة SSO وحيدة
5. CLI: aws sso login --profile mon-profil
موصى به 2026 مقابل users IAM فرديّة لكلّ حساب. Federation ممكنة مع Okta، Microsoft Entra، Google Workspace.
الخطوة 8 — Service Control Policies (SCP)
مع AWS Organizations، SCP تسمح بتقييد الصلاحيّات على مستوى OU/الحسابات.
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyOutsideEU",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["eu-west-3", "eu-west-1"] }
}
}]
}
هذه SCP تمنع أيّ نشر خارج أوروبا — مفيد لـ امتثال GDPR.
الخطوة 9 — IAM Access Analyzer
تدقيق آليّ للصلاحيّات المُفرِطة:
1. IAM > Access Analyzer > Create analyzer
2. AWS تفحص كلّ الموارد وتُنبّه عن:
- S3 bucket عامّ
- IAM role قابل للاستلام من حساب خارجيّ
- KMS key مُشتركَة
- Lambda function عامّة
3. Findings مُصنَّفة حسب الحرجيّة، للمعالجة
مجّاني، فعّله Day 1.
الخطوة 10 — Best practices IAM
1. Compte root MFA + عدم استعماله يوميّاً أبداً
2. كلّ users IAM مع MFA
3. لا access keys على instances EC2 ← IAM Roles
4. Password policy: 14+ حرفاً، تعقيد، rotation 90 يوم
5. مبدأ least privilege: ابدأ بـ policy أدنى، وسّع عند الحاجة
6. تدقيق منتظم بـ IAM Access Analyzer + Credential Report
7. Rotation الـ access keys كلّ 90 يوماً
8. CloudTrail مُفعَّل في كلّ مكان للتدقيق
9. SCP على مستوى Organizations للـ guardrails
10. Federation IAM Identity Center لـ multi-حسابات
الأخطاء المتكرّرة
| الخطأ | الحلّ |
|---|---|
| AccessDenied رغم policy | تحقّق من deny صريح في مكان آخر أو bucket policy |
| Cross-account لا يعمل | Trust policy الحساب A يجب أن يسمح، permissions policy الحساب B يجب أن تسمح |
| Access keys مُلزَمة في Git | إبطال فوريّ، rotation، تدقيق CloudTrail |
| User مُنشَأ بلا group | صلاحيّات فارغة — دائماً عبر group أو policy مُرفَقة |
| Role EC2 لا يعمل | تحقّق من instance profile مُرفَق بالـ instance، لا فقط role مُنشَأ |
تعديلات عمليّة لداكار وأبيدجان وباماكو
البنوك: IAM Identity Center + federation Active Directory + SCP صارمة لامتثال PCI DSS. تدقيق فصليّ إلزاميّ.
الشركات الناشئة: حساب واحد مع users IAM + MFA يكفي لـ < 10 أشخاص. الهجرة نحو Organizations + Identity Center حين يكبر الفريق.
ESN سحابيّة: حساب AWS لكلّ عميل + SCP عزل + cross-account roles للتدخّل. معماريّة قياسيّة 2026.
أسئلة شائعة
User IAM أم Identity Center؟
User IAM: حساب واحد، فريق < 5. Identity Center: multi-حسابات، فرق > 10، federation مؤسّسيّة.
كم أقصى مدّة session role؟
12 ساعة (بحدّ مدّة الـ role)، 1 ساعة افتراضيّاً. للـ console federation: 12 ساعة. للـ CLI: قابل للتعديل.
هل أحفظ access keys في .env؟
لا في الإنتاج. للتطوير المحلّيّ فقط، مع .gitignore صارم. الإنتاج ← IAM roles على EC2/ECS/Lambda، AWS Secrets Manager للبقيّة.
في التتمّة
- الدليل الرئيسي: AWS SAA-C03
- التتمّة: RDS و DynamoDB و Aurora: اختيار قاعدة البيانات.
- التوثيق: AWS IAM User Guide.
الكلمات المفتاحيّة: AWS IAM، users roles policies، MFA، trust policy، STS assume-role، IAM Identity Center، Service Control Policies، Access Analyzer.
دراسات حالات حقيقيّة في غرب إفريقيا
الحالة 1 — Fintech mobile money، داكار. 4 ملايين معاملة/شهر. التكلفة 4 200 USD/شهر، التوفّر 99.98%.
الحالة 2 — تجارة إلكترونيّة عابرة لإفريقيا. multi-region active-active. التكلفة 8 500 USD/شهر، ROI +23%.
الحالة 3 — هجرة بنك تقليديّ. 80% من workloads في 14 شهراً. توفير 40% في السنة 1، 55% في السنة 3.
خمسة سيناريوهات SAA-C03
1: تجارة إلكترونيّة HA. ALB + ASG scheduled scaling، CloudFront، Aurora Read Replicas، ElastiCache، SQS.
2: DR cross-region. Pilot Light، Aurora Global Database، Route 53 health checks.
3: تأمين بيانات. S3 SSE-KMS، EBS مُشفَّر، IAM least privilege، CloudTrail نحو S3 Object Lock، GuardDuty.
4: تحسين تكلفة. Instance Scheduler، RIs، Spot، Compute Savings Plans 3 سنوات. توفير 65-75%.
5: امتثال PCI DSS. تجزئة VPC، WAF + Shield، CloudHSM، AWS Config، Inspector، Security Hub.
التكاليف بـ FCFA لـ PME
30 موظّفاً، تطبيق SaaS، 10 000 مستخدم/شهر: ~225 USD/شهر ≈ 135 000 FCFA/شهر. مع RIs 3 سنوات: ~87 000 FCFA/شهر.
خطّة مهنة
0-12 شهراً: cloud engineer junior 800 000-1 200 000 FCFA. 12-30 شهراً: DevOps/Security Specialty 1 400 000-2 000 000 FCFA. 30-60 شهراً: architect SAP-C02 2 200 000-3 500 000 FCFA. 60+ شهراً: senior 400-800 USD/يوم.
أدوات تكميليّة
Terraform، AWS CDK، GitHub Actions، ECS/EKS/Fargate، CloudWatch + Datadog، Cost Explorer + Vantage.sh، Prowler + Security Hub + Wiz.