संगठन की कस्टम नीति से जुड़ी पाबंदियां

इस पेज पर, Google Cloud Organization Policy Service की कस्टम कंस्ट्रेंट का इस्तेमाल करने का तरीका बताया गया है. इससे, Cloud Storage for Firebase के इन संसाधनों पर कुछ कार्रवाइयों को प्रतिबंधित किया जा सकता है:

  • firebasestorage.googleapis.com/DefaultBucket

संगठन की नीति के बारे में ज़्यादा जानने के लिए, संगठन की पसंद के मुताबिक बनाई गई नीतियां देखें.

संगठन की नीतियों और पाबंदियों के बारे में जानकारी

Google Cloud Organization Policy Service की मदद से, आपको अपने संगठन के संसाधनों पर प्रोग्राम के हिसाब से कंट्रोल मिलता है. साथ ही, इन संसाधनों को एक ही जगह से मैनेज किया जा सकता है. संगठन की नीति के एडमिन के तौर पर, आपके पास संगठन की नीति तय करने का विकल्प होता है. यह नीति, पाबंदियों का एक सेट होती है. इन्हें कंस्ट्रेंट कहा जाता है. ये कंस्ट्रेंट, 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 के साथ संगठन की पसंद के मुताबिक बनाई गई नीतियों का इस्तेमाल करने पर, ये सीमाएं लागू होती हैं:

  • पहले से मौजूद संसाधनों पर लागू नहीं होती: नई लागू की गई कस्टम पाबंदियां, पहले से मौजूद संसाधनों पर लागू नहीं होतीं. मौजूदा डिफ़ॉल्ट बकेट का आकलन तब तक नहीं किया जाता, जब तक उन्हें अपडेट नहीं किया जाता. किसी पाबंदी का उल्लंघन करने वाले मौजूदा संसाधनों की पहचान करने के लिए, ड्राई-रन मोड का इस्तेमाल करके नीतियों की जांच की जा सकती है.
  • ऐक्सेस कंट्रोल से जुड़ी पाबंदियां: कस्टम कंस्ट्रेंट, बकेट पर ऐक्सेस कंट्रोल लिस्ट (एसीएल) या IAM नीतियों को प्रतिबंधित नहीं कर सकते.

शुरू करने से पहले

  1. Firebase कंसोल में, कोई Firebase प्रोजेक्ट चुनें या बनाएं.

    पक्का करें कि आपका प्रोजेक्ट किसी संगठन का हिस्सा हो और आपको अपने संगठन का आईडी पता हो.

  2. कमांड लाइन का इस्तेमाल करके, कस्टम कंस्ट्रेंट सेट अप और लागू करने के लिए, 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
  • resource.location
  • resource.storageClass

कस्टम कंस्ट्रेंट सेट अप करना

कस्टम कंस्ट्रेंट को YAML फ़ाइल में तय किया जाता है. इसके लिए, उन संसाधनों, तरीकों, शर्तों, और कार्रवाइयों का इस्तेमाल किया जाता है जो उस सेवा के साथ काम करती हैं जिस पर संगठन की नीति लागू की जा रही है. कस्टम कंस्ट्रेंट की शर्तें, कॉमन एक्सप्रेशन लैंग्वेज (सीईएल) का इस्तेमाल करके तय की जाती हैं. सीईएल का इस्तेमाल करके, कस्टम कंस्ट्रेंट में शर्तें बनाने के तरीके के बारे में ज़्यादा जानने के लिए, कस्टम कंस्ट्रेंट बनाना और मैनेज करना लेख का सीईएल सेक्शन देखें.

कंसोल

कस्टम कंस्ट्रेंट बनाने के लिए, यह तरीका अपनाएं:

  1. Google Cloud कंसोल में, संगठन की नीतियां पेज पर जाएं.

    संगठन की नीतियों पर जाएं

  2. प्रोजेक्ट पिकर से, वह प्रोजेक्ट चुनें जिसके लिए आपको संगठन की नीति सेट करनी है.
  3. कस्टम कंस्ट्रेंट पर क्लिक करें.
  4. डिसप्ले नेम बॉक्स में, पाबंदी के लिए ऐसा नाम डालें जिसे कोई व्यक्ति आसानी से पढ़ सके. इस नाम का इस्तेमाल, गड़बड़ी के मैसेज में किया जाता है. साथ ही, इसका इस्तेमाल पहचान करने और डीबग करने के लिए किया जा सकता है. डिसप्ले नेम में, व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) या संवेदनशील डेटा का इस्तेमाल न करें. ऐसा इसलिए, क्योंकि गड़बड़ी के मैसेज में यह नाम दिख सकता है. इस फ़ील्ड में ज़्यादा से ज़्यादा 200 वर्ण हो सकते हैं.
  5. कंस्ट्रेंट आईडी बॉक्स में, वह आईडी डालें जो आपको अपनी नई कस्टम कंस्ट्रेंट के लिए चाहिए. कस्टम कंस्ट्रेंट में सिर्फ़ अक्षर (अंग्रेज़ी के बड़े और छोटे अक्षर) या संख्याएं शामिल हो सकती हैं. उदाहरण के लिए, custom.restrictStorageClass. इस फ़ील्ड में ज़्यादा से ज़्यादा 70 वर्ण हो सकते हैं. इसमें प्रीफ़िक्स (custom.) शामिल नहीं है. उदाहरण के लिए, organizations/123456789/customConstraints/custom.restrictStorageClass. अपने कंस्ट्रेंट आईडी में व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) या संवेदनशील डेटा शामिल न करें. ऐसा इसलिए, क्योंकि यह जानकारी गड़बड़ी के मैसेज में दिख सकती है.
  6. ब्यौरा बॉक्स में, पाबंदी के बारे में ऐसी जानकारी डालें जिसे कोई भी व्यक्ति आसानी से पढ़ सके. नीति का उल्लंघन होने पर, इस ब्यौरे का इस्तेमाल गड़बड़ी के मैसेज के तौर पर किया जाता है. इसमें नीति के उल्लंघन की वजह और उसे ठीक करने के तरीके के बारे में जानकारी शामिल करें. अपने ब्यौरे में व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) या संवेदनशील डेटा शामिल न करें. ऐसा इसलिए, क्योंकि यह गड़बड़ी के मैसेज में दिख सकता है. इस फ़ील्ड में ज़्यादा से ज़्यादा 2,000 वर्ण हो सकते हैं.
  7. संसाधन का टाइप बॉक्स में, उस REST संसाधन का नाम चुनें जिसमें वह ऑब्जेक्ट और फ़ील्ड मौजूद है जिस पर आपको पाबंदी लगानी है. उदाहरण के लिए, firebasestorage.googleapis.com/DefaultBucket. ज़्यादातर संसाधन टाइप में, ज़्यादा से ज़्यादा 20 कस्टम कंस्ट्रेंट इस्तेमाल किए जा सकते हैं. अगर आपने तय सीमा से ज़्यादा कस्टम कंस्ट्रेंट बनाने की कोशिश की, तो कार्रवाई पूरी नहीं होगी.
  8. लागू करने का तरीका में जाकर, चुनें कि पाबंदी को REST CREATE तरीके पर लागू करना है या CREATE और UPDATE, दोनों तरीकों पर लागू करना है. (ध्यान दें: DefaultBucket सिर्फ़ CREATE के साथ काम करता है).
  9. कोई शर्त तय करने के लिए, शर्त में बदलाव करें पर क्लिक करें.
    1. शर्त जोड़ें पैनल में, सीईएल की ऐसी शर्त बनाएं जो इस्तेमाल की जा सकने वाली सेवा के संसाधन को रेफ़र करती हो. उदाहरण के लिए, resource.storageClass == 'STANDARD'. इस फ़ील्ड में ज़्यादा से ज़्यादा 1,000 वर्ण हो सकते हैं. सीईएल के इस्तेमाल के बारे में ज़्यादा जानने के लिए, कॉमन एक्सप्रेशन लैंग्वेज लेख पढ़ें.
    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.

आगे क्या करना है