API دایرکتوری به شما امکان میدهد از کنترل دسترسی مبتنی بر نقش (RBAC) برای مدیریت دسترسی به ویژگیهای دامنه Google Workspace خود استفاده کنید. میتوانید نقشهای سفارشی با امتیازاتی ایجاد کنید تا دسترسی مدیر را به طور خاصتر از نقشهای از پیش ساخته شده ارائه شده توسط Google Workspace محدود کنید. میتوانید نقشها را به کاربران یا گروههای امنیتی اختصاص دهید. این راهنما نحوه انجام برخی از وظایف اساسی مرتبط با نقش را توضیح میدهد.
در زیر لیستی از اصطلاحات رایج مورد استفاده توسط API دایرکتوری در رابطه با RBAC در Google Workspace آمده است:
- امتیاز
- مجوز لازم برای انجام یک کار یا عملیات در دامنه Google Workspace. با منبع
Privilegeنمایش داده میشود. هیچ داده پایداری مرتبط با این منبع وجود ندارد. - نقش
- مجموعهای از امتیازات که به موجودیتهای دارای آن نقش، توانایی انجام وظایف یا عملیات خاص را میدهد. این ویژگی توسط منبع
Roleنمایش داده میشود. - واگذاری نقش
- رکوردی از یک نقش خاص که به کاربر یا گروه داده شده است. توسط منبع
RoleAssignmentنمایش داده میشود. - گروه امنیتی
- نوعی گروه هویت ابری که برای کنترل دسترسی به منابع سازمانی استفاده میشود. گروههای امنیتی میتوانند شامل کاربران و گروههای شخصی باشند.
نقش و محدودیتهای واگذاری نقش
شما فقط میتوانید تعداد محدودی نقش سفارشی یا واگذاری نقش ایجاد کنید، بنابراین اگر به محدودیت نزدیک میشوید، آنها را ادغام یا حذف کنید تا زیر حد مجاز باقی بمانید. نقشها و واگذاری نقشها محدودیتهای زیر را دارند:
- شما میتوانید تا ۷۵۰ نقش سفارشی برای کل سازمان خود ایجاد کنید.
- شما میتوانید تا ۱۰۰۰ نقش را به ازای هر واحد سازمانی (OU) ایجاد کنید، که در آن سازمان ریشه یک واحد در نظر گرفته میشود. به عنوان مثال، میتوانید ۶۰۰ نقش را در سازمان ریشه و ۷۰۰ نقش را در یک OU دیگر که تعریف کردهاید، مانند یک دپارتمان از یک شرکت، اختصاص دهید. همه نقشهای مدیر از پیش ساخته شده Google Workspace به طور پیشفرض در محدوده کل سازمان قرار دارند. درباره محدودیتهای امتیازاتی که میتوان در سطح OU اختصاص داد، بیشتر بدانید.
نقشها و واگذاری نقشها برای گروهها محدودیتهای زیر را دارند:
- شما میتوانید هر نقشی به جز مدیر ارشد (Super Admin) را اختصاص دهید.
- شما میتوانید در مجموع تا ۲۵۰ نقش به گروهها در کل OU و درون هر OU اختصاص دهید.
- این گروه باید یک گروه امنیتی در سازمان شما باشد.
- توصیه میکنیم عضویت در گروه را به کاربران سازمان خود محدود کنید. میتوانید کاربرانی را از خارج از سازمان خود اضافه کنید، اما ممکن است آنها امتیازات نقش را دریافت نکنند. برای جزئیات بیشتر، به بخش محدود کردن عضویت در گروه مراجعه کنید. ### انتساب نقش به گروهها
اگر نیاز دارید بیش از ۱۰۰۰ نقش در یک واحد سازمانی (OU) اختصاص دهید، میتوانید چندین عضو را به یک گروه امنیتی اضافه کنید و یک نقش به گروه اختصاص دهید. اختصاص نقشهای گروهی محدودیتهای دیگری نیز دارد - برای اطلاعات بیشتر به مرکز راهنمای مدیریت مراجعه کنید.
نگاشت نقش به امتیاز در کنسول مدیریت گوگل
برای اختصاص نقشها به کاربرانی که از طریق کنسول مدیریت به امتیازات خود دسترسی دارند، ممکن است لازم باشد امتیازات اضافی خاصی اعطا شود. به عنوان مثال، برای اعطای توانایی ایجاد کاربران دیگر از طریق کنسول مدیریت به یک کاربر، نه تنها امتیاز USERS_CREATE مورد نیاز است، بلکه امتیازات USERS_UPDATE و ORGANIZATION_UNITS_RETRIEVE نیز مورد نیاز است. جدول زیر عملکرد کنسول مدیریت را به امتیازات مورد نیاز برای مدیریت کاربران و واحدهای سازمانی مرتبط میکند.
| قابلیت کنسول مدیریت | امتیازات مورد نیاز |
|---|---|
| واحدهای سازمانی - بخوانید | 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به عنوان شناسه مشتری استفاده کنید.اگر شما یک فروشنده هستید که برای یکی از مشتریان خود امتیازاتی دریافت میکنید، از شناسه مشتری که توسط عملیات بازیابی کاربر برگردانده شده است، استفاده کنید.
درخواست
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges
پاسخ
یک پاسخ موفق، کد وضعیت HTTP 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 زیر استفاده کنید و مجوز شرح داده شده در Authorize requests را وارد کنید.
اگر شما مدیر سیستم هستید و در دامنه خودتان نقشهایی را دریافت میکنید،
my_customerبه عنوان شناسه مشتری استفاده کنید.اگر شما نماینده فروش هستید و برای یک مشتری نقش دریافت میکنید، از شناسه مشتری که با استفاده از عملیات بازیابی کاربر دریافت کردهاید، استفاده کنید.
درخواست
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles
پاسخ
یک پاسخ موفق، کد وضعیت HTTP 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() استفاده کنید. API ممکن است هنگام تنظیم پارامتر userKey ، نتایج خالی با یک نشانه صفحه را برگرداند. شما باید صفحهبندی را تا زمانی که هیچ نشانه صفحهای برگردانده نشود، ادامه دهید.
اگر شما مدیر سیستم هستید و در دامنه خودتان نقشهایی را دریافت میکنید،
my_customerبه عنوان شناسه مشتری استفاده کنید.اگر شما یک فروشنده هستید و برای یکی از مشتریان خود نقش تعیین میکنید، از شناسه مشتری که توسط عملیات بازیابی کاربر برگردانده شده است، استفاده کنید.
درخواست
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments
پاسخ
یک پاسخ موفق، کد وضعیت HTTP 200 را برمیگرداند. همراه با کد وضعیت، پاسخ تمام نقشهای اختصاص داده شده در دامنه را برمیگرداند:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"user",
"scopeType:"CUSTOMER",
}
تمام وظایف غیرمستقیم را فهرست کنید
برای دریافت یک لیست صفحهبندیشده از تمام نقشهای انتسابی، از جمله آنهایی که بهطور غیرمستقیم به دلیل گروههایی که به آنها تعلق دارند به یک کاربر اختصاص داده شدهاند، از متد roleAssignments.list() استفاده کنید.
ممکن است API نتایج خالی با توکن صفحه برگرداند. شما باید صفحهبندی را تا زمانی که هیچ توکن صفحهای برگردانده نشود، ادامه دهید.
اگر شما مدیر سیستم هستید و در دامنه خودتان نقشهایی را دریافت میکنید،
my_customerبه عنوان شناسه مشتری استفاده کنید.اگر شما یک فروشنده هستید و برای یکی از مشتریان خود نقش تعیین میکنید، از شناسه مشتری که توسط عملیات بازیابی کاربر برگردانده شده است، استفاده کنید.
به جای
USER_KEYمقداری قرار دهید که کاربر را در درخواست API مشخص کند. برای اطلاعات بیشتر، بهusers.getمراجعه کنید.
درخواست
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true
پاسخ
یک پاسخ موفق، کد وضعیت HTTP 200 را برمیگرداند. همراه با کد وضعیت، پاسخ تمام نقشهای اختصاص داده شده در دامنه و اینکه آیا assigneeType user است یا group برمیگرداند:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"group",
"scopeType:"CUSTOMER",
}
نقشی ایجاد کنید
برای ایجاد یک نقش جدید، از درخواست POST زیر استفاده کنید و مجوز شرح داده شده در درخواستهای مجوز را وارد کنید. برای هر امتیازی که باید با این نقش اعطا شود، یک privilegeName و serviceId اضافه کنید. برای ویژگیهای درخواست و پاسخ، به مرجع API مراجعه کنید.
درخواست
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"
}
]
}پاسخ
یک پاسخ موفق، کد وضعیت HTTP 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 زیر استفاده کنید و مجوز شرح داده شده در Authorize requests را وارد کنید.
برای اختصاص نقش به یک کاربر، یک بدنه JSON با
user_idکاربر اضافه کنید که میتوانید آن را ازusers.get()،roleId(مطابق توضیحات در Get existing roles ) وscope_typeدریافت کنید.برای اختصاص نقش به یک حساب سرویس، یک بدنه JSON شامل
unique_idحساب سرویس (مطابق تعریف شده در مدیریت هویت و دسترسی (IAM) )،roleId(مطابق توضیح داده شده در دریافت نقشهای موجود ) وscope_typeاضافه کنید.برای اختصاص نقش به یک گروه، یک بدنه JSON با
group_idگروه اضافه کنید، که میتوانید آن را ازgroups.get()،roleId(مطابق توضیحات در Get existing roles ) وscope_typeدریافت کنید.
درخواست
POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER" }
پاسخ
یک پاسخ موفق، کد وضعیت HTTP 200 را برمیگرداند. این پاسخ، همراه با کد وضعیت، ویژگیهای مربوط به انتساب نقش جدید را نیز برمیگرداند:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER"
}
ایجاد یک انتساب نقش با شرایط
شما میتوانید نقشهایی را برای انجام اقداماتی که شرایط خاصی را برآورده میکنند، اعطا کنید. در حال حاضر، فقط دو شرط پشتیبانی میشود:
- فقط برای گروههای امنیتی قابل اجرا است
- برای گروههای امنیتی قابل اجرا نیست
وقتی condition تنظیم میشود، فقط زمانی اعمال میشود که منبع مورد دسترسی، شرط را برآورده کند. اگر condition خالی باشد، نقش ( roleId ) بدون قید و شرط به بازیگر ( assignedTo ) در محدوده ( scopeType ) اعمال میشود.
برای اختصاص یک نقش به یک کاربر، از متد POST زیر استفاده کنید و مجوز شرح داده شده در Authorize requests را وارد کنید.
یک بدنه JSON با user_id کاربر اضافه کنید، که میتوانید آن را از users.get() دریافت کنید، roleId همانطور که در Get existing roles توضیح داده شده است، و 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'" }
پاسخ
یک پاسخ موفق، کد وضعیت HTTP 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'"
}