محدودیت‌های خط‌مشی سازمان سفارشی

این صفحه به شما نشان می‌دهد که چگونه از محدودیت‌های سفارشی «سرویس خط‌مشی سازمانی» 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 را در باکت‌ها محدود کنند.

قبل از شروع

  1. در کنسول Firebase، پروژه Firebase را انتخاب یا ایجاد کنید.

    مطمئن شوید که پروژه شما بخشی از یک سازمان است و شناسه سازمان خود را می‌دانید.

  2. برای راه‌اندازی و اعمال محدودیت‌های سفارشی بااستفاده از خط فرمان، 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
  • resource.location
  • resource.storageClass

راه‌اندازی محدودیت سفارشی

محدودیت سفارشی در فایل YAML توسط منابع، روش‌ها، شرایط، و کنش‌هایی تعریف می‌شود که توسط سرویسی که خط‌مشی سازمان را در آن اعمال می‌کنید پشتیبانی می‌شود. شرایط محدودیت‌های سفارشی شما بااستفاده از زبان بیان مشترک (CEL) تعریف می‌شود. برای اطلاعات بیشتر درباره نحوه ساختن شرایط در محدودیت‌های سفارشی بااستفاده از CEL، به بخش CEL در ایجاد و مدیریت محدودیت‌های سفارشی مراجعه کنید.

کنسول

برای ایجاد محدودیت سفارشی، کارهای زیر را انجام دهید:

  1. در کنسول Google Cloud، به صفحه خط‌مشی‌های سازمان بروید.

    رفتن به خط‌مشی‌های سازمان

  2. از انتخابگر پروژه، پروژه‌ای را که می‌خواهید خط‌مشی سازمان را برای آن تنظیم کنید انتخاب کنید.
  3. روی محدودیت سفارشی کلیک کنید.
  4. در کادر نام نمایشی، نامی قابل‌خواندن برای انسان برای محدودیت وارد کنید. این نام در پیام‌های خطا استفاده می‌شود و می‌توان از آن برای شناسایی و اشکال‌زدایی استفاده کرد. از اطلاعات شناساننده شخصی (PII) یا داده‌های حساس در نام‌های نمایشی استفاده نکنید زیرا ممکن است این نام در پیام‌های خطا نمایش داده شود. این فیلد می‌تواند حداکثر ۲۰۰ نویسه داشته باشد.
  5. در چارگوش شناسه محدودیت، شناسه‌ای را که برای محدودیت سفارشی جدیدتان می‌خواهید وارد کنید. محدودیت سفارشی فقط می‌تواند حاوی حروف (شامل حروف بزرگ و کوچک) یا اعداد باشد، برای مثال custom.restrictStorageClass. این فیلد می‌تواند حداکثر ۷۰ نویسه داشته باشد، بدون احتساب پیشوند (custom.)، برای مثال، organizations/123456789/customConstraints/custom.restrictStorageClass. اطلاعات شناساننده شخصی یا داده‌های حساس را در شناسه محدودیت خود وارد نکنید، زیرا ممکن است در پیام‌های خطا نمایش داده شود.
  6. در چارگوش شرح، شرحی قابل‌خواندن برای انسان برای این محدودیت وارد کنید. این شرح به‌عنوان پیام خطا درصورت نقض خط‌مشی استفاده می‌شود. جزئیاتی درباره دلیل وقوع نقض خط‌مشی و نحوه حل‌وفصل آن ارائه دهید. اطلاعات شناساننده شخصی یا داده‌های حساس را در شرح خود وارد نکنید، زیرا ممکن است در پیام‌های خطا نمایش داده شود. این فیلد می‌تواند حداکثر ۲۰۰۰ نویسه داشته باشد.
  7. در چارگوش نوع منبع، نام منبع REST حاوی شیء و فیلدی را که می‌خواهید محدود کنید انتخاب کنید—برای مثال، firebasestorage.googleapis.com/DefaultBucket. اکثر انواع منبع از حداکثر ۲۰ محدودیت سفارشی پشتیبانی می‌کنند. اگر بخواهید محدودیت‌های سفارشی بیشتری ایجاد کنید، عملیات ناموفق خواهد بود.
  8. در بخش روش اجرا، انتخاب کنید که محدودیت بر روش REST CREATE اعمال شود یا بر هر دو روش CREATE و UPDATE. (توجه: DefaultBucket فقط از CREATE پشتیبانی می‌کند).
  9. برای تعریف کردن شرط، روی ویرایش شرط کلیک کنید.
    1. در پانل افزودن شرط، شرط CEL ایجاد کنید که به منبع سرویس پشتیبانی‌شده‌ای ارجاع دهد، برای مثال resource.storageClass == 'STANDARD'. این فیلد می‌تواند حداکثر ۱۰۰۰ نویسه داشته باشد. برای جزئیات مربوط به استفاده از CEL، به زبان عبارت رایج مراجعه کنید.
    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 شروع به اجرای خط‌مشی کند.

آزمایش خط‌مشی

سعی کنید بااستفاده از 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.

حالا چه می‌شود