التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL
اكتبوا سياسات الحاويات، وقارنوها بقوائم ACL، واضبطوا إعدادات حظر الوصول العام للاستضافة الآمنة.
التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
نظرة عامة على التحكم بالوصول في S3
يوفر S3 عدة آليات متداخلة للتحكم بالوصول: سياسات IAM (قائمة على الهوية، وتتحكم فيما يمكن للكيانات الأساسية فعله)، وسياسات الحاويات (سياسات JSON قائمة على الموارد للحاوية)، وقوائم التحكم بالوصول (ACLs) (منح قديمة لكل كائن/حاوية)، وS3 Block Public Access (تجاوز على مستوى الحساب أو الحاوية يحظر أي وصول عام بغض النظر عن السياسات الأخرى). في معظم حالات الاستخدام اليوم، يُعد استخدام سياسات الحاويات مع Block Public Access هو النهج الموصى به—وتُعتبر ACLs قديمة.
سياسات الحاوية: مستندات JSON قائمة على الموارد
سياسة الحاوية هي مستند JSON يُرفق مباشرةً بحاوية S3. وهي تحدد أي كيانات رئيسية (مستخدمو IAM أو الأدوار أو حسابات AWS أو الخدمات أو الجمهور) يمكنها تنفيذ أي إجراءات على أي موارد (الحاوية و/أو بادئات المفاتيح المحددة). تدعم سياسات الحاويات الوصول عبر الحسابات من دون الحاجة إلى أدوار IAM: إذ يمكنك منح دور IAM تابع لحساب AWS آخر صلاحية قراءة كائنات محددة مباشرةً في سياسة الحاوية. يمكن أن تحتوي كل حاوية على سياسة واحدة، ويبلغ الحد الأقصى لحجمها 20 كيلوبايت.
# Allow a specific IAM role from another account to read objects
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::999999999999:role/PartnerReadRole'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/partner-data/*'
}]
}جعل الكائنات قابلة للقراءة علنًا
لعرض محتوى عام، مثل موارد موقع ويب ثابت أو مجموعات بيانات عامة، يمكنك جعل الكائنات قابلة للقراءة علنًا باستخدام سياسة حاوية. أولًا، عطّل Block Public Access على مستوى الحاوية، ثم أضف عبارة إلى سياسة الحاوية تتضمن Principal: '*' وAction: s3:GetObject. يلزم الجمع بين تعطيل إعداد Block Public Access وعبارة السماح في سياسة الحاوية؛ فلن يعمل تفعيل أحدهما دون الآخر. احصر المورد دائمًا في بادئة محددة بدلًا من الحاوية بأكملها، إلا إذا كنت تريد عمدًا أن تكون جميع الكائنات عامة.
# Public read policy for static website assets
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': '*',
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-website-bucket/public/*'
}]
}إعدادات S3 Block Public Access
تُعد S3 Block Public Access شبكة أمان تضم أربعة إعدادات تتجاوز سياسات الحاوية وقوائم ACL: BlockPublicAcls (يرفض طلبات تعيين قوائم ACL عامة)، وIgnorePublicAcls (يتجاهل قوائم ACL العامة الموجودة)، وBlockPublicPolicy (يرفض سياسات الحاوية التي تمنح وصولًا عامًا)، وRestrictPublicBuckets (يقيّد الوصول استنادًا إلى سياسة عامة). تكون الإعدادات الأربعة كلها مفعّلة افتراضيًا. يمكنك أيضًا تفعيل Block Public Access على مستوى الحساب، مما يحظره لجميع الحاويات بصرف النظر عن إعدادات كل حاوية، وهذا مثالي لمنع الكشف العام غير المقصود.
# Enable all Block Public Access settings on a bucket
aws s3api put-public-access-block \
--bucket my-private-bucket \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=trueقوائم التحكم بالوصول (ACLs): آلية قديمة
تُعد S3 ACLs آلية التحكم بالوصول الأصلية التي سبقت IAM. تمنح ACL أذونات محددة مسبقًا (READ وWRITE وFULL_CONTROL) لحسابات AWS أو لمجموعات محددة مسبقًا (كل المستخدمين، ومستخدمو AWS الذين تمت مصادقتهم، وتسليم السجلات). يمكن تطبيق قوائم ACL على مستوى الحاوية أو على مستوى كل كائن على حدة. توصي AWS الآن بتعطيل ACLs (إذ إن إعداد S3 المسمى 'Bucket Owner Enforced' يجعل مالك الحاوية مالكًا لجميع الكائنات ويعطّل ACLs) واستخدام سياسات الحاوية وIAM بدلًا منها. ولا تزال ACLs واردة في اختبار SAA-C03 باعتبارها مفهومًا قديمًا.
# Disable ACLs by setting ownership to BucketOwnerEnforced
aws s3api put-bucket-ownership-controls \
--bucket my-bucket \
--ownership-controls '{"Rules":[{"ObjectOwnership":"BucketOwnerEnforced"}]}'التحكم في الوصول إلى المصدر لـ CloudFront
عند عرض محتوى S3 عبر CloudFront، ينبغي أن تبقى الحاوية خاصة مع تمكين CloudFront من جلب الكائنات. استخدم Origin Access Control (OAC)، وهو البديل الحديث لـ Origin Access Identity (OAI). ينشئ OAC هوية لـ CloudFront تمنحها إذن s3:GetObject في سياسة الحاوية، مع الإبقاء على Block Public Access مفعّلًا. بهذه الطريقة، يجب أن يمر المستخدمون عبر CloudFront للاستفادة من التخزين المؤقت وWAF وHTTPS، ولا يمكنهم الوصول إلى الحاوية مباشرةً؛ وهذا نمط شائع للبنية الآمنة في اختبار SAA-C03.
# Bucket policy granting CloudFront OAC access
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'cloudfront.amazonaws.com'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*',
'Condition': {
'StringEquals': {
'AWS:SourceArn': 'arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE'
}
}
}]
}الوصول إلى S3 عبر الحسابات
توجد طريقتان لمنح حساب AWS آخر حق الوصول إلى حاوية S3 الخاصة بك. الخيار 1 — سياسة الحاوية: أضف عبارة تتضمن ARN الخاص بالحساب الخارجي باعتباره Principal وإجراءات S3 المطلوبة. لا يزال مستخدمو/أدوار IAM في الحساب الخارجي بحاجة إلى أذونات IAM لاستدعاء S3، كما يجب أن تسمح لهم سياسة الحاوية بذلك. الخيار 2 — دور IAM مع سياسة ثقة: أنشئ دورًا في حسابك يثق بالحساب الخارجي؛ ثم تتولى هويات الحساب الخارجي هذا الدور وتحصل على أذونات حاويتك. تكون سياسة الحاوية أبسط في سيناريوهات القراءة فقط، بينما تناسب الأدوار الوصول التشغيلي أكثر.
تهيئة CORS لتطبيقات الويب
تسمح مشاركة الموارد عبر المصادر (CORS) لتطبيق ويب مستضاف على نطاق معين بإجراء طلبات جلب JavaScript إلى حاوية S3 على نطاق مختلف. ومن دون تهيئة CORS، تحظر المتصفحات هذه الطلبات لأسباب أمنية. تضيف تهيئة CORS إلى الحاوية لتحديد المصادر المسموح بها وطرق HTTP والرؤوس. تحتاج إليها عادةً عندما يجلب تطبيق React SPA المستضاف على example.com الصور أو الملفات مباشرةً من عنوان URL لحاوية S3.
# Apply a CORS configuration
aws s3api put-bucket-cors \
--bucket my-website-bucket \
--cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://example.com"],"AllowedMethods":["GET"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'عناوين URL الموقّعة مسبقًا للوصول المؤقت
يمنح عنوان URL موقّع مسبقًا وصولًا محدود المدة إلى كائن S3 خاص، لطلب GET أو PUT، من دون تغيير أي أذونات للحاوية أو الكائن. يضمّن عنوان URL بيانات اعتمادك ووقت انتهاء الصلاحية؛ ويمكن لأي شخص يملك العنوان الوصول إلى الكائن حتى انتهاء صلاحيته. استخدم عناوين URL الموقّعة مسبقًا من أجل: السماح للمستخدمين الذين تمت مصادقتهم في تطبيقك بتنزيل ملفات خاصة، أو السماح للعملاء بالرفع مباشرةً إلى S3 دون المرور عبر الواجهة الخلفية، أو مشاركة التقارير مؤقتًا. يمكن أن تتراوح مدة الصلاحية بين ثانية واحدة و7 أيام، وعند استخدام بيانات اعتماد STS المؤقتة يكون الحد الأقصى 12 ساعة.
# Generate a pre-signed GET URL valid for 24 hours
aws s3 presign s3://my-private-bucket/reports/invoice.pdf \
--expires-in 86400
# Generate a pre-signed PUT URL (for client uploads)
aws s3 presign s3://my-private-bucket/uploads/new-file.pdf \
--expires-in 3600 \
--method PUTشروط سياسة الحاوية للأمان
استخدم شروط سياسة الحاوية لإضافة أمان يعتمد على السياق. من الأنماط الشائعة: aws:SourceIp لتقييد الوصول على نطاقات IP محددة، مثل نقاط نهاية VPC أو شبكات الشركة؛ وaws:SecureTransport: true لفرض HTTPS عبر رفض الطلبات المقدمة بواسطة HTTP، وهي ممارسة موصى بها لجميع الحاويات التي تخزن بيانات حساسة؛ وs3:x-amz-server-side-encryption لضمان وجوب رفع الكائنات باستخدام التشفير من جانب الخادم؛ وaws:PrincipalOrgID لتقييد الوصول بالكيانات الرئيسية ضمن مؤسسة AWS الخاصة بك، ومنع إخراج البيانات إلى حسابات خارجية.
# Deny non-HTTPS access to the bucket
{
'Effect': 'Deny',
'Principal': '*',
'Action': 's3:*',
'Resource': [
'arn:aws:s3:::my-secure-bucket',
'arn:aws:s3:::my-secure-bucket/*'
],
'Condition': {
'Bool': {'aws:SecureTransport': 'false'}
}
}نقاط نهاية S3 VPC للوصول الخاص
افتراضيًا، تصل مثيلات EC2 الموجودة في شبكة فرعية خاصة إلى S3 عبر الإنترنت، من خلال بوابة NAT، مما يترتب عليه تكاليف NAT ويعرّض حركة المرور للإنترنت العام. توفر S3 Gateway Endpoints اتصالًا خاصًا بـ S3 من داخل VPC دون بوابة NAT ودون رسوم إضافية. أضف Gateway Endpoint إلى جدول التوجيه لديك، فتُوجَّه حركة المرور إلى S3 تلقائيًا عبر شبكة AWS الخاصة. ويمكنك أيضًا إضافة شروط إلى سياسة الحاوية باستخدام aws:SourceVpce لتقييد الوصول على الطلبات الواردة عبر نقطة النهاية فقط.
# Create an S3 gateway endpoint and associate with route tables
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345678 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-12345678تحقق سريع
اختبر فهمك لمفاهيم AWS Solutions Architect (SAA-C03) التي تناولها هذا الدرس.
ملخص الدرس
تعلمت في هذا الدرس أن سياسات الحاويات هي مستندات JSON قائمة على الموارد تتحكم في وصول الحسابات الأخرى والخدمات إلى S3، وأن S3 Block Public Access هو تجاوز أمان يمنع الكشف العام غير المقصود، وأن عناوين URL الموقّعة مسبقًا ونقاط نهاية VPC وتهيئات CORS تعالج أنماط وصول محددة بأمان. سنتناول بعد ذلك إصدار الإصدارات في S3، وMFA Delete، والنسخ المتماثل.
الأسئلة الشائعة
هل درس «التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL» مجاني؟
نعم — نص درس «التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ماذا ستتعلم في «التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL»؟
اكتبوا سياسات الحاويات، وقارنوها بقوائم ACL، واضبطوا إعدادات حظر الوصول العام للاستضافة الآمنة. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟
لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟
نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الحاويات والكائنات والمناطق
- التحكم في الوصول إلى S3: سياسات الحاويات وقوائم ACL
- إصدارات S3 وحذف MFA والنسخ المتماثل
- فئات التخزين وسياسات دورة الحياة