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. Yönetici erişimini, Google Workspace ile sağlanan önceden oluşturulmuş rollere kıyasla daha ayrıntılı bir şekilde sınırlandırmak için ayrıcalıklara sahip özel roller oluşturabilirsiniz. Kullanıcılara veya güvenlik gruplarına rol atayabilirsiniz. Bu kılavuzda, rolle ilgili bazı temel görevlerin nasıl yerine getirileceği açıklanmaktadır.
Aşağıda, Google Workspace'te RBAC ile ilgili olarak Directory API tarafından yaygın olarak kullanılan terimlerin bir listesi bulunmaktadır:
- Ayrıcalık
- Bir Google Workspace alanında bir görevi veya işlemi gerçekleştirmek için gereken izin.
Privilege
kaynağı tarafından temsil edilir. Bu kaynakla ilişkili kalıcı veri yok. - Rol
- Bu role sahip varlıklara belirli görevleri veya işlemleri gerçekleştirme olanağı veren ayrıcalıklar koleksiyonu.
Role
kaynağı tarafından temsil edilir. - Rol atama
- Kullanıcı veya gruba verilen belirli bir rolün kaydı.
RoleAssignment
kaynağı tarafından temsil edilir.
- Güvenlik grubu
- Kuruluş kaynaklarına erişimi kontrol etmek için kullanılan bir tür Cloud Identity grubu. Güvenlik gruplarında hem bağımsız kullanıcılar hem de gruplar bulunabilir.
Rol ve rol ataması sınırları
Yalnızca sınırlı sayıda özel rol veya rol ataması oluşturabilirsiniz. Bu nedenle, sınıra yaklaştıysanız sınırın altında kalmak için bunları birleştirin veya kaldırın. Roller ve rol atamaları için aşağıdaki sınırlar geçerlidir:
- Kuruluşunuzun tamamı için en fazla 750 özel rol oluşturabilirsiniz.
- Kök kuruluşun bir birim olarak kabul edildiği kuruluş birimi başına en fazla 500 rol ataması oluşturabilirsiniz. Örneğin, kök kuruluşta 350 rol ve tanımladığınız başka bir kuruluş biriminde (ör. bir şirketin departmanı) 400 rol atayabilirsiniz. Google Workspace önceden oluşturulmuş yönetici rollerinin tamamı varsayılan olarak kuruluş genelinde geçerli olur. Kuruluş birimi düzeyinde atanabilecek ayrıcalıklarla ilgili sınırlar hakkında daha fazla bilgi edinin.
Roller ve rol ataması gruplar için aşağıdaki sınırlara sahiptir:
- Süper Yönetici dışında herhangi bir rolü atayabilirsiniz.
- Genel kuruluş birimindeki ve her kuruluş birimi içindeki gruplara toplamda en fazla 250 rol atamanız olabilir.
- Grup, kuruluşunuzda bulunan 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 ataması
Bir kuruluş biriminde 500'den fazla rol atamanız gerekiyorsa güvenlik grubuna birden fazla üye ekleyebilir ve gruba bir rol atayabilirsiniz. Grup rolü atamalarında bazı ek sınırlamalar vardır. Daha fazla bilgi için Yönetici yardım merkezine bakın.
Google Yönetici Konsolu'nda rol-ayrıcalık eşlemesi
Ayrıcalıklara Yönetici konsolu üzerinden erişen kullanıcılara roller 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 olanağı vermek için yalnızca USERS_CREATE
ayrıcalığının yanı sıra USERS_UPDATE
ve ORGANIZATION_UNITS_RETRIEVE
ayrıcalıkları da gereklidir. Aşağıdaki tabloda, Yönetici Konsolu işlevleri, kullanıcıları ve kuruluş birimlerini yönetmek için gereken ayrıcalık izinleri ile eşleştirilmektedir.
Yönetici konsolu işlevleri | Gereken 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 - Sil | 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ıları 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ırla | USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE |
Kullanıcılar - Şifre Değişikliğini Zorunlu Kıl | 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
Google Workspace için kimlik doğrulama ve yetkilendirme adımlarını tamamlayın.
Alan ayrıcalıklarının listesini alma
Alanınızda desteklenen ayrıcalıkların sayfalara ayrılmış bir listesini almak için privileges.list()
yöntemini kullanın.
Kendi alanınızda ayrıcalıklara sahip bir yöneticiyseniz müşteri kimliği olarak
my_customer
değerini kullanın.Müşterilerinizden biri için ayrıcalıklar elde eden bir bayiyseniz Kullanıcı alma işleminin döndürdüğü 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, bir 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 al
Mevcut rollerin listesini almak için aşağıdaki GET
isteğini kullanın ve İstekleri yetkilendirme bölümünde açıklanan yetkilendirmeyi dahil edin.
Kendi alanınızda rolleri alan bir yöneticiyseniz müşteri kimliği olarak
my_customer
değerini kullanın.Bir müşteri için roller alan bayiyseniz Kullanıcı alma işleminde 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, bir 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. userKey
parametresi ayarlandığında API, sayfa jetonuyla boş sonuçlar döndürebilir. Hiçbir sayfa jetonu döndürülene kadar sayfaları sayfalara ayırmaya devam etmeniz gerekir.
Kendi alanınızda rol atamalarını alan bir yöneticiyseniz müşteri kimliği olarak
my_customer
değerini kullanın.Müşterilerinizden biri için rol atamaları alan bir bayiyseniz Kullanıcı alma işleminin döndürdüğü 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, bir HTTP 200
durum kodu döndürür. Yanıt, durum koduyla birlikte alanda atanan 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
Ait olduğu gruplar nedeniyle kullanıcılara 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. Hiçbir sayfa jetonu döndürülene kadar sayfalara ayırmaya devam etmeniz gerekir.
Kendi alanınızda rol atamalarını alan bir yöneticiyseniz müşteri kimliği olarak
my_customer
değerini kullanın.Müşterilerinizden biri için rol atamaları alan bir bayiyseniz Kullanıcı alma işleminin döndürdüğü müşteri kimliğini kullanın.
USER_KEY
değerini, API isteğinde kullanıcıyı tanımlayan bir değerle değiştirin. Daha fazla bilgi içinusers.get
adresini inceleyin.
İ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, bir HTTP 200
durum kodu döndürür. Yanıt, durum koduyla birlikte alanda atanan tüm rolleri ve assigneeType
değerinin user
mi yoksa group
mi olduğunu 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 dahil edin.
Bu role 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, bir HTTP 200
durum kodu döndürür. Yanıt, durum koduyla birlikte yeni rol için ö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 dahil edin.
Bir kullanıcıya rolü atamak için kullanıcının
user_id
öğesiyle birlikte bir JSON gövdesi ekleyin. Bu gövdeyiusers.get()
,roleId
(Mevcut rolleri alma bölümünde açıklandığı şekilde) vescope_type
öğesinden alabilirsiniz.Rolü bir hizmet hesabına atamak için hizmet hesabının
unique_id
[Identity and Access Management (IAM) bölümünde tanımlandığı şekilde),roleId
(Mevcut rolleri alma bölümünde açıklandığı gibi) vescope_type
ile bir JSON gövdesi ekleyin.Rolü bir gruba atamak için grubun
group_id
öğesiyle birlikte bir JSON gövdesi ekleyin. Bu gövdeyigroups.get()
,roleId
(Mevcut rolleri alma bölümünde açıklandığı şekilde) vescope_type
öğesinden alabilirsiniz.
İ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, bir HTTP 200
durum kodu döndürür. Yanıt, durum koduyla birlikte yeni rol ataması için ö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 atayabilirsiniz. Ş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 geçerli olması için, erişilmekte olan kaynak, koşulu karşıladığında geçerli olur. condition
boşsa rol (roleId
), kapsamdaki (scopeType
) işlemi gerçekleştirene (assignedTo
) koşulsuz olarak 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 dahil edin.
Kullanıcının user_id
değerini içeren bir JSON gövdesi ekleyin. Bu gövdeyi users.get() yönteminden, Mevcut rolleri alma bölümlerinde açıklandığı gibi roleId
ve condition
öğesinden alabilirsiniz. İki koşul dizesi aşağıda gösterildiği gibi kelimesi kelimesine kullanılmalıdır. Bu dizeler yalnızca önceden oluşturulmuş yönetici rolleri olan Grup Düzenleyici ve Gruplar Okuyucusu ile çalışır.
Bu koşullar, Cloud IAM koşulu söz dizimini uygular.
İ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, bir HTTP 200
durum kodu döndürür. Yanıt, durum koduyla birlikte yeni rol ataması için ö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'"
}