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 |
इस्तेमाल के उदाहरण
शुरू करने से पहले
इस गाइड में दिए गए उदाहरणों को चलाने से पहले, पुष्टि करने और अनुमति देने की सुविधा सेट अप करें.
डोमेन के विशेषाधिकारों की सूची पाना
अपने डोमेन में इस्तेमाल किए जा सकने वाले विशेषाधिकारों की पेज के हिसाब से सूची पाने के लिए, 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 तरीके का इस्तेमाल करें. साथ ही, अनुरोधों को अनुमति दें में बताए गए तरीके से अनुमति दें.
किसी उपयोगकर्ता को भूमिका असाइन करने के लिए, उपयोगकर्ता के
user_idके साथ JSON बॉडी जोड़ें. इसेusers.get(),roleId(मौजूदा भूमिकाएं पाएं में बताए गए तरीके से) औरscope_typeसे पाया जा सकता है.किसी सेवा खाते को भूमिका असाइन करने के लिए, JSON बॉडी जोड़ें. इसमें सेवा खाते का
unique_id(पहचान और ऐक्सेस मैनेजमेंट (आईएएम) में बताया गया है),roleId(मौजूदा भूमिकाएं पाएं में बताया गया है), औरscope_typeशामिल होना चाहिए.किसी ग्रुप को भूमिका असाइन करने के लिए,
group_id,roleId, औरscope_typeके साथ JSON बॉडी जोड़ें.group_idकोgroups.get()से पाया जा सकता है.roleIdके बारे में मौजूदा भूमिकाएं पाएं में बताया गया है.
अनुरोध
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'"
}