কাস্টম সংস্থার নীতি সংক্রান্ত সীমাবদ্ধতা

এই পৃষ্ঠা থেকে আপনি জানতে পারবেন যে কীভাবে Google Cloud Organization Policy Service কাস্টম কনস্ট্রেন্ট ব্যবহার করে নিম্নলিখিত 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 ব্যবহার করে কাস্টম প্রতিষ্ঠান নীতি ম্যানেজ করা যায় না।

প্রয়োজনীয় ভূমিকা

কাস্টম সংস্থার নীতি ম্যানেজ করার জন্য প্রয়োজনীয় অনুমতি পেতে, আপনার অ্যাডমিনিস্ট্রেটরকে আপনাকে সংস্থায় সংস্থার নীতি অ্যাডমিনিস্ট্রেটর (roles/orgpolicy.policyAdmin) IAM ভূমিকা প্রদান করতে বলুন।

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। আপনার কনস্ট্রেন্ট আইডিতে PII বা সংবেদনশীল ডেটা অন্তর্ভুক্ত করবেন না, কারণ এটি ত্রুটি মেসেজে প্রকাশ হয়ে যেতে পারে।
  6. বিবরণ বক্সে, কনস্ট্রেন্টের মানুষের-পঠনযোগ্য বিবরণ লিখুন। নীতি লঙ্ঘন করা হলে এই বিবরণটি ত্রুটি মেসেজ হিসেবে ব্যবহার করা হয়। নীতি লঙ্ঘন কেন হয়েছে এবং কীভাবে নীতি লঙ্ঘন সংক্রান্ত সমস্যার সমাধান করা যায় সেই সম্পর্কে বিবরণ অন্তর্ভুক্ত করুন। আপনার বিবরণে PII বা সংবেদনশীল ডেটা অন্তর্ভুক্ত করবেন না, কারণ এটি ত্রুটি মেসেজে প্রকাশ হতে পারে। এই ফিল্ডে সর্বাধিক ২০০০টি অক্ষর লেখা যাবে।
  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 নীতি প্রয়োগ করা শুরু করার জন্য প্রায় দুই মিনিট অপেক্ষা করুন।

নীতি পরীক্ষা করুন

স্টোরেজ ক্লাস (যা ডিফল্ট হিসেবে STANDARD-এ সেট করা থাকে) উল্লেখ না করে Cloud Storage for Firebase REST API ব্যবহার করে ডিফল্ট বাকেট তৈরি করার চেষ্টা করুন:

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.

এর পরে কী করতে হবে