این صفحه به شما نشان میدهد که چگونه از محدودیتهای سفارشی «سرویس خطمشی سازمانی» 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) یا خطمشیهای IAM را در باکتها محدود کنند.
قبل از شروع
در کنسول Firebase، پروژه Firebase را انتخاب یا ایجاد کنید.
مطمئن شوید که پروژه شما بخشی از یک سازمان است و شناسه سازمان خود را میدانید.
برای راهاندازی و اعمال محدودیتهای سفارشی بااستفاده از خط فرمان، Google Cloud CLI را نصب کنید (
gcloud). خطمشیهای سفارشی سازمان را نمیتوان بااستفاده از Firebase CLI مدیریت کرد.
نقشهای الزامی
برای دریافت اجازههایی که برای مدیریت خطمشیهای سفارشی سازمان نیاز دارید، از سرپرستتان بخواهید نقش IAM سرپرست خطمشی سازمان (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، به صفحه خطمشیهای سازمان بروید.
- از انتخابگر پروژه، پروژهای را که میخواهید خطمشی سازمان را برای آن تنظیم کنید انتخاب کنید.
- روی محدودیت سفارشی کلیک کنید.
- در کادر نام نمایشی، نامی قابلخواندن برای انسان برای محدودیت وارد کنید. این نام در پیامهای خطا استفاده میشود و میتوان از آن برای شناسایی و اشکالزدایی استفاده کرد. از اطلاعات شناساننده شخصی (PII) یا دادههای حساس در نامهای نمایشی استفاده نکنید زیرا ممکن است این نام در پیامهای خطا نمایش داده شود. این فیلد میتواند حداکثر ۲۰۰ نویسه داشته باشد.
- در چارگوش شناسه محدودیت، شناسهای را که برای محدودیت سفارشی جدیدتان میخواهید وارد کنید. محدودیت سفارشی فقط میتواند حاوی حروف (شامل حروف بزرگ و کوچک) یا اعداد باشد، برای مثال
custom.restrictStorageClass. این فیلد میتواند حداکثر ۷۰ نویسه داشته باشد، بدون احتساب پیشوند (custom.)، برای مثال،organizations/123456789/customConstraints/custom.restrictStorageClass. اطلاعات شناساننده شخصی یا دادههای حساس را در شناسه محدودیت خود وارد نکنید، زیرا ممکن است در پیامهای خطا نمایش داده شود. - در چارگوش شرح، شرحی قابلخواندن برای انسان برای این محدودیت وارد کنید. این شرح بهعنوان پیام خطا درصورت نقض خطمشی استفاده میشود. جزئیاتی درباره دلیل وقوع نقض خطمشی و نحوه حلوفصل آن ارائه دهید. اطلاعات شناساننده شخصی یا دادههای حساس را در شرح خود وارد نکنید، زیرا ممکن است در پیامهای خطا نمایش داده شود. این فیلد میتواند حداکثر ۲۰۰۰ نویسه داشته باشد.
- در چارگوش نوع منبع، نام منبع REST حاوی شیء و فیلدی را که میخواهید محدود کنید انتخاب کنید—برای مثال،
firebasestorage.googleapis.com/DefaultBucket. اکثر انواع منبع از حداکثر ۲۰ محدودیت سفارشی پشتیبانی میکنند. اگر بخواهید محدودیتهای سفارشی بیشتری ایجاد کنید، عملیات ناموفق خواهد بود. - در بخش روش اجرا، انتخاب کنید که محدودیت بر روش REST
CREATEاعمال شود یا بر هر دو روشCREATEوUPDATE. (توجه:DefaultBucketفقط ازCREATEپشتیبانی میکند). - برای تعریف کردن شرط، روی ویرایش شرط کلیک کنید.
- در پانل افزودن شرط، شرط CEL ایجاد کنید که به منبع سرویس پشتیبانیشدهای ارجاع دهد، برای مثال
resource.storageClass == 'STANDARD'. این فیلد میتواند حداکثر ۱۰۰۰ نویسه داشته باشد. برای جزئیات مربوط به استفاده از CEL، به زبان عبارت رایج مراجعه کنید. - روی ذخیره کردن کلیک کنید.
- در پانل افزودن شرط، شرط 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: truePROJECT_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 شروع به اجرای خطمشی کند.
آزمایش خطمشی
سعی کنید بااستفاده از Cloud Storage for Firebase REST API
بدون مشخص کردن کلاس فضای ذخیرهسازی (که بهطور پیشفرض 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. |
حالا چه میشود
- درباره سرویس خطمشی سازمان بیشتر بدانید.
- درباره نحوه ایجاد و مدیریت خطمشیهای سازمان بیشتر بدانید.
- فهرست کامل محدودیتهای خطمشی سازمان مدیریتشده را ببینید.