GitHub Actions / المشاركة والسلطة المحدودة / الدرس 10
حماية البيئة وحدود الموافقة
اربط مهمة البيئة بحماية المستودع الفعلية وقرار مرشح محدد.
في هذه الصفحة
أهداف الدرس
- شرح توقيت الحماية والأسرار.
- مراجعة ربط المرشح وقيود الفروع والتجاوز.
لا تنشئ الإشارة إلى البيئة سياسة سلامة
قد تعلن المهمة بيئة باسم parcel-staging، لكن الاسم وحده لا ينشئ مراجعين مطلوبين أو فروع نشر مسموحة أو هدفاً موثوقاً. تحدد تهيئة البيئة الفعلية وخطة المستودع الحماية المتاحة. وقد يختار خطأ إملائي كائناً مختلفاً أو بيئة منشأة حديثاً بدلاً من الكائن المحمي المقصود. راجع إعداد البيئة إلى جانب نص YAML، وقارن الاسم والملكية والقيود. لا تنشئ هذه الدورة بيئة ولا تغير إعداد مستودع، بل تشرح نوع الأدلة الذي يحتاجه المراجع كي يثبت وجود الحد الذي يعتمد عليه التصميم.
تسبق الحماية التنفيذ المميز
عندما تشير المهمة إلى بيئة، يجب أن تمر قواعد الحماية المضبوطة قبل انتقال المهمة إلى المشغّل والوصول إلى أسرار تلك البيئة وفق دورة الحياة الموثقة. يوفر ذلك حد قرار مفيداً إذا كان المرشح والهدف معروفين. الموافقة على مهمة تختار أحدث حزمة لاحقاً لا تربط القرار ببايتات محددة. حل المرشح بمسار موثوق أولاً، ثم اعرض هويته الثابتة والأدلة المناسبة على صاحب قرار الإصدار. بذلك يعرف المراجع ما الذي يسمح بتبنيه، ولا يوافق على سلطة مفتوحة لاختيار محتوى يتغير بعد القرار.
اجعل مرجع البيئة صريحاً
يشير المقطع إلى بيئة افتراضية ويطبع اسم مرشح مختار مسبقاً. لا ينشر تطبيقاً ولا يطلب موافقة فعلية هنا. يجب ضبط البيئة وحمايتها بصورة مستقلة عن النص. وقد يوجه اسم بيئة ديناميكي مأخوذ من مدخل غير موثوق المهمة إلى حد سياسة غير مقصود، لذلك تحقق من الاختيارات المسموحة وافصل تفويض الهدف عن صحة الاسم. تفيد بيانات رابط البيئة في التنقل، لكنها لا تثبت أن المهمة الناجحة غيّرت الخدمة المرتبطة أو أن تلك الخدمة تمثل الوجهة المقصودة أصلاً.
jobs:
review-candidate:
runs-on: ubuntu-latest
environment:
name: parcel-staging
permissions:
contents: read
steps:
- env:
PARCEL_CANDIDATE: parcel-lab-r3
run: printf "%s\n" "$PARCEL_CANDIDATE"
لا توجد بيئة فعلية للدرس. تطبع الخطوة اسماً افتراضياً بلا حزمة أو نقطة أو سر أو أمر نشر. لا يضبط النص مراجعين ولا قيود فروع.
راجع الأشخاص والمراجع المخولين
تؤثر قيود فروع النشر ووسومه والمراجعون المطلوبون وإعداد المراجعة الذاتية وأذونات التجاوز في هوية من يسمح بمرور المهمة. تختلف إتاحة هذه الضوابط بحسب ظهور المستودع وخطته وسلوك المنتج الحالي. لا تنسخ قاعدة من مستودع عام وتفترض فرضها في خاص. راجع كذلك من يستطيع تعديل السير وإعداد البيئة. تقل قيمة قائمة موافقين ضيقة إذا استطاع فاعل آخر استبدال النص المميز أو تجاوز الحماية دون استثناء منسوب ومسؤول. تتكامل سلطة تعديل السياسة مع سلطة اتخاذ قرار الإصدار ولا تنفصل عنها.
تحقق من مدخلات القرار
يشترط النموذج المحلي الكامل اتفاق الطلب وسجل الموافقة على المرشح والهدف، ويرفض عمداً موافقة لبيئة أخرى. مراجعة بيئة GitHub آلية منصة، ولا يحاكي البرنامج تفويضها الداخلي ولا ينشئ موافقة. يوضح ثابتاً ينبغي أن تحافظ عليه منطقية الإصدار المحيطة. تحتاج التغييرات الجوهرية في المرشح أو الهدف أو الإعداد أو الأدلة المطلوبة إلى إعادة التقييم المحددة في السياسة، وخاصة بعد انتظار طويل. سجل القاموس في المثال مجرد بيانات تعليمية؛ تطابقه مع الطلب لا يحوله إلى سلطة موثقة أو قرار إنسان حقيقي.
request = {"candidate": "parcel-lab-r3", "target": "parcel-staging"}
approval = {"candidate": "parcel-lab-r3", "target": "parcel-production"}
print(request == approval)
approval["target"] = "parcel-staging"
print(request == approval)
False
True
قاموس الموافقة بيانات افتراضية لا سلطة موثقة. لا يُتصل بمراجع أو بيئة أو مستودع ولا تُعدل.
الأخطاء الشائعة وإصلاحها
يختار خطأ إملائي بيئة غير محمية.
- لماذا يحدث؟
- لم يقارن الاسم بالكائن المقصود.
- كيف تصلحه؟
- راجع وصحح المرجع الدقيق بمسار المستودع.
- كيف تتجنب تكراره؟
- وثق الأسماء الموافق عليها وملكيتها.
توافق المراجعة على أحدث ناتج لاحقاً.
- لماذا يحدث؟
- يسبق القرار الاختيار الثابت أو يتجاهله.
- كيف تصلحه؟
- حل واربط المرشح قبل القرار المحمي.
- كيف تتجنب تكراره؟
- أعد تقييم التغييرات الجوهرية والأدلة القديمة.
تُفترض حماية العام مفروضة في الخاص.
- لماذا يحدث؟
- لم تُفحص قيود الخطة والظهور.
- كيف تصلحه؟
- افحص الإتاحة والإعداد الفعلي.
- كيف تتجنب تكراره؟
- راجع السياق والإعداد وسلطة التجاوز معاً.
اختبر فهمك
1. هل يمنح environment: production أسرار الإنتاج تلقائياً؟
اعرض الحل المشروح
يشير إلى كائن؛ يعتمد التوفر على أسراره وحمايته وسياق المستودع ودورة المهمة. لا ينشئ التصريح هدفاً حقيقياً أو سياسة تفويض بذاته. راجع الموجود ولا تستنتجه من الاسم.
2. تغير المرشح أثناء الانتظار. ماذا نثبت؟
اعرض الحل المشروح
حدد المرشح الثابت الذي يقرر فيه المراجع وأثر التغيير على الأدلة والموافقة حسب السياسة. لا تنقل قرار مرشح لبايتات أخرى. سجل تغير الإعداد والهدف أيضاً.
أهم ما تعلمته
- راجع البيئة المضبوطة لا الاسم فقط.
- احفظ علاقة الموافقة بالمرشح والهدف والدليل.