এই পৃষ্ঠা থেকে আপনি জানতে পারবেন যে কীভাবে 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 নীতিতে বিধিনিষেধ আরোপ করতে পারে না।
শুরু করার আগে
Firebase কনসোল থেকে, Firebase প্রোজেক্ট বেছে নিন বা তৈরি করুন।
আপনার প্রোজেক্ট কোনও সংস্থার অংশ কিনা এবং আপনি নিজের সংস্থা আইডি জানেন কিনা তা নিশ্চিত করুন।
কমান্ড লাইন ব্যবহার করে কাস্টম কনস্ট্রেন্ট সেট-আপ ও এনফোর্স করতে, 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 |
|
কাস্টম কনস্ট্রেন্ট সেট-আপ করা
আপনি যে পরিষেবার উপর সংস্থার নীতি এনফোর্স করছেন, সেই পরিষেবার দ্বারা সমর্থিত রিসোর্স, পদ্ধতি, শর্ত এবং অ্যাকশনের মাধ্যমে একটি YAML ফাইলে কাস্টম কনস্ট্রেন্ট সংজ্ঞায়িত করা হয়। আপনার কাস্টম কনস্ট্রেন্টের শর্ত কমন এক্সপ্রেশন ল্যাঙ্গুয়েজ (CEL) ব্যবহার করে সংজ্ঞায়িত করা হয় . CEL ব্যবহার করে কাস্টম কনস্ট্রেন্টে কীভাবে শর্ত তৈরি করতে হয় সেই সম্পর্কে আরও তথ্য পেতে, কাস্টম কনস্ট্রেন্ট তৈরি ও ম্যানেজ করা নিবন্ধের CEL বিভাগ দেখুন।
কনসোল
কাস্টম কনস্ট্রেন্ট তৈরি করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- Google Cloud কনসোলে, সংস্থার নীতি পৃষ্ঠায় যান।
- প্রোজেক্ট পিকার থেকে, আপনি যে প্রোজেক্টের জন্য সংস্থার নীতি সেট করতে চান সেটি বেছে নিন।
- কাস্টম কনস্ট্রেন্ট বিকল্পে ক্লিক করুন।
- যে নাম দেখানো হবে বক্সে, কনস্ট্রেন্টের জন্য মানুষের-পঠনযোগ্য নাম লিখুন। এই নামটি ত্রুটি মেসেজে ব্যবহার করা হয় এবং শনাক্তকরণ ও ডিবাগিংয়ের জন্য ব্যবহার করা যেতে পারে। যে নাম দেখানো হবে সেখানে ব্যক্তিগতভাবে শনাক্তকরণযোগ্য তথ্য (PII) বা সংবেদনশীল ডেটা ব্যবহার করবেন না কারণ এই নাম ত্রুটি মেসেজে প্রকাশ হয়ে যেতে পারে। এই ফিল্ডে সর্বাধিক ২০০টি অক্ষর লেখা যাবে।
- কনস্ট্রেন্ট আইডি বক্সে, আপনার নতুন কাস্টম কনস্ট্রেন্টের জন্য যে আইডি চান সেটি লিখুন। কাস্টম কনস্ট্রেনে শুধু অক্ষর (বড় ও ছোট হাতের অক্ষর সহ) বা সংখ্যা থাকতে পারে, যেমন
custom.restrictStorageClass। এই ফিল্ডে সর্বাধিক ৭০টি অক্ষর থাকতে পারে, প্রিফিক্স (custom.) বাদ দিয়ে, যেমন,organizations/123456789/customConstraints/custom.restrictStorageClass। আপনার কনস্ট্রেন্ট আইডিতে PII বা সংবেদনশীল ডেটা অন্তর্ভুক্ত করবেন না, কারণ এটি ত্রুটি মেসেজে প্রকাশ হয়ে যেতে পারে। - বিবরণ বক্সে, কনস্ট্রেন্টের মানুষের-পঠনযোগ্য বিবরণ লিখুন। নীতি লঙ্ঘন করা হলে এই বিবরণটি ত্রুটি মেসেজ হিসেবে ব্যবহার করা হয়। নীতি লঙ্ঘন কেন হয়েছে এবং কীভাবে নীতি লঙ্ঘন সংক্রান্ত সমস্যার সমাধান করা যায় সেই সম্পর্কে বিবরণ অন্তর্ভুক্ত করুন। আপনার বিবরণে PII বা সংবেদনশীল ডেটা অন্তর্ভুক্ত করবেন না, কারণ এটি ত্রুটি মেসেজে প্রকাশ হতে পারে। এই ফিল্ডে সর্বাধিক ২০০০টি অক্ষর লেখা যাবে।
- রিসোর্সের ধরন বক্সে, 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 নীতি প্রয়োগ করা শুরু করার জন্য প্রায় দুই মিনিট অপেক্ষা করুন।
নীতি পরীক্ষা করুন
স্টোরেজ ক্লাস (যা ডিফল্ট হিসেবে 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. |
এর পরে কী করতে হবে
- প্রতিষ্ঠান নীতি পরিষেবা সম্পর্কে আরও জানুন।
- কীভাবে সংস্থার নীতি তৈরি ও ম্যানেজ করবেন সেই সম্পর্কে আরও জানুন।
- ম্যানেজ করা সংস্থার নীতি সংক্রান্ত সীমাবদ্ধতার সম্পূর্ণ তালিকা দেখুন।