역할 관리

Directory API를 사용하면 역할 기반 액세스 제어 (RBAC) Google Workspace 도메인의 기능에 대한 액세스 권한을 관리할 수 있습니다. 다음을 만들 수 있습니다. 권한이 있는 커스텀 역할을 사용하여 보다 구체적으로 관리 액세스를 제한할 수 있습니다. Google Workspace에서 제공하는 기본 제공 역할에 관해 알아보겠습니다. 역할 할당 가능 보안 그룹에 액세스할 수 있습니다. 이 가이드에서는 몇 가지 작업을 수행하는 방법을 설명합니다. 기본적인 역할 관련 작업을 할 수 있습니다.

다음은 디렉터리 API가 Google Workspace 내 RBAC와 관련하여

권한
프로젝트에서 작업이나 작업을 수행하는 데 필요한 Google Workspace 도메인입니다. 표시 대상: Privilege 리소스 거기 이 리소스와 연결된 영구 데이터가 없습니다.
직책
해당 역할을 가진 항목에 특정 작업이나 작업을 수행하는 능력입니다. 표시 대상: Role 리소스
역할 할당
사용자 또는 그룹에 부여된 특정 역할의 기록입니다. 대표 기관 RoleAssignment 리소스를 제공합니다.
보안 그룹
유형 Cloud ID 그룹 조직 액세스 권한을 제어하는 데 사용되는 리소스를 배포합니다 보안 그룹에는 개별 사용자와 그룹이 모두 포함될 수 있습니다.

역할 및 역할 할당 한도

제한된 수의 맞춤 역할 또는 역할 할당만 만들 수 있으므로 한도에 가까워지고 있습니다. 목표를 달성하지 않도록 통합하거나 있습니다. 역할 및 역할 할당에는 다음과 같은 한도가 있습니다.

  • 전체 조직에 최대 750개의 맞춤 역할을 만들 수 있습니다.
  • 사용자당 최대 1,000개의 역할 할당을 만들 수 있습니다. 조직 단위 (OU)를 설정합니다. 예를 들어 루트 조직에 600개의 역할과 700개의 역할을 할당할 수 있습니다. 사용자가 정의한 다른 OU(예: 회사의 부서) 내에서 액세스할 수 있습니다 기본 제공되는 모든 Google Workspace 관리자 역할은 기본적으로 조직 전체 범위에 해당합니다 자세히 알아보기: 액세스할 수 있는 권한을 OU 수준에서 할당할 수 있습니다.

역할 및 역할 할당에 적용되는 그룹 한도는 다음과 같습니다.

  • 최고 관리자를 제외한 모든 역할을 할당할 수 있습니다.
  • 전체 OU에서 그룹에 최대 250개의 역할을 할당할 수 있습니다. 각 OU 내에서
  • 그룹은 조직의 보안 그룹이어야 합니다.
  • 그룹 멤버십을 조직의 사용자로 제한하는 것이 좋습니다. 나 조직 외부의 사용자를 추가할 수는 있지만 역할 권한을 얻지 못할 수 있습니다 자세한 내용은 그룹 멤버십 제한 ### 그룹에 역할 할당

한 OU에서 1, 000개 이상의 역할을 할당해야 하는 경우 보안 그룹에 구성원을 추가하고 역할을 그룹에 할당합니다. 그룹 역할 추가 제한사항이 있습니다. 자세한 내용은 관리자 고객센터를 참고하세요.

Google 관리 콘솔 역할-권한 매핑

다음을 통해 권한에 액세스하는 사용자에게 역할을 할당하려면 관리 콘솔에서 일부 추가 권한이 필요할 수 있음 합니다. 예를 들어 다른 사용자를 생성할 수 있는 권한을 사용자에게 부여할 수 있습니다. USERS_CREATE 권한뿐만 아니라 관리 콘솔에도 적용됩니다. 필수 항목이지만 USERS_UPDATEORGANIZATION_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 GROUPS_ALL
보안 - 사용자 보안 관리 USER_SECURITY_ALL + USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE

사용 사례

시작하기 전에

인증 및 승인 단계별 안내입니다.

도메인 권한 목록 가져오기

도메인에서 지원되는 권한의 페이지로 나눈 목록을 가져오려면 다음을 사용하세요. privileges.list() 드림 메서드를 사용하여 축소하도록 요청합니다.

  • 내 도메인에서 권한을 가진 관리자인 경우 다음을 사용하세요. my_customer를 고객 ID로 사용합니다.

  • 고객 중 한 명으로부터 권한을 받는 리셀러인 경우 user 연산으로 해석됩니다.

요청

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 요청을 사용하고 인증 요청을 참조하세요.

  • 내 도메인에서 역할을 부여받는 관리자인 경우 다음을 사용하세요. my_customer를 고객 ID로 사용합니다.

  • 고객에 대한 역할을 받는 리셀러인 경우 user 연산으로 해석됩니다.

요청

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() 드림 메서드를 사용하여 축소하도록 요청합니다. userKey가 매개변수가 설정됩니다. 페이지 토큰이 없어질 때까지 페이지로 나누기를 계속해야 합니다. 반환합니다.

  • 내 도메인에서 역할을 할당받는 관리자인 경우 my_customer를 고객 ID로 사용합니다.

  • 고객 중 한 명에 대한 역할 할당을 받는 리셀러인 경우 user 연산으로 해석됩니다.

요청

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를 고객 ID로 사용합니다.

  • 고객 중 한 명에 대한 역할 할당을 받는 리셀러인 경우 user 연산으로 해석됩니다.

  • USER_KEY를 사용자를 식별하는 데 사용됩니다. 자세한 내용은 users.get를 참고하세요.

요청

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

응답

성공 응답은 HTTP 200 상태를 반환합니다. 코드가 필요합니다. 또한 응답에서 도메인에 할당된 모든 역할과 assigneeTypeuser 또는 group입니다.

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

역할 만들기

새 역할을 만들려면 다음 POST 요청을 사용하고 인증 요청을 참조하세요. privilegeNameserviceId를 추가해야 하는 각 권한의 할 수 있습니다. 요청 및 응답 속성은 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 메서드를 사용하고 승인을 포함합니다. 설명 요청을 승인합니다.

요청

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)은 다음과 같습니다. 범위 (scopeType)에서 작업 수행자 (assignedTo)에 무조건 적용됨

사용자에게 역할을 할당하려면 다음 POST 메서드를 사용하고 승인에 설명되어 있습니다. 승인 요청을 참조하세요.

사용자의 user_id가 포함된 JSON 본문을 추가합니다. 이 본문은 다음과 같습니다. users.get(), roleId 기존 역할 가져오기condition에 설명된 대로 권한이 있는지 확인하세요. 이 두 개의 조건 문자열은 아래와 같이 그대로 사용해야 합니다. 그룹스 편집기 및 그룹 리더에서만 사용 가능 기본 제공되는 관리자 역할을 사용할 수 있습니다. 이러한 조건은 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'"
}