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ş rollerden daha ayrıntılı bir şekilde 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, Directory API'nin Google Workspace'teki RBAC ile ilgili olarak kullandığı yaygın terimlerin listesi verilmiştir:
- Ayrıcalık
- Google Workspace alanında bir görevi veya işlemi gerçekleştirmek için gerekli izin.
Privilege
kaynağıyla temsil edilir. Bu kaynakla ilişkili kalıcı veri yok. - Rol
- Belirli bir role sahip varlıklara belirli görevleri veya işlemleri gerçekleştirme olanağı tanıyan ayrıcalıklar koleksiyonu.
Role
kaynağıyla temsil edilir. - Rol ataması
- Kullanıcıya veya gruba verilen belirli bir rolün kaydı.
RoleAssignment
kaynağıyla temsil edilir. - Güvenlik grubu
- Kuruluş kaynaklarına erişimi kontrol etmek için kullanılan bir Cloud Identity grubu türüdü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. Sınıra yaklaşıyorsanız sınırın altında kalmak için bunları birleştirin veya kaldırın. Roller ve rol atamalarında aşağıdaki sınırlamalar geçerlidir:
- 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 (OU) için 1.000'e varan rol atama işlemi 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. Google Workspace'in önceden oluşturulmuş tüm yönetici rolleri varsayılan olarak kuruluş genelinde kapsama sahiptir. OU düzeyinde atanabilen ayrıcalıklarla ilgili sınırlar hakkında daha fazla bilgi edinin.
Gruplar için roller ve rol atamayla ilgili sınırlamalar aşağıda belirtilmiştir:
- Süper yönetici rolü dışında herhangi bir rolü atayabilirsiniz.
- Genel kuruluş biriminde ve her kuruluş biriminde toplam en fazla 250 rol ataması yapabilirsiniz.
- Grup, kuruluşunuzdaki 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ında bazı ek sınırlamalar vardır. Ayrıntılı bilgi için Yönetici Yardım Merkezi'ne bakın.
Google Yönetici Konsolu'nda rol ve 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 verilmesi gerekebilir. Örneğin, bir kullanıcıya Yönetici Konsolu üzerinden başka kullanıcılar oluşturma yetkisi vermek için yalnızca USERS_CREATE
ayrıcalığı değil, USERS_UPDATE
ve ORGANIZATION_UNITS_RETRIEVE
ayrıcalıkları da gereklidir. Aşağıdaki tabloda, Yönetici Konsolu işlevleri ile kullanıcıları ve kuruluş birimlerini yönetmek için gereken ayrıcalık izinleri eşleştirilmiştir.
Yönetici Konsolu işlevleri | Gerekli ayrıcalıklar |
---|---|
Kuruluş Birimleri - Okuma | ORGANIZATION_UNITS_RETRIEVE |
Kuruluş Birimleri - Oluştur | 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ştur | 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ırla | 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
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 sayfalandırılmış bir listesini almak için privileges.list()
yöntemini kullanın.
Kendi alanınızda ayrıcalık elde eden 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ş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ıtta HTTP 200 durum kodu döndürülü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 rol alan bir yöneticiyseniz müşteri kimliği olarak
my_customer
değerini kullanın.Bir müşteri için rol alan bir bayiyseniz Kullanıcı alma işlemini kullanarak 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ıtta HTTP 200
durum kodu döndürülür. Yanıt, durum koduyla birlikte alandaki 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 jetonu içeren boş sonuçlar döndürebilir. Sayfa jetonu döndürülene kadar sayfalandırmaya devam etmeniz gerekir.
Kendi alanınızda rol atamaları 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ıtta HTTP 200
durum kodu döndürülü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 dolaylı olarak bir kullanıcıya atanan roller de 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 jetonu içeren boş sonuçlar döndürebilir. Sayfa jetonu döndürülene kadar sayfalandırmaya devam etmeniz gerekir.
Kendi alanınızda rol atamaları 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
konusuna 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ıtta HTTP 200
durum kodu döndürülü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 birlikte 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ıtta HTTP 200
durum kodu döndürülür. Yanıt, durum koduyla birlikte yeni rolün özelliklerini 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 atama 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.
Bir kullanıcıya rol atamak için kullanıcının
user_id
değerini içeren bir JSON gövdesi ekleyin.user_id
değeriniusers.get()
,roleId
(Mevcut rolleri alma bölümünde açıklandığı gibi) vescope_type
'ten alabilirsiniz.Bir hizmet hesabına rol atamak için hizmet hesabının
unique_id
değerini (Identity and Access Management (IAM)'da tanımlandığı şekilde),roleId
değerini (Mevcut rolleri alma bölümünde açıklandığı şekilde) vescope_type
değerini içeren bir JSON gövdesi ekleyin.Bir gruba rol atamak için grubun
group_id
değerini içeren bir JSON gövdesi ekleyin. Bu değerigroups.get()
,roleId
(Mevcut rolleri alma bölümünde açıklandığı şekilde) vescope_type
'ten 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ıtta HTTP 200
durum kodu döndürülür. Yanıt, durum koduyla birlikte yeni rol atamasının özelliklerini döndürür:
{
"kind": "admin\#directory\#roleAssignment",
"etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
"roleAssignmentId": "3894208461013211",
"roleId": "3894208461012995",
"assignedTo": "100662996240850794412",
"scopeType": "CUSTOMER"
}
Koşulları olan bir 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
), kapsamda (scopeType
) aktöre (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 ekleyin.
Kullanıcının users.get() işlevinden alabileceğiniz user_id
, Mevcut rolleri alma bölümünde açıklandığı gibi roleId
ve condition
içeren bir JSON gövdesi ekleyin. İki koşul dizesinin aşağıda gösterildiği gibi kelimesi kelimesine kullanılması gerekir ve yalnızca Gruplar Düzenleyici ve Gruplar Okuyucu önceden oluşturulmuş yönetici rolleriyle çalışır.
Bu koşullar Cloud IAM koşul söz dizimine uyar.
İ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ıtta HTTP 200
durum kodu döndürülür. Yanıt, durum koduyla birlikte yeni rol atamasının özelliklerini 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'"
}