قيود سياسات المؤسسة المخصّصة

توضّح لك هذه الصفحة كيفية استخدام القيود المخصّصة في خدمة "سياسة المؤسسة" في Google Cloud لتقييد عمليات معيّنة على موارد Cloud Storage for Firebase التالية:

  • firebasestorage.googleapis.com/DefaultBucket

لمزيد من المعلومات حول "سياسة المؤسسة"، يُرجى الاطّلاع على سياسات المؤسسة المخصّصة.

لمحة عن سياسات المؤسسة وقيودها

تمنحك خدمة "سياسة المؤسسة" في Google Cloud تحكّمًا مركزيًا آليًا في موارد مؤسستك. بصفتك مشرفًا على سياسة المؤسسة، يمكنك تحديد سياسة المؤسسة، وهي مجموعة من القيود التي تُسمى قيودًا وتنطبق على موارد Google Cloud والموارد التابعة لها في التدرج الهرمي لموارد Google Cloud. يمكنك فرض سياسات المؤسسة على مستوى المؤسسة أو المجلد أو المشروع.

توفّر "سياسة المؤسسة" قيودًا مُدارة مدمجة لمختلف خدمات Google Cloud. ومع ذلك، إذا أردت الحصول على تحكّم أكثر دقة وقابلية للتخصيص في الحقول المحدّدة التي يتم حظرها في سياسات مؤسستك، يمكنك أيضًا إنشاء قيود مخصّصة واستخدام هذه القيود المخصّصة في سياسة المؤسسة.

اكتساب السياسات

يتم تلقائيًا اكتساب سياسات المؤسسة من قِبل العناصر التابعة للموارد التي تفرض السياسة عليها. على سبيل المثال، إذا فرضت سياسة على مجلد، يفرض Google Cloud السياسة على جميع المشاريع في المجلد. لمزيد من المعلومات حول هذا السلوك وكيفية تغييره، يُرجى الرجوع إلى قواعد تقييم التسلسل الهرمي.

بالإضافة إلى ذلك، بما أنّ Cloud Storage for Firebase يخزّن الملفات في حِزم Cloud Storage الأساسية، فإنّ أي سياسات مؤسسة أو قيود مخصّصة يتم فرضها على موارد Cloud Storage تنطبق أيضًا على حِزم Cloud Storage for Firebase.

المزايا

  • الأمان والحوكمة: يمكنك فرض تحكّم مركزي على مستوى المؤسسة في عملية توفير حِزم Cloud Storage لضمان الامتثال لإرشادات موقع تخزين البيانات وإدارة التكاليف.
  • التحكّم الدقيق في السمات: يمكنك حظر إنشاء الحِزم التلقائية استنادًا إلى سمات موارد معيّنة، مثل storageClass أو location.

القيود

تنطبق القيود التالية عند استخدام سياسات المؤسسة المخصّصة مع Cloud Storage for Firebase:

  • عدم التنفيذ بأثر رجعي: لا تنطبق القيود المخصّصة التي تم فرضها حديثًا على الموارد الحالية. لا يتم تقييم الحِزم التلقائية الحالية إلا إذا تم تعديلها. لتحديد الموارد الحالية التي قد تنتهك أحد القيود، يمكنك اختبار السياسات باستخدام وضع التشغيل التجريبي.
  • قيود التحكّم في الوصول: لا يمكن للقيود المخصّصة تقييد قوائم التحكّم بالوصول (ACL) أو سياسات "إدارة الهوية وإمكانية الوصول" على الحِزم.

قبل البدء

  1. في وحدة تحكّم Firebase، اختَر مشروع Firebase أو أنشِئه.

    تأكَّد من أنّ مشروعك جزء من مؤسسة وأنّك تعرف رقم تعريف المؤسسة.

  2. لإعداد القيود المخصّصة وفرضها باستخدام سطر الأوامر، ثبِّت Google Cloud CLI (gcloud). لا يمكن إدارة سياسات المؤسسة المخصّصة باستخدام Firebase CLI.

الأدوار المطلوبة

للحصول على الأذونات اللازمة لإدارة سياسات المؤسسة المخصّصة، اطلب من المشرف منحك دور مشرف سياسة المؤسسة (roles/orgpolicy.policyAdmin) ضمن "إدارة الهوية وإمكانية الوصول" في المؤسسة.

‫Cloud Storage for Firebase مورد متوافق

يسرد الجدول التالي موارد Cloud Storage for Firebase التي يمكنك الإشارة إليها في القيود المخصّصة. يمكنك أيضًا الرجوع إلى الموارد المتوافقة مع Cloud Storage، لأنّ القيود المخصّصة على هذه الموارد تنطبق أيضًا على حِزم Cloud Storage for Firebase.

المورد الحقول المتوافقة
firebasestorage.googleapis.com/DefaultBucket
  • resource.location
  • resource.storageClass

إعداد قيد مخصّص

يتم تحديد قيد مخصّص في ملف YAML من خلال الموارد والطرق والشروط والإجراءات التي تتيحها الخدمة التي تطبّق عليها سياسة المؤسسة. يتم تحديد شروط القيود المخصّصة باستخدام لغة التعبير الشائعة (CEL). لمزيد من المعلومات حول كيفية إنشاء شروط في القيود المخصّصة باستخدام لغة CEL، يُرجى الاطّلاع على قسم CEL في مقالة إنشاء القيود المخصّصة وإدارتها.

وحدة التحكم

لإنشاء قيد مخصّص، اتّبِع الخطوات التالية:

  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة سياسات المؤسسة.

    الانتقال إلى سياسات المؤسسة

  2. من أداة اختيار المشاريع، اختَر المشروع الذي تريد ضبط سياسة المؤسسة له.
  3. انقر على قيد مخصّص.
  4. في مربّع الاسم المعروض، أدخِل اسمًا للقيود يمكن لشخص عادي قراءته. يُستخدم هذا الاسم في رسائل الخطأ ويمكن استخدامه لتحديد الأخطاء وتصحيحها. لا تستخدِم معلومات تكشف الهوية الشخصية أو بيانات حساسة في الأسماء المعروضة لأنّ هذا الاسم قد يظهر في رسائل الخطأ. يمكن أن يحتوي هذا الحقل على ما يصل إلى 200 حرف.
  5. في مربّع رقم تعريف القيد، أدخِل رقم التعريف الذي تريده للقيد المخصّص الجديد. يمكن أن يحتوي القيد المخصّص على أحرف (بما في ذلك الأحرف اللاتينية الكبيرة والصغيرة) أو أرقام فقط، مثل custom.restrictStorageClass. يمكن أن يحتوي هذا الحقل على ما يصل إلى 70 حرفًا، بدون احتساب البادئة (custom.)، على سبيل المثال، organizations/123456789/customConstraints/custom.restrictStorageClass. لا تدرِج معلومات تكشف الهوية الشخصية أو بيانات حساسة في معرّف القيود، لأنّها قد تظهر في رسائل الخطأ.
  6. في مربّع الوصف، أدخِل وصفًا للقيود يمكن لشخص عادي قراءته. يُستخدَم هذا الوصف كرسالة خطأ عند انتهاك السياسة. يجب تضمين تفاصيل حول سبب حدوث انتهاك السياسة وكيفية حلّه. لا تدرِج معلومات تكشف الهوية الشخصية أو بيانات حساسة في الوصف، لأنّها قد تظهر في رسائل الخطأ. يمكن أن يحتوي هذا الحقل على ما يصل إلى 2,000 حرف.
  7. في مربّع نوع المورد، اختَر اسم مورد REST الذي يحتوي على العنصر والحقل اللذين تريد حظرهما، على سبيل المثال، firebasestorage.googleapis.com/DefaultBucket. تتيح معظم أنواع الموارد ما يصل إلى 20 قيدًا مخصّصًا. إذا حاولت إنشاء المزيد من القيود المخصّصة، ستتعذّر العملية.
  8. ضمن طريقة التنفيذ، اختَر ما إذا كنت تريد فرض القيد على طريقة REST CREATE أو على كل من طريقتَي CREATE وUPDATE. (ملاحظة: لا يتوافق "DefaultBucket" إلا مع "CREATE").
  9. لتحديد شرط، انقر على تعديل الشرط.
    1. في لوحة إضافة شرط، أنشئ شرط CEL يشير إلى مورد خدمة متوافق، مثل resource.storageClass == 'STANDARD'. يمكن أن يحتوي هذا الحقل على ما يصل إلى 1000 حرف. لمعرفة التفاصيل حول استخدام لغة التعبير الشائعة، يُرجى الاطّلاع على لغة التعبير الشائعة.
    2. انقر على حفظ.
  10. ضمن الإجراء، اختَر ما إذا كنت تريد السماح بالطريقة التي تم تقييمها أو رفضها في حال استيفاء الشرط.

    يعني إجراء الرفض أنّه يتم حظر عملية إنشاء المورد أو تعديله إذا تم تقييم الشرط على أنّه صحيح.

    يعني إجراء السماح أنّ عملية إنشاء المورد أو تعديله مسموح بها فقط إذا تم تقييم الشرط على أنّه صحيح. ويتم حظر كل الحالات الأخرى باستثناء تلك المدرَجة صراحةً في الشرط.

  11. انقر على إنشاء قيد.

gcloud

  1. لإنشاء قيد مخصّص، أنشئ ملف YAML باستخدام التنسيق التالي:
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass
    resourceTypes: firebasestorage.googleapis.com/DefaultBucket
    methodTypes:
      -   CREATE
    condition: "resource.storageClass == 'STANDARD'"
    actionType: DENY
    displayName: Restrict Standard Storage Class
    description: Deny creating buckets with STANDARD storage class.
  2. بعد إنشاء ملف YAML لشرط مخصّص جديد، عليك إعداده لإتاحته لسياسات المؤسسة في مؤسستك. لإعداد قيد مخصّص، استخدِم الأمر gcloud org-policies set-custom-constraint:
    gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    استبدِل CONSTRAINT_PATH بالمسار الكامل لملف القيود المخصّصة. على سبيل المثال، /home/user/customconstraint.yaml.

  3. للتحقّق من توفّر القيد المخصّص، استخدِم الأمر gcloud org-policies list-custom-constraints:
    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

فرض سياسة مؤسسة مخصّصة

يمكنك فرض قيد من خلال إنشاء سياسة مؤسسة تشير إليه، ثم تطبيق سياسة المؤسسة هذه على مورد Google Cloud.

وحدة التحكم

  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة سياسات المؤسسة.

    الانتقال إلى سياسات المؤسسة

  2. من أداة اختيار المشاريع، اختَر المشروع الذي تريد ضبط سياسة المؤسسة له.
  3. من القائمة في صفحة سياسات المؤسسة، اختَر الشرط لعرض صفحة تفاصيل السياسة الخاصة بهذا الشرط.
  4. لضبط سياسة المؤسسة لهذا المورد، انقر على إدارة السياسة.
  5. في صفحة تعديل السياسة، اختَر تجاوز سياسة المجلد الأصلي.
  6. انقر على إضافة قاعدة.
  7. في قسم التنفيذ، اختَر ما إذا كان سيتم تنفيذ سياسة المؤسسة هذه أم لا.
  8. لفرض سياسة المؤسسة في وضع التشغيل التجريبي، انقر على ضبط سياسة التشغيل التجريبي. لمزيد من المعلومات، يُرجى الاطّلاع على اختبار سياسات المؤسسة.
  9. بعد التأكّد من أنّ سياسة المؤسسة في وضع التشغيل التجريبي تعمل على النحو المطلوب، اضبط السياسة المنشورة من خلال النقر على ضبط السياسة.

gcloud

  1. لإنشاء سياسة مؤسسة تتضمّن قواعد منطقية، أنشِئ ملف YAML للسياسة يشير إلى القيد:
    name: projects/PROJECT_ID/policies/custom.restrictStorageClass
    spec:
      rules:
      -   enforce: true
    dryRunSpec:
      rules:
      -   enforce: true
  2. لتطبيق سياسة المؤسسة في وضع التشغيل التجريبي، نفِّذ الأمر التالي باستخدام العلامة dryRunSpec:
    gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec
  3. بعد التأكّد من أنّ سياسة المؤسسة في وضع التشغيل التجريبي تعمل على النحو المطلوب، اضبط السياسة المنشورة باستخدام الأمر org-policies set-policy والعلامة spec:
    gcloud org-policies set-policy POLICY_PATH --update-mask=spec

اختبار سياسة المؤسسة المخصّصة

ينشئ المثال التالي قيدًا وسياسة مخصّصَين يتطلبان من جميع الحِزم التلقائية التي تم إنشاؤها حديثًا تجنُّب استخدام فئة التخزين STANDARD. يمكنك اختبار السياسة من خلال محاولة اتخاذ إجراء من المفترض أن تمنعه السياسة.

إنشاء القيد

  1. احفظ الملف التالي باسم constraint-restrict-storage-class.yaml:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass
    resourceTypes:
    -   firebasestorage.googleapis.com/DefaultBucket
    methodTypes:
    -   CREATE
    condition: "resource.storageClass == 'STANDARD'"
    actionType: DENY
    displayName: Restrict Standard Storage Class
    description: Deny creating buckets with STANDARD storage class.
    

    استبدِل ORGANIZATION_ID برقم تعريف مؤسستك.

  2. تطبيق القيد:

    gcloud org-policies set-custom-constraint ~/constraint-restrict-storage-class.yaml
    
  3. تأكَّد من توفّر القيد:

    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    

    تكون النتيجة مشابهة لما يلي:

    CUSTOM_CONSTRAINT            ACTION_TYPE   METHOD_TYPES   RESOURCE_TYPES                                 DISPLAY_NAME
    custom.restrictStorageClass  DENY          CREATE         firebasestorage.googleapis.com/DefaultBucket   Restrict Standard Storage Class
    ...
    

إنشاء السياسة

  1. احفظ الملف التالي باسم policy-restrict-storage-class.yaml:

    name: projects/PROJECT_ID/policies/custom.restrictStorageClass
    spec:
      rules:
      -   enforce: true
    

    استبدِل PROJECT_ID برقم تعريف مشروعك.

  2. طبِّق السياسة:

    gcloud org-policies set-policy ~/policy-restrict-storage-class.yaml
    
  3. تأكَّد من توفّر السياسة:

    gcloud org-policies list --project=PROJECT_ID
    

    تكون النتيجة مشابهة لما يلي:

    CONSTRAINT                   LIST_POLICY    BOOLEAN_POLICY    ETAG
    custom.restrictStorageClass  -              SET               CIqktscGELiZn6cC-
    

بعد تطبيق السياسة، يُرجى الانتظار لمدة دقيقتين تقريبًا حتى يبدأ Google Cloud في تنفيذ السياسة.

اختبار السياسة

حاوِل إنشاء حزمة تلقائية باستخدام واجهة برمجة التطبيقات REST API لـ Cloud Storage for Firebase بدون تحديد فئة تخزين (يتم ضبطها تلقائيًا على STANDARD):

PROJECT_ID="PROJECT_ID"
TOKEN=$(gcloud auth print-access-token)

curl -X POST "https://firebasestorage.googleapis.com/v1beta/projects/${PROJECT_ID}/defaultBucket" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"location": "US-EAST1"}'

يتعذّر تنفيذ الطلب مع ظهور خطأ مشابه لما يلي:

FAILED_PRECONDITION: Operation denied by org policy: ["customConstraints/custom.restrictStorageClass": "Deny creating buckets with STANDARD storage class."].
-   '@type': type.googleapis.com/google.rpc.ErrorInfo
  domain: iam.googleapis.com
  metadata:
    customConstraints: customConstraints/custom.restrictStorageClass
  reason: CUSTOM_ORG_POLICY_VIOLATION

أمثلة على سياسات المؤسسة المخصّصة لحالات الاستخدام الشائعة

يقدّم هذا الجدول أمثلة على البنية لبعض القيود المخصّصة الشائعة.

الوصف بنية القيود
حظر إنشاء حِزم تلقائية باستخدام فئة التخزين STANDARD
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass
resourceTypes:
-   firebasestorage.googleapis.com/DefaultBucket
methodTypes:
-   CREATE
condition: "resource.storageClass == 'STANDARD'"
actionType: DENY
displayName: Restrict Standard Storage Class
description: Deny creating buckets with STANDARD storage class.
طلب إنشاء حِزم تلقائية في موقع جغرافي معيّن
name: organizations/ORGANIZATION_ID/customConstraints/custom.requireDefaultBucketLocation
resourceTypes:
-   firebasestorage.googleapis.com/DefaultBucket
methodTypes:
-   CREATE
condition: "resource.location != 'US-EAST1'"
actionType: DENY
displayName: Require US-EAST1 Location
description: Deny creating default buckets outside the US-EAST1 location.

الخطوات التالية