توضّح لك هذه الصفحة كيفية استخدام القيود المخصّصة في خدمة "سياسة المؤسسة" في 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) أو سياسات "إدارة الهوية وإمكانية الوصول" على الحِزم.
قبل البدء
في وحدة تحكّم Firebase، اختَر مشروع Firebase أو أنشِئه.
تأكَّد من أنّ مشروعك جزء من مؤسسة وأنّك تعرف رقم تعريف المؤسسة.
لإعداد القيود المخصّصة وفرضها باستخدام سطر الأوامر، ثبِّت 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 |
|
إعداد قيد مخصّص
يتم تحديد قيد مخصّص في ملف YAML من خلال الموارد والطرق والشروط والإجراءات التي تتيحها الخدمة التي تطبّق عليها سياسة المؤسسة. يتم تحديد شروط القيود المخصّصة باستخدام لغة التعبير الشائعة (CEL). لمزيد من المعلومات حول كيفية إنشاء شروط في القيود المخصّصة باستخدام لغة CEL، يُرجى الاطّلاع على قسم CEL في مقالة إنشاء القيود المخصّصة وإدارتها.
وحدة التحكم
لإنشاء قيد مخصّص، اتّبِع الخطوات التالية:
- في وحدة تحكّم Google Cloud، انتقِل إلى صفحة سياسات المؤسسة.
- من أداة اختيار المشاريع، اختَر المشروع الذي تريد ضبط سياسة المؤسسة له.
- انقر على قيد مخصّص.
- في مربّع الاسم المعروض، أدخِل اسمًا للقيود يمكن لشخص عادي قراءته. يُستخدم هذا الاسم في رسائل الخطأ ويمكن استخدامه لتحديد الأخطاء وتصحيحها. لا تستخدِم معلومات تكشف الهوية الشخصية أو بيانات حساسة في الأسماء المعروضة لأنّ هذا الاسم قد يظهر في رسائل الخطأ. يمكن أن يحتوي هذا الحقل على ما يصل إلى 200 حرف.
- في مربّع رقم تعريف القيد، أدخِل رقم التعريف الذي تريده للقيد المخصّص الجديد. يمكن أن يحتوي القيد المخصّص على أحرف (بما في ذلك الأحرف اللاتينية الكبيرة والصغيرة) أو أرقام فقط، مثل
custom.restrictStorageClass. يمكن أن يحتوي هذا الحقل على ما يصل إلى 70 حرفًا، بدون احتساب البادئة (custom.)، على سبيل المثال،organizations/123456789/customConstraints/custom.restrictStorageClass. لا تدرِج معلومات تكشف الهوية الشخصية أو بيانات حساسة في معرّف القيود، لأنّها قد تظهر في رسائل الخطأ. - في مربّع الوصف، أدخِل وصفًا للقيود يمكن لشخص عادي قراءته. يُستخدَم هذا الوصف كرسالة خطأ عند انتهاك السياسة. يجب تضمين تفاصيل حول سبب حدوث انتهاك السياسة وكيفية حلّه. لا تدرِج معلومات تكشف الهوية الشخصية أو بيانات حساسة في الوصف، لأنّها قد تظهر في رسائل الخطأ. يمكن أن يحتوي هذا الحقل على ما يصل إلى 2,000 حرف.
- في مربّع نوع المورد، اختَر اسم مورد REST الذي يحتوي على العنصر والحقل اللذين تريد حظرهما، على سبيل المثال،
firebasestorage.googleapis.com/DefaultBucket. تتيح معظم أنواع الموارد ما يصل إلى 20 قيدًا مخصّصًا. إذا حاولت إنشاء المزيد من القيود المخصّصة، ستتعذّر العملية. - ضمن طريقة التنفيذ، اختَر ما إذا كنت تريد فرض القيد على طريقة REST
CREATEأو على كل من طريقتَيCREATEوUPDATE. (ملاحظة: لا يتوافق "DefaultBucket" إلا مع "CREATE"). - لتحديد شرط، انقر على تعديل الشرط.
- في لوحة إضافة شرط، أنشئ شرط CEL يشير إلى مورد خدمة متوافق، مثل
resource.storageClass == 'STANDARD'. يمكن أن يحتوي هذا الحقل على ما يصل إلى 1000 حرف. لمعرفة التفاصيل حول استخدام لغة التعبير الشائعة، يُرجى الاطّلاع على لغة التعبير الشائعة. - انقر على حفظ.
- في لوحة إضافة شرط، أنشئ شرط CEL يشير إلى مورد خدمة متوافق، مثل
- ضمن الإجراء، اختَر ما إذا كنت تريد السماح بالطريقة التي تم تقييمها أو رفضها في حال استيفاء الشرط.
يعني إجراء الرفض أنّه يتم حظر عملية إنشاء المورد أو تعديله إذا تم تقييم الشرط على أنّه صحيح.
يعني إجراء السماح أنّ عملية إنشاء المورد أو تعديله مسموح بها فقط إذا تم تقييم الشرط على أنّه صحيح. ويتم حظر كل الحالات الأخرى باستثناء تلك المدرَجة صراحةً في الشرط.
- انقر على إنشاء قيد.
gcloud
- لإنشاء قيد مخصّص، أنشئ ملف 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.
- بعد إنشاء ملف YAML لشرط مخصّص جديد، عليك إعداده لإتاحته لسياسات المؤسسة في مؤسستك. لإعداد قيد مخصّص، استخدِم الأمر
gcloud org-policies set-custom-constraint:gcloud org-policies set-custom-constraint CONSTRAINT_PATH
استبدِل
CONSTRAINT_PATHبالمسار الكامل لملف القيود المخصّصة. على سبيل المثال،/home/user/customconstraint.yaml. - للتحقّق من توفّر القيد المخصّص، استخدِم الأمر
gcloud org-policies list-custom-constraints:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
فرض سياسة مؤسسة مخصّصة
يمكنك فرض قيد من خلال إنشاء سياسة مؤسسة تشير إليه، ثم تطبيق سياسة المؤسسة هذه على مورد Google Cloud.
وحدة التحكم
- في وحدة تحكّم Google Cloud، انتقِل إلى صفحة سياسات المؤسسة.
- من أداة اختيار المشاريع، اختَر المشروع الذي تريد ضبط سياسة المؤسسة له.
- من القائمة في صفحة سياسات المؤسسة، اختَر الشرط لعرض صفحة تفاصيل السياسة الخاصة بهذا الشرط.
- لضبط سياسة المؤسسة لهذا المورد، انقر على إدارة السياسة.
- في صفحة تعديل السياسة، اختَر تجاوز سياسة المجلد الأصلي.
- انقر على إضافة قاعدة.
- في قسم التنفيذ، اختَر ما إذا كان سيتم تنفيذ سياسة المؤسسة هذه أم لا.
- لفرض سياسة المؤسسة في وضع التشغيل التجريبي، انقر على ضبط سياسة التشغيل التجريبي. لمزيد من المعلومات، يُرجى الاطّلاع على اختبار سياسات المؤسسة.
- بعد التأكّد من أنّ سياسة المؤسسة في وضع التشغيل التجريبي تعمل على النحو المطلوب، اضبط السياسة المنشورة من خلال النقر على ضبط السياسة.
gcloud
- لإنشاء سياسة مؤسسة تتضمّن قواعد منطقية، أنشِئ ملف YAML للسياسة يشير إلى القيد:
name: projects/PROJECT_ID/policies/custom.restrictStorageClass spec: rules: - enforce: true dryRunSpec: rules: - enforce: true
- لتطبيق سياسة المؤسسة في وضع التشغيل التجريبي، نفِّذ الأمر التالي باستخدام العلامة
dryRunSpec:gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec
- بعد التأكّد من أنّ سياسة المؤسسة في وضع التشغيل التجريبي تعمل على النحو المطلوب، اضبط السياسة المنشورة باستخدام الأمر
org-policies set-policyوالعلامةspec:gcloud org-policies set-policy POLICY_PATH --update-mask=spec
اختبار سياسة المؤسسة المخصّصة
ينشئ المثال التالي قيدًا وسياسة مخصّصَين يتطلبان من جميع الحِزم التلقائية التي تم إنشاؤها حديثًا تجنُّب استخدام فئة التخزين STANDARD. يمكنك
اختبار السياسة من خلال محاولة اتخاذ إجراء من المفترض أن تمنعه السياسة.
إنشاء القيد
احفظ الملف التالي باسم
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برقم تعريف مؤسستك.تطبيق القيد:
gcloud org-policies set-custom-constraint ~/constraint-restrict-storage-class.yamlتأكَّد من توفّر القيد:
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 ...
إنشاء السياسة
احفظ الملف التالي باسم
policy-restrict-storage-class.yaml:name: projects/PROJECT_ID/policies/custom.restrictStorageClass spec: rules: - enforce: trueاستبدِل
PROJECT_IDبرقم تعريف مشروعك.طبِّق السياسة:
gcloud org-policies set-policy ~/policy-restrict-storage-class.yamlتأكَّد من توفّر السياسة:
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. |
الخطوات التالية
- مزيد من المعلومات حول "خدمة سياسة المؤسسة"
- مزيد من المعلومات عن كيفية إنشاء سياسات المؤسسة وإدارتها
- يمكنك الاطّلاع على القائمة الكاملة لقيود سياسات المؤسسة المُدارة.