भूमिकाएं प्रबंधित करें

Directory API की मदद से, भूमिका के हिसाब से ऐक्सेस कंट्रोल (आरबीएसी) का इस्तेमाल किया जा सकता है. इससे, Google Workspace डोमेन में सुविधाओं का ऐक्सेस मैनेज किया जा सकता है. Google Workspace में पहले से मौजूद भूमिकाओं के मुकाबले, एडमिन के ऐक्सेस को ज़्यादा सीमित करने के लिए, विशेषाधिकारों के साथ कस्टम भूमिकाएं बनाई जा सकती हैं. उपयोगकर्ताओं या सुरक्षा ग्रुप को भूमिकाएं असाइन की जा सकती हैं. इस गाइड में, भूमिका से जुड़े कुछ बुनियादी टास्क पूरे करने का तरीका बताया गया है.

यहां Google Workspace में RBAC के लिए, Directory API में इस्तेमाल किए जाने वाले सामान्य शब्दों की सूची दी गई है:

खास अधिकार
Google Workspace डोमेन में किसी टास्क या कार्रवाई को पूरा करने के लिए ज़रूरी अनुमति. Privilege संसाधन के ज़रिए दिखाया जाता है. इस संसाधन से जुड़ा कोई भी डेटा सेव नहीं किया गया है.
Role
यह अधिकारों का एक कलेक्शन होता है. इससे किसी भूमिका वाली इकाइयों को कुछ टास्क या कार्रवाइयां करने की अनुमति मिलती है. Role संसाधन से दिखाया जाता है.
भूमिका असाइन करना
उपयोगकर्ता या ग्रुप को दी गई किसी भूमिका का रिकॉर्ड. RoleAssignment संसाधन के ज़रिए दिखाया जाता है.
सुरक्षा ग्रुप
यह एक तरह का Cloud Identity ग्रुप होता है. इसका इस्तेमाल, संगठन के संसाधनों के ऐक्सेस को कंट्रोल करने के लिए किया जाता है. सुरक्षा ग्रुप में अलग-अलग उपयोगकर्ता और ग्रुप, दोनों शामिल हो सकते हैं.

भूमिका और भूमिका असाइन करने की सीमाएं

कस्टम रोल या भूमिका असाइन करने की सुविधा का इस्तेमाल सीमित तौर पर किया जा सकता है. इसलिए, अगर तय सीमा पूरी होने वाली है, तो उन्हें एक साथ जोड़ें या हटाएं, ताकि तय सीमा के अंदर रहा जा सके. भूमिकाओं और भूमिकाएं असाइन करने पर ये सीमाएं लागू होती हैं:

  • अपने पूरे संगठन के लिए, ज़्यादा से ज़्यादा 750 कस्टम भूमिकाएं बनाई जा सकती हैं.
  • संगठन की हर इकाई (ओयू) के लिए, ज़्यादा से ज़्यादा 1,000 भूमिकाएं असाइन की जा सकती हैं. रूट संगठन को एक इकाई माना जाता है. उदाहरण के लिए, रूट संगठन में 600 भूमिकाएं और कंपनी के किसी विभाग जैसे आपके तय किए गए किसी अन्य ओयू में 700 भूमिकाएं असाइन की जा सकती हैं. Google Workspace में एडमिन के लिए पहले से बनाई गई सभी भूमिकाओं का डिफ़ॉल्ट स्कोप, पूरे संगठन के लिए होता है. ओयू लेवल पर असाइन किए जा सकने वाले अधिकारों की सीमाओं के बारे में ज़्यादा जानें.

ग्रुप के लिए, भूमिकाओं और भूमिका असाइन करने से जुड़ी ये सीमाएं लागू होती हैं:

  • सुपर एडमिन की भूमिका को छोड़कर, कोई भी भूमिका असाइन की जा सकती है.
  • संगठन की हर इकाई और पूरी ओयू के लिए, ग्रुप को भूमिकाएं असाइन करने की संख्या 250 से ज़्यादा नहीं होनी चाहिए.
  • ग्रुप, आपके संगठन का सुरक्षा ग्रुप होना चाहिए.
  • हमारा सुझाव है कि आप अपने संगठन के उपयोगकर्ताओं के लिए, ग्रुप की सदस्यता सीमित करें. आपके पास अपने संगठन से बाहर के उपयोगकर्ताओं को जोड़ने का विकल्प होता है. हालांकि, उन्हें भूमिका से जुड़े खास अधिकार नहीं मिल सकते. ज़्यादा जानकारी के लिए, ग्रुप की सदस्यता पर पाबंदी लगाना लेख पढ़ें. ### ग्रुप को भूमिका असाइन करना

अगर आपको किसी ओयू में 1,000 से ज़्यादा भूमिकाएं असाइन करनी हैं, तो सुरक्षा से जुड़े ग्रुप में कई सदस्यों को जोड़ा जा सकता है. इसके बाद, ग्रुप को कोई भूमिका असाइन की जा सकती है. ग्रुप की भूमिकाएं असाइन करने से जुड़ी कुछ और सीमाएं भी हैं. इस बारे में ज़्यादा जानने के लिए, एडमिन सहायता केंद्र पर जाएं.

Google Admin console में भूमिका के हिसाब से खास अधिकारों की मैपिंग

Admin console के ज़रिए अपने विशेषाधिकारों को ऐक्सेस करने वाले उपयोगकर्ताओं को भूमिकाएं असाइन करने के लिए, कुछ अतिरिक्त विशेषाधिकार दिए जा सकते हैं. उदाहरण के लिए, किसी उपयोगकर्ता को Admin console के ज़रिए अन्य उपयोगकर्ताओं को बनाने की अनुमति देने के लिए, न सिर्फ़ USERS_CREATE विशेषाधिकार की ज़रूरत होती है, बल्कि USERS_UPDATE और ORGANIZATION_UNITS_RETRIEVE विशेषाधिकारों की भी ज़रूरत होती है. यहां दी गई टेबल में, Admin console की सुविधाओं को उपयोगकर्ताओं और इकाइयों को मैनेज करने के लिए ज़रूरी अनुमतियों के साथ मैप किया गया है.

Admin console की सुविधाएं ज़रूरी अनुमतियां
संगठन की इकाइयां - पढ़ने की अनुमति ORGANIZATION_UNITS_RETRIEVE
संगठन की इकाइयां - बनाएं ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE
संगठन की इकाइयां - अपडेट करें ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE
संगठन की इकाइयां - मिटाएं ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE
संगठन की इकाइयां ORGANIZATION_UNITS_ALL
उपयोगकर्ता - पढ़ने की अनुमति USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - बनाएं USERS_CREATE + USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - अपडेट करें USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - उपयोगकर्ताओं को ले जाएं USERS_MOVE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - उपयोगकर्ताओं का नाम बदलना USERS_ALIAS + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - पासवर्ड रीसेट करें USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - पासवर्ड बदलना ज़रूरी करें USERS_FORCE_PASSWORD_CHANGE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - उपनाम जोड़ें/हटाएं USERS_ADD_NICKNAME + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
उपयोगकर्ता - उपयोगकर्ताओं को निलंबित करें USERS_SUSPEND + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
ग्रुप GROUPS_ALL
सुरक्षा - उपयोगकर्ता सुरक्षा मैनेजमेंट USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE

इस्तेमाल के उदाहरण

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

इस गाइड में दिए गए उदाहरणों को चलाने से पहले, पुष्टि करने और अनुमति देने की सुविधा सेट अप करें.

  1. उस स्क्रीन को कॉन्फ़िगर करें जहां OAuth के लिए सहमति दी जाती है.

  2. ऐक्सेस क्रेडेंशियल बनाएं.

डोमेन के विशेषाधिकारों की सूची पाना

अपने डोमेन में इस्तेमाल किए जा सकने वाले विशेषाधिकारों की पेज के हिसाब से सूची पाने के लिए, privileges.list() तरीके का इस्तेमाल करें.

  • अगर आप एडमिन हैं और आपको अपने डोमेन में विशेषाधिकार मिल रहे हैं, तो ग्राहक आईडी के तौर पर my_customer का इस्तेमाल करें.

  • अगर आप रीसेलर हैं और आपको अपने किसी ग्राहक के लिए विशेषाधिकार मिल रहे हैं, तो Retrieve a user ऑपरेशन से मिले ग्राहक आईडी का इस्तेमाल करें.

अनुरोध

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में डोमेन में काम करने वाले विशेषाधिकारों की जानकारी भी मिलती है:

{
  "kind": "admin\#directory\#privileges",
  "etag": ...,
  "items": [
    {
      "kind": "admin\#directory\#privilege",
      "etag": ...,
      "serviceId": "02afmg282jiquyg",
      "privilegeName": "APP_ADMIN",
      "isOuScopable": false
    },
    {
      "kind": "admin\#directory\#privilege",
      "etag": ...,
      "serviceId": "04f1mdlm0ki64aw",
      "privilegeName": "MANAGE_USER_SETTINGS",
      "isOuScopable": true,
      "childPrivileges": [
        {
          "kind": "admin\#directory\#privilege",
          "etag": ...,
          "serviceId": "04f1mdlm0ki64aw",
          "privilegeName": "MANAGE_APPLICATION_SETTINGS",
          "isOuScopable": true
        }
      ]
    },
    ...
  ]
}

मौजूदा भूमिकाएं पाना

मौजूदा भूमिकाओं की सूची पाने के लिए, यहां दिया गया GET अनुरोध इस्तेमाल करें. साथ ही, अनुरोधों को अनुमति देना में बताया गया अनुमति देने का तरीका अपनाएं.

  • अगर आप एडमिन हैं और आपको अपने डोमेन में भूमिकाएं मिल रही हैं, तो ग्राहक आईडी के तौर पर my_customer का इस्तेमाल करें.

  • अगर आपको किसी ग्राहक के लिए भूमिकाएं असाइन करनी हैं, तो उस ग्राहक आईडी का इस्तेमाल करें जो आपको Retrieve a user ऑपरेशन का इस्तेमाल करके मिला है.

अनुरोध

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में डोमेन में मौजूद भूमिकाएं भी दिखती हैं:

{
  "kind": "admin\#directory\#roles",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/DywA6_jaJCYw-f0lFs2-g17UWe8\"",
  "items": [
    {
      "kind": "admin\#directory\#role",
      "etag": ... ,
      "roleId": "3894208461012993",
      "roleName": "_SEED_ADMIN_ROLE",
      "roleDescription": "Google Workspace Administrator Seed Role",
      "rolePrivileges": [
        {
          "privilegeName": "SUPER_ADMIN",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "ROOT_APP_ADMIN",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "ADMIN_APIS_ALL",
          "serviceId": "00haapch16h1ysv"
        },
        ...
      ],
      "isSystemRole": true,
      "isSuperAdminRole": true
    },
    {
      "kind": "admin\#directory\#role",
      "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/bTXiZXfuK1NGr_f4paosCWXuHmw\"",
      "roleId": "3894208461012994",
      "roleName": "_GROUPS_ADMIN_ROLE",
      "roleDescription": "Groups Administrator",
      "rolePrivileges": [
        {
          "privilegeName": "CHANGE_USER_GROUP_MEMBERSHIP",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "USERS_RETRIEVE",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "GROUPS_ALL",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "ADMIN_DASHBOARD",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "ORGANIZATION_UNITS_RETRIEVE",
          "serviceId": "00haapch16h1ysv"
        }
      ],
      "isSystemRole": true
    },
    ...
  ]
}

भूमिका असाइन करने की सभी कार्रवाइयों की सूची बनाना

भूमिका असाइन करने के सभी डायरेक्ट अनुरोधों की पेज के हिसाब से सूची पाने के लिए, roleAssignments.list() तरीके का इस्तेमाल करें. userKey पैरामीटर सेट होने पर, एपीआई पेज टोकन के साथ खाली नतीजे दिखा सकता है. पेजिनेशन तब तक जारी रखें, जब तक कोई पेज टोकन वापस नहीं मिल जाता.

  • अगर आप एडमिन हैं और आपको अपने डोमेन में भूमिकाएं असाइन करनी हैं, तो ग्राहक आईडी के तौर पर my_customer का इस्तेमाल करें.

  • अगर आप रीसेलर हैं और आपको अपने किसी ग्राहक के लिए भूमिकाएं असाइन करनी हैं, तो Retrieve a user ऑपरेशन से मिले ग्राहक आईडी का इस्तेमाल करें.

अनुरोध

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में डोमेन में असाइन की गई सभी भूमिकाएं दिखती हैं:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"user",
  "scopeType:"CUSTOMER",
}

भूमिका असाइन करने के सभी अप्रत्यक्ष तरीकों की सूची बनाना

भूमिका असाइन करने की सभी जानकारी वाली पेज के हिसाब से बांटी गई सूची पाने के लिए, roleAssignments.list() तरीके का इस्तेमाल करें. इसमें वे भूमिकाएं भी शामिल हैं जो किसी उपयोगकर्ता को सीधे तौर पर असाइन नहीं की गई हैं, बल्कि उन ग्रुप की वजह से असाइन की गई हैं जिनका वह सदस्य है.

ऐसा हो सकता है कि एपीआई, पेज टोकन के साथ खाली नतीजे दिखाए. पेजिनेशन तब तक जारी रखें, जब तक कोई पेज टोकन वापस न आ जाए.

  • अगर आप एडमिन हैं और आपको अपने डोमेन में भूमिकाएं असाइन करनी हैं, तो ग्राहक आईडी के तौर पर my_customer का इस्तेमाल करें.

  • अगर आप रीसेलर हैं और आपको अपने किसी ग्राहक के लिए भूमिकाएं असाइन करनी हैं, तो Retrieve a user ऑपरेशन से मिले ग्राहक आईडी का इस्तेमाल करें.

  • USER_KEY को ऐसी वैल्यू से बदलें जो एपीआई अनुरोध में उपयोगकर्ता की पहचान करती हो. ज़्यादा जानकारी के लिए, users.get देखें.

अनुरोध

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में डोमेन में असाइन की गई सभी भूमिकाएं दिखती हैं. साथ ही, यह भी दिखता है कि assigneeType user है या group:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"group",
  "scopeType:"CUSTOMER",
}

भूमिका बनाना

नई भूमिका बनाने के लिए, यहां दिया गया POST अनुरोध इस्तेमाल करें. साथ ही, अनुरोधों को अनुमति देना में बताया गया अनुमति देने का तरीका अपनाएं. हर उस खास अधिकार के लिए privilegeName और serviceId जोड़ें जो इस भूमिका के साथ दिया जाना चाहिए. अनुरोध और रिस्पॉन्स की प्रॉपर्टी के लिए, एपीआई का रेफ़रंस देखें.

अनुरोध

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

{
  "roleName": "My New Role",
  "rolePrivileges": [
    {
      "privilegeName": "USERS_ALL",
      "serviceId": "00haapch16h1ysv"
    },
    {
      "privilegeName": "GROUPS_ALL",
      "serviceId": "00haapch16h1ysv"
    }
  ]
}

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में नई भूमिका के लिए ये प्रॉपर्टी दिखती हैं:

{
  "kind": "admin\#directory\#role",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/uX9tXw0qyijC9nUKgCs08wo8aEM\"",
  "roleId": "3894208461013031",
  "roleName": "My New Role",
  "rolePrivileges": [
    {
      "privilegeName": "GROUPS_ALL",
      "serviceId": "00haapch16h1ysv"
    },
    {
      "privilegeName": "USERS_ALL",
      "serviceId": "00haapch16h1ysv"
    }
  ]
}

भूमिका असाइनमेंट बनाना

कोई भूमिका असाइन करने के लिए, यहां दिए गए POST तरीके का इस्तेमाल करें. साथ ही, अनुरोधों को अनुमति दें में बताए गए तरीके से अनुमति दें.

अनुरोध

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में नई भूमिका असाइन करने की प्रॉपर्टी भी दिखती हैं:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

शर्तों के साथ भूमिका असाइन करना

खास शर्तें पूरी करने वाली कार्रवाइयां करने के लिए, भूमिकाएं असाइन की जा सकती हैं. फ़िलहाल, सिर्फ़ दो शर्तें पूरी होने पर ही यह सुविधा काम करती है:

  • सिर्फ़ सुरक्षा से जुड़े ग्रुप पर लागू होता है
  • सुरक्षा से जुड़े ग्रुप पर लागू नहीं होता

condition को सेट करने पर, यह सिर्फ़ तब लागू होगा, जब ऐक्सेस की जा रही संसाधन, शर्त को पूरा करता हो. अगर condition खाली है, तो भूमिका (roleId) को बिना किसी शर्त के, स्कोप (scopeType) में मौजूद कलाकार (assignedTo) पर लागू किया जाता है.

किसी उपयोगकर्ता को भूमिका असाइन करने के लिए, यहां दिए गए POST तरीके का इस्तेमाल करें. साथ ही, अनुरोधों को अनुमति दें में बताई गई अनुमति शामिल करें.

उपयोगकर्ता के user_id के साथ JSON बॉडी जोड़ें. इसे users.get() से पाया जा सकता है. साथ ही, मौजूदा भूमिकाएं पाएं में बताए गए तरीके से roleId और condition जोड़ें. नीचे दी गई दो शर्तों वाली स्ट्रिंग का इस्तेमाल, ठीक उसी तरह से किया जाना चाहिए. ये सिर्फ़ Groups Editor और Groups Reader की एडमिन की पहले से तय भूमिकाओं के साथ काम करती हैं. ये शर्तें, Cloud IAM की शर्तों के सिंटैक्स के मुताबिक होती हैं.

अनुरोध

सिर्फ़ सुरक्षा से जुड़े ग्रुप पर लागू होता है
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}
सुरक्षा से जुड़े ग्रुप पर लागू नहीं होता
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}

जवाब

अनुरोध पूरा होने पर, एचटीटीपी 200 स्टेटस कोड मिलता है. स्टेटस कोड के साथ-साथ, रिस्पॉन्स में नई भूमिका असाइन करने की प्रॉपर्टी भी दिखती हैं:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}