Zarządzaj rolami

Interfejs Directory API umożliwia zarządzanie dostępem do funkcji w domenie Google Workspace za pomocą kontroli dostępu opartej na rolach (RBAC). Możesz tworzyć niestandardowe role z uprawnieniami, aby ograniczyć dostęp administratora w bardziej precyzyjny sposób niż w przypadku wstępnie utworzonych ról dostępnych w Google Workspace. Role możesz przypisywać użytkownikom lub grupom zabezpieczeń. Z tego przewodnika dowiesz się, jak wykonywać niektóre podstawowe zadania związane z rolami.

Poniżej znajdziesz listę typowych terminów używanych przez interfejs Directory API w odniesieniu do RBAC w Google Workspace:

Uprawnienie
Uprawnienie niezbędne do wykonania zadania lub operacji w domenie Google Workspace. Jest on reprezentowany przez zasób Privilege. Z tym zasobem nie są powiązane żadne dane trwałe.
Role
Zbiór uprawnień, które umożliwiają podmiotom z tą rolą wykonywanie określonych zadań lub operacji. Reprezentowany przez zasób Role.
Przypisanie roli
Zapis dotyczący konkretnej roli przypisanej użytkownikowi lub grupie. Reprezentowane przez zasób RoleAssignment
.
Grupa zabezpieczeń
Typ grupy Cloud Identity używany do kontrolowania dostępu do zasobów organizacji. Grupy zabezpieczeń mogą zawierać zarówno poszczególnych użytkowników, jak i grupy.

Limity ról i przypisywania ról

Możesz utworzyć tylko ograniczoną liczbę ról niestandardowych lub przypisań ról, więc jeśli zbliżasz się do limitu, skonsoliduj lub usuń je, aby nie przekroczyć limitu. Role i przypisania ról mają te limity:

  • Możesz utworzyć do 750 ról niestandardowych dla całej organizacji.
  • Możesz utworzyć maksymalnie 1000 przydziałów ról na jednostkę organizacyjną, przy czym organizacja główna jest traktowana jako jednostka. Możesz na przykład przypisać 600 ról w organizacji głównej i 700 ról w innej jednostce organizacyjnej, którą zdefiniujesz, np. w dziale firmy. Wszystkie gotowe role administratora Google Workspace mają domyślnie zakres obejmujący całą organizację. Dowiedz się więcej o limitach uprawnień, które można przypisać na poziomie jednostki organizacyjnej.

W przypadku grup obowiązują te limity dotyczące ról i przypisywania ról:

  • Możesz przypisać dowolną rolę oprócz roli superadministratora.
  • Możesz utworzyć maksymalnie 250 przypisań ról do grup (sumując przypisania na poziomie całej jednostki organizacyjnej i w poszczególnych jednostkach organizacyjnych).
  • Grupa musi być grupą zabezpieczeń w Twojej organizacji.
  • Zalecamy ograniczenie członkostwa w grupach do użytkowników w Twojej organizacji. Możesz dodawać użytkowników spoza organizacji, ale mogą oni nie dostać uprawnień. Więcej informacji znajdziesz w artykule Ograniczanie członkostwa w grupie. ### Przypisywanie ról do grup

Jeśli chcesz przypisać więcej niż 1000 ról w jednostce organizacyjnej, możesz dodać do grupy zabezpieczeń wielu użytkowników i przypisać rolę całej tej grupie. Przypisania ról w grupie mają pewne dodatkowe ograniczenia. Szczegółowe informacje znajdziesz w centrum pomocy dla administratorów.

Mapowanie ról na uprawnienia w konsoli administracyjnej Google

Aby przypisać role użytkownikom, którzy uzyskują dostęp do swoich uprawnień za pomocą konsoli administracyjnej, może być konieczne przyznanie im dodatkowych uprawnień. Na przykład, aby przyznać użytkownikowi możliwość tworzenia innych użytkowników w konsoli administracyjnej, wymagane są nie tylko uprawnienia USERS_CREATE, ale też uprawnienia USERS_UPDATE i ORGANIZATION_UNITS_RETRIEVE. W tabeli poniżej znajdziesz funkcje konsoli administracyjnej i odpowiadające im uprawnienia wymagane do zarządzania użytkownikami i jednostkami organizacyjnymi.

Funkcje konsoli administracyjnej Wymagane uprawnienia
Jednostki organizacyjne – odczyt ORGANIZATION_UNITS_RETRIEVE
Jednostki organizacyjne – tworzenie ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE
Jednostki organizacyjne – aktualizacja ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE
Jednostki organizacyjne – usuwanie ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE
Jednostki organizacyjne ORGANIZATION_UNITS_ALL
Użytkownicy – odczyt USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – tworzenie USERS_CREATE + USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – aktualizacja USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – przenoszenie użytkowników USERS_MOVE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – zmiana nazw użytkowników USERS_ALIAS + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – resetowanie hasła USERS_RESET_PASSWORD + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – wymuszanie zmiany hasła USERS_FORCE_PASSWORD_CHANGE + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – dodawanie i usuwanie aliasów USERS_ADD_NICKNAME + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
Użytkownicy – zawieszanie kont użytkowników USERS_SUSPEND + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
GRUPY GROUPS_ALL
Bezpieczeństwo – zarządzanie zabezpieczeniami użytkowników USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE

Przykłady zastosowań

Zanim zaczniesz

Zanim uruchomisz przykłady z tego przewodnika, skonfiguruj uwierzytelnianie i autoryzację.

  1. Skonfiguruj ekran zgody OAuth.

  2. Utwórz dane logowania.

Pobieranie listy uprawnień domeny

Aby uzyskać podzieloną na strony listę obsługiwanych uprawnień w domenie, użyj metody privileges.list().

  • Jeśli jesteś administratorem, który uzyskuje uprawnienia w swojej domenie, jako identyfikator klienta użyj my_customer.

  • Jeśli jesteś sprzedawcą, który uzyskuje uprawnienia dla jednego z klientów, użyj identyfikatora klienta zwróconego przez operację Pobierz użytkownika.

Żądanie

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges

Odpowiedź

Prawidłowa odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera też uprawnienia obsługiwane w domenie:

{
  "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
        }
      ]
    },
    ...
  ]
}

Pobieranie dotychczasowych ról

Aby uzyskać listę istniejących ról, użyj poniższego żądania GET i dołącz autoryzację opisaną w sekcji Autoryzowanie żądań.

  • Jeśli jesteś administratorem, który uzyskuje role we własnej domenie, użyj identyfikatora klienta my_customer.

  • Jeśli jesteś sprzedawcą, który uzyskuje role dla klienta, użyj identyfikatora klienta otrzymanego za pomocą operacji Pobierz użytkownika.

Żądanie

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

Odpowiedź

Pomyślna odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera też role, które istnieją w domenie:

{
  "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
    },
    ...
  ]
}

Wyświetlanie listy wszystkich przypisań ról

Aby uzyskać podzieloną na strony listę wszystkich bezpośrednich przypisań ról, użyj metody roleAssignments.list(). Interfejs API może zwracać puste wyniki z tokenem strony, gdy ustawiony jest parametr userKey. Kontynuuj podział na strony, dopóki nie zostanie zwrócony żaden token strony.

  • Jeśli jesteś administratorem, który pobiera przypisania ról we własnej domenie, jako identyfikator klienta użyj wartości my_customer.

  • Jeśli jesteś sprzedawcą, który uzyskuje przypisania ról dla jednego z klientów, użyj identyfikatora klienta zwróconego przez operację Pobierz użytkownika.

Żądanie

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

Odpowiedź

Pomyślna odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera wszystkie role przypisane w domenie:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"user",
  "scopeType:"CUSTOMER",
}

Wyświetlanie listy wszystkich pośrednich przypisań ról

Aby uzyskać podzieloną na strony listę wszystkich przypisań ról, w tym tych przypisanych użytkownikowi pośrednio ze względu na grupy, do których należy, użyj metody roleAssignments.list().

Interfejs API może zwrócić puste wyniki z tokenem strony. Podział na strony należy kontynuować, dopóki nie zostanie zwrócony token strony.

  • Jeśli jesteś administratorem, który pobiera przypisania ról we własnej domenie, jako identyfikator klienta użyj wartości my_customer.

  • Jeśli jesteś sprzedawcą, który uzyskuje przypisania ról dla jednego z klientów, użyj identyfikatora klienta zwróconego przez operację Pobierz użytkownika.

  • Zastąp USER_KEY wartością, która identyfikuje użytkownika w żądaniu interfejsu API. Więcej informacji znajdziesz w sekcji users.get.

Żądanie

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true

Odpowiedź

Pomyślna odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera wszystkie role przypisane w domenie oraz informację, czy assigneeType jest user czy group:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"group",
  "scopeType:"CUSTOMER",
}

Utwórz rolę

Aby utworzyć nową rolę, użyj tego żądania POST i dołącz autoryzację opisaną w sekcji Autoryzowanie żądań. Dodaj privilegeNameserviceId do każdego uprawnienia, które powinno być przyznane w ramach tej roli. Informacje o właściwościach żądań i odpowiedzi znajdziesz w dokumentacji API.

Żądanie

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"
    }
  ]
}

Odpowiedź

Pomyślna odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera też właściwości nowej roli:

{
  "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"
    }
  ]
}

Tworzenie przypisania roli

Aby przypisać rolę, użyj poniższej metody POST i dołącz autoryzację opisaną w sekcji Autoryzowanie żądań.

Żądanie

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

Odpowiedź

Pomyślna odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera też właściwości nowego przypisania roli:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

Tworzenie przypisania roli z warunkami

Możesz przyznawać role, które pozwalają wykonywać działania spełniające określone warunki. Obecnie obsługiwane są tylko 2 warunki:

  • Dotyczy tylko grup zabezpieczeń
  • Nie dotyczy grup zabezpieczeń

Gdy zasada condition jest ustawiona, będzie obowiązywać tylko wtedy, gdy zasób, do którego uzyskuje się dostęp, spełnia warunek. Jeśli pole condition jest puste, rola (roleId) jest bezwarunkowo przypisywana do podmiotu (assignedTo) w zakresie (scopeType).

Aby przypisać rolę użytkownikowi, użyj tej metody POST i dołącz autoryzację opisaną w sekcji Autoryzowanie żądań.

Dodaj treść JSON z user_id użytkownika, którą możesz uzyskać z users.get(), roleId zgodnie z opisem w artykule Pobieranie istniejących ról i condition. Te 2 ciągi warunków muszą być używane dosłownie, jak pokazano poniżej. Działają one tylko w przypadku gotowych ról administratora Edytujący grupy i Czytający grupy. Warunki te są zgodne ze składnią warunków Cloud IAM.

Żądanie

Dotyczy tylko grup zabezpieczeń
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'"
}
Nie dotyczy grup zabezpieczeń
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'"
}

Odpowiedź

Pomyślna odpowiedź zwraca kod stanu HTTP 200. Oprócz kodu stanu odpowiedź zawiera też właściwości nowego przypisania roli:

{
  "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'"
}