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