Directory API, Google Workspace alanınızdaki özelliklere erişimi yönetmek için rol tabanlı erişim denetimini (RBAC) kullanmanıza olanak tanır. Google Workspace ile sağlanan önceden oluşturulmuş rollerden daha ayrıntılı bir şekilde yönetici erişimini sınırlamak için ayrıcalıklara sahip özel roller oluşturabilirsiniz. Kullanıcılara veya güvenlik gruplarına rol atayabilirsiniz. Bu kılavuzda, rollerle ilgili bazı temel görevlerin nasıl yapılacağı açıklanmaktadır.
Aşağıda, Google Workspace'teki RBAC ile ilgili olarak Directory API tarafından kullanılan yaygın terimlerin listesi verilmiştir:
- Ayrıcalık (Privilege)
- Google Workspace alanında bir görevi veya işlemi gerçekleştirmek için gereken izin. Represented by the
Privilegeresource. Bu kaynakla ilişkili kalıcı veri yok. - Rol
- Bu role sahip olan kuruluşlara belirli görevleri veya işlemleri gerçekleştirme olanağı tanıyan bir ayrıcalıklar koleksiyonu.
Rolekaynağıyla temsil edilir. - Rol atama
- Kullanıcıya veya gruba verilen belirli bir rolün kaydı.
RoleAssignmentkaynağıyla temsil edilir. - Güvenlik grubu
- Kuruluş kaynaklarına erişimi kontrol etmek için kullanılan bir Cloud Identity grubu türü. Güvenlik grupları hem bağımsız kullanıcıları hem de grupları içerebilir.
Rol ve rol atama sınırları
Yalnızca sınırlı sayıda özel rol veya rol ataması oluşturabilirsiniz. Bu nedenle, sınıra yaklaşıyorsanız sınırı aşmamak için bunları birleştirin veya kaldırın. Roller ve rol atamalarıyla ilgili sınırlar şunlardır:
- Kuruluşunuzun tamamı için 750'ye kadar özel rol oluşturabilirsiniz.
- Kök kuruluşun bir birim olarak kabul edildiği her kuruluş birimi (KB) için en fazla 1.000 rol ataması oluşturabilirsiniz. Örneğin, kök kuruluşta 600 rol ve tanımladığınız başka bir kuruluş biriminde (ör. bir şirketin departmanı) 700 rol atayabilirsiniz. Tüm Google Workspace önceden oluşturulmuş yönetici rolleri varsayılan olarak kuruluş genelinde kapsamlıdır. OU düzeyinde atanabilecek ayrıcalıklarla ilgili sınırlar hakkında daha fazla bilgi edinin.
Roller ve rol atamaları için gruplarla ilgili aşağıdaki sınırlar geçerlidir:
- Süper yönetici rolü dışında herhangi bir rolü atayabilirsiniz.
- Genel kuruluş birimi düzeyinde ve her kuruluş biriminde gruplara toplam 250 rol ataması yapabilirsiniz.
- Grup, kuruluşunuzda bir güvenlik grubu olmalıdır.
- Grup üyeliğini kuruluşunuzdaki kullanıcılarla kısıtlamanızı öneririz. Kuruluşunuzun dışından kullanıcılar ekleyebilirsiniz ancak bu kullanıcılar rol ayrıcalıklarına sahip olmayabilir. Ayrıntılı bilgi için Grup üyeliğini kısıtlama başlıklı makaleyi inceleyin. ### Gruplara rol atama
Bir kuruluş biriminde 1.000'den fazla rol atamanız gerekiyorsa bir güvenlik grubuna birden çok üye ekleyebilir ve gruba rol atayabilirsiniz. Grup rolü atamalarıyla ilgili bazı ek sınırlamalar vardır. Belirli bilgiler için Yönetici Yardım Merkezi'ne bakın.
Google Yönetici Konsolu'nda rol-ayrıcalık eşleme
Ayrıcalıklarına Yönetici Konsolu üzerinden erişen kullanıcılara rol atamak için belirli ek ayrıcalıkların verilmesi gerekebilir. Örneğin, bir kullanıcıya Yönetici Konsolu üzerinden başka kullanıcılar oluşturma izni vermek için yalnızca USERS_CREATE ayrıcalığı değil, USERS_UPDATE ve ORGANIZATION_UNITS_RETRIEVE ayrıcalıkları da gerekir. Aşağıdaki tabloda, kullanıcıları ve kuruluş birimlerini yönetmek için gerekli ayrıcalıklarla Yönetici Konsolu işlevleri eşleştirilmiştir.
| Yönetici Konsolu işlevleri | Gerekli ayrıcalıklar |
|---|---|
| Kuruluş Birimleri - Okuma | ORGANIZATION_UNITS_RETRIEVE |
| Kuruluş Birimleri - Oluşturma | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE |
| Kuruluş Birimleri - Güncelleme | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE |
| Kuruluş Birimleri - Silme | ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE |
| Kuruluş Birimleri | ORGANIZATION_UNITS_ALL |
| Kullanıcılar - Okuma | USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Oluşturma | USERS_CREATE + USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Güncelleme | USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Kullanıcı Taşıma | USERS_MOVE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Kullanıcıları Yeniden Adlandırma | USERS_ALIAS + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Şifreyi Sıfırlama | USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Şifre Değişikliğini Zorunlu Kılma | USERS_FORCE_PASSWORD_CHANGE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Takma Ad Ekleme/Kaldırma | USERS_ADD_NICKNAME + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| Kullanıcılar - Kullanıcıları Askıya Alma | USERS_SUSPEND + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
| GRUPLAR | GROUPS_ALL |
| Güvenlik - Kullanıcı Güvenliği Yönetimi | USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Kullanım alanı örnekleri
Başlamadan önce
Bu kılavuzdaki örnekleri çalıştırmadan önce kimlik doğrulama ve yetkilendirmeyi ayarlayın.
Alan adı ayrıcalıklarının listesini alma
Alanınızda desteklenen ayrıcalıkların sayfalandırılmış bir listesini almak için
privileges.list()
yöntemini kullanın.
Kendi alanınızda ayrıcalıklar alan bir yöneticiyseniz müşteri kimliği olarak
my_customerkullanın.Müşterilerinizden birinin ayrıcalıklarını alan bir satıcıysanız Kullanıcı alma işlemi tarafından döndürülen müşteri kimliğini kullanın.
İstek
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges
Yanıt
Başarılı bir yanıt HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte alanda desteklenen ayrıcalıkları döndürür:
{
"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
}
]
},
...
]
}
Mevcut rolleri alma
Mevcut rollerin listesini almak için aşağıdaki GET isteğini kullanın ve İstekleri yetkilendirme bölümünde açıklanan yetkilendirmeyi ekleyin.
Kendi alanınızda roller alan bir yöneticiyseniz müşteri kimliği olarak
my_customerkullanın.Bir müşteri için rol alan bir bayiyseniz Kullanıcı alma işlemiyle aldığınız müşteri kimliğini kullanın.
İstek
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles
Yanıt
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte alanda bulunan rolleri döndürür:
{
"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
},
...
]
}
Tüm rol atamalarını listeleme
Tüm doğrudan rol atamalarının sayfalandırılmış bir listesini almak için roleAssignments.list() yöntemini kullanın. API, userKey parametresi ayarlandığında sayfa jetonuyla boş sonuçlar döndürebilir. Sayfa jetonu döndürülmeyene kadar sayfalara ayırmaya devam etmeniz gerekir.
Kendi alanınızda rol atamaları alan bir yöneticiyseniz müşteri kimliği olarak
my_customerdeğerini kullanın.Müşterilerinizden birine rol atamaları yapan bir bayiyseniz Kullanıcı alma işlemi tarafından döndürülen müşteri kimliğini kullanın.
İstek
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments
Yanıt
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte alanda atanmış tüm rolleri döndürür:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"user",
"scopeType:"CUSTOMER",
}
Tüm dolaylı rol atamalarını listeleme
Bir kullanıcının ait olduğu gruplar nedeniyle dolaylı olarak atananlar da dahil olmak üzere tüm rol atamalarının sayfalandırılmış bir listesini almak için roleAssignments.list() yöntemini kullanın.
API, sayfa jetonuyla boş sonuçlar döndürebilir. Sayfa jetonu döndürülmeyene kadar sayfalara ayırmaya devam etmeniz gerekir.
Kendi alanınızda rol atamaları alan bir yöneticiyseniz müşteri kimliği olarak
my_customerdeğerini kullanın.Müşterilerinizden birine rol atamaları yapan bir bayiyseniz Kullanıcı alma işlemi tarafından döndürülen müşteri kimliğini kullanın.
USER_KEYkısmını, API isteğinde kullanıcıyı tanımlayan bir değerle değiştirin. Daha fazla bilgi içinusers.getkonusuna bakın.
İstek
GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true
Yanıt
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte alanda atanan tüm rolleri ve assigneeType değerinin user veya group olup olmadığını döndürür:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId:"3894208461013211",
"assignedTo:"100662996240850794412",
"assigneeType:"group",
"scopeType:"CUSTOMER",
}
Rol oluşturma
Yeni bir rol oluşturmak için aşağıdaki POST isteğini kullanın ve İstekleri yetkilendirme bölümünde açıklanan yetkilendirmeyi ekleyin.
Bu rolle verilmesi gereken her ayrıcalık için bir privilegeName ve serviceId ekleyin. İstek ve yanıt özellikleri için API Referansı'na bakın.
İstek
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"
}
]
}Yanıt
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte yeni role ait özellikleri döndürür:
{
"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"
}
]
}
Rol ataması oluşturma
Rol atamak için aşağıdaki POST yöntemini kullanın ve İstekleri yetkilendirme bölümünde açıklanan yetkilendirmeyi ekleyin.
Rolü bir kullanıcıya atamak için kullanıcının
user_iddeğerini içeren bir JSON gövdesi ekleyin. Bu değeriusers.get(),roleId(Mevcut rolleri alma bölümünde açıklandığı gibi) vescope_typedeğerinden alabilirsiniz.Rolü bir hizmet hesabına atamak için hizmet hesabının
unique_id(Identity and Access Management (IAM)'de tanımlandığı gibi),roleId(Mevcut rolleri alma bölümünde açıklandığı gibi) vescope_typeile bir JSON gövdesi ekleyin.Rolü bir gruba atamak için
group_id,groups.get(),roleId(Mevcut rolleri alma bölümünde açıklandığı gibi) vescope_typeile birlikte bir JSON gövdesi ekleyin.
İstek
POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments { "roleId": "3894208461012995", "assignedTo": "100662996240850794412", "scopeType": "CUSTOMER" }
Yanıt
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte yeni rol atamasıyla ilgili özellikleri döndürür:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER"
}
Koşullu rol ataması oluşturma
Belirli koşulları karşılayan işlemleri gerçekleştirmek için roller verebilirsiniz. Şu anda yalnızca iki koşul desteklenmektedir:
- Yalnızca güvenlik grupları için geçerlidir.
- Güvenlik grupları için geçerli değildir.
condition ayarlandığında yalnızca erişilen kaynak koşulu karşıladığında geçerli olur. condition boşsa rol (roleId), koşulsuz olarak kapsamdaki (scopeType) aktöre (assignedTo) uygulanır.
Bir kullanıcıya rol atamak için aşağıdaki POST yöntemini kullanın ve İstekleri yetkilendirme bölümünde açıklanan yetkilendirmeyi ekleyin.
user_id, roleId (Mevcut rolleri alma bölümünde açıklandığı gibi) ve condition ile birlikte kullanıcının users.get() yönteminden alabileceğiniz bir JSON gövdesi ekleyin. İki koşul dizesi, aşağıda gösterildiği gibi kelimesi kelimesine kullanılmalıdır ve yalnızca Gruplar Düzenleyici ile Gruplar Okuyucu önceden oluşturulmuş yönetici rolleriyle çalışır.
Bu koşullar Cloud IAM koşul söz dizimine uygundur.
İstek
Yalnızca güvenlik grupları için geçerlidir.
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'" }
Güvenlik grupları için geçerli değildir.
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'" }
Yanıt
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Yanıt, durum koduyla birlikte yeni rol atamasıyla ilgili özellikleri döndürür:
{
"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'"
}