Classroom の機能に使うカスタムの管理者ロールを指定する

管理者は管理コンソールでカスタム管理者ロールを作成し、Education Plus ライセンスを持つ特定の個人またはグループに次の権限を付与できます。

このガイドでは、Google API を使用してドメインでこれらの機能を設定する方法について説明します。

カスタムロールの割り当てプロセスを自動化する

カスタムロールの割り当てプロセスを自動化するには:

  1. セキュリティ グループを作成して、これらの機能にアクセスできるユーザーを整理します。
  2. グループにメンバーを追加します。
  3. 適切な権限を選択して、カスタムの管理者ロールを作成します。
  4. 組織部門 ID を取得する。
  5. 新しく作成したグループにカスタム管理者ロールを適用します。

前提条件

  1. クイックスタート ガイドで、JavaScript、Python、Java などの言語で Google API を使用してアプリケーションを設定して実行する方法を確認する。
  2. Groups API の概要を確認する。
  3. このガイドで説明する Cloud Identity API を使用する前に、Cloud Identity を設定する必要があります。これらの API は、管理者権限を割り当てるグループの作成に使用されます。
  4. Groups API を設定する。

セキュリティ グループを作成する

groups.create メソッドを使用してセキュリティ グループを作成します。セキュリティ ラベルがリクエストの labels フィールドに含まれている場合、グループをセキュリティ グループとして設定できます。セキュリティ グループの作成の詳細と制限事項については、セキュリティ グループの作成ガイドをご覧ください。

POST https://cloudidentity.googleapis.com/v1/groups

必要に応じて、InitialGroupConfig クエリ パラメータを含めてグループ所有者を初期化できます。

POST https://cloudidentity.googleapis.com/v1/groups&initialGroupConfig={initialGroupConfig}

このリクエストを行うアカウントには、次のいずれかのスコープが必要です。

  • https://www.googleapis.com/auth/cloud-identity.groups
  • https://www.googleapis.com/auth/cloud-identity
  • https://www.googleapis.com/auth/cloud-platform

リクエスト本文

リクエストの本文には、作成するグループの詳細が含まれます。customerId は「C」で始まる必要があります(例: C046psxkn)。お客様 ID を確認する

{
   parent: "customers/<customer-id>",
   description: "This is the leadership group of school A.",
   displayName: "Leadership School A",
   groupKey: {
      id: "leadership_school_a@example.com"
   },
   labels: {
      "cloudidentity.googleapis.com/groups.security": "",
      "cloudidentity.googleapis.com/groups.discussion_forum": ""
   }
}

レスポンス

レスポンスには、Operation リソースの新しいインスタンスが含まれます。

{
   done: true,
   response: {
      @type: "type.googleapis.com/google.apps.cloudidentity.groups.v1.Group",
      name: "groups/<group-id>", // unique group ID
      groupKey: {
         id: "leadership_school_a@example.com" // group email address
      },
      parent: "customers/<customer-id>",
      displayName: "Leadership School A",
      description: "This is the leadership group of school A.",
      createTime: "<created time>",
      updateTime: "<updated time>",
      labels: {
         "cloudidentity.googleapis.com/groups.security": "",
         "cloudidentity.googleapis.com/groups.discussion_forum": ""
      }
   }
}

グループのメンバーの追加

グループを作成したら、次はメンバーを追加します。グループ メンバーには、ユーザーまたは別のセキュリティ グループを指定できます。グループを別のグループのメンバーとして追加した場合、メンバーシップが反映されるまでに最大 10 分かかることがあります。また、グループ メンバーシップが循環している場合にもエラーが返されます。たとえば、group1group2 のメンバーである場合、group2group1 のメンバーにすることはできません。

グループにメンバーを追加するには、次の POST リクエストを使用します。

Directory API members.insert:

POST https://admin.googleapis.com/admin/directory/v1/groups/{groupKey}/members

groupKey パス パラメータは、新しいメンバーのグループ メールアドレスまたはグループの一意の ID です。

POST リクエストを行うアカウントには、次のいずれかのスコープが必要です。

  • https://apps-apis.google.com/a/feeds/groups/
  • https://www.googleapis.com/auth/admin.directory.group
  • https://www.googleapis.com/auth/admin.directory.group.member

リクエスト本文

リクエストの本文には、作成する member の詳細が含まれます。

{
   email: "person_one@example.com",
   role: "MEMBER", // can be `MEMBER`, `OWNER`, `MANAGER`
}

レスポンス

レスポンスには、メンバーの新しいインスタンスが含まれます。

{
   kind: "admin#directory#member",
   etag: "<etag-value>", // role's unique ETag
   id: "4567", // group member's unique ID
   email: "person_one@example.com",
   role: "MEMBER",
   type: "GROUP",
   status: "ACTIVE"
}

このリクエストは、メンバーとして追加するユーザーごとに行う必要があります。これらのリクエストをバッチにすることで、クライアントが確立する必要がある HTTP 接続の数を減らすことができます。

特権付きのカスタムの管理者ロールを作成する

Directory API を使用すると、ロールベースのアクセス制御(RBAC)を使用して、Google Workspace ドメイン内の機能へのアクセスを管理できます。Google Workspace に用意されている組み込みロールよりも具体的に管理者アクセスを制限する権限を持つカスタムロールを作成できます。ロールはユーザーまたはセキュリティ グループに割り当てることができます。ロールの作成の制限事項の詳細については、カスタムロールとロールの割り当ての制限事項をご覧ください。

新しいロールを作成するには、次の POST リクエストを使用します。

Directory API roles.insert:

POST https://admin.googleapis.com/admin/directory/v1/customer/{customer}/roles

customerId は、このガイドのステップ 1 で使用したものと同じです。

POST リクエストを行うアカウントには、次のスコープが必要です。

  • https://www.googleapis.com/auth/admin.directory.rolemanagement

リクエスト本文

リクエストの本文には、作成する role の詳細が含まれます。このロールに付与する権限ごとに privilegeNameserviceId を追加します。

Classroom アナリティクス

分析データにアクセスできるカスタムロールを作成するには、EDU_ANALYTICS_DATA_ACCESS 権限と、serviceId019c6y1840fzfkt に設定する必要があります。

{
   roleName: "Education Admin", // customize as needed
   roleDescription: "Access to view analytics data", // customize as needed
   rolePrivileges: [
      {
         privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
         serviceId: "019c6y1840fzfkt"
      }
   ]
}

クラスへの一時的なアクセス

クラスに一時的にアクセスできるカスタムロールを作成するには、ADMIN_OVERSIGHT_MANAGE_CLASSES 権限と、serviceId019c6y1840fzfkt に設定されている必要があります。

{
   roleName: "Education Admin", // customize as needed
   roleDescription: "Access to manage classes privilege", // customize as needed
   rolePrivileges: [
      {
         privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
         serviceId: "019c6y1840fzfkt"
      }
   ]
}

privileges.list メソッドを呼び出して、privilegeIdsserviceIds のリストを取得します。

レスポンス

レスポンスには、ロールの新しいインスタンスが含まれます。

Classroom アナリティクス

{
   kind: "admin#directory#role",
   etag: "<etag-value>",  // role's unique ETag
   roleId: "<role-id>",   // role's unique ID
   roleName: "Education Admin",
   roleDescription: "Access to view analytics data",
   rolePrivileges: [
      {
         privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
         serviceId: "019c6y1840fzfkt"
      }
   ],
   isSystemRole: false,
   isSuperAdminRole: false
}

クラスへの一時的なアクセス

{
   kind: "admin#directory#role",
   etag: "<etag-value>",  // role's unique ETag
   roleId: "<role-id>",   // role's unique ID
   roleName: "Education Admin",
   roleDescription: "Access to manage classes privilege",
   rolePrivileges: [
      {
         privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
         serviceId: "019c6y1840fzfkt"
      }
   ],
   isSystemRole: false,
   isSuperAdminRole: false
}

組織部門 ID を取得する

組織部門 ID を使用して、カスタム管理者ロールのアクセスを 1 つ以上の組織部門に制限できます。OrgUnit API を使用して orgUnitId を取得します。

Classroom アナリティクス

特定のユーザーまたはグループにカスタム管理者ロールを割り当てる場合は、生徒の組織部門と教師の組織部門を選択することをおすすめします。これにより、カスタム管理者権限を持つユーザーは、組織部門の生徒とクラスレベルのデータにアクセスできるようになります。生徒の組織部門が省略されている場合、指定されたユーザーは生徒データにアクセスできません。教師の組織部門が省略されている場合、指定されたユーザーはクラスレベルのデータにアクセスできません。

クラスへの一時的なアクセス

カスタム管理者ロールを持つユーザーに特定の組織部門のクラスへのアクセスを許可することで、クラスへの一時アクセス権限を制限できます。組織部門へのアクセスを制限する場合、カスタム管理者ロールが割り当てられたグループは、その組織部門に属する教師が主担任であるクラスにのみアクセスできます。

カスタムの管理者ロールを割り当てる

グループにカスタム管理者ロールを割り当てるには、次の POST リクエストを使用します。ロールの割り当て上限については、カスタムロールとロールの割り当ての制限事項のガイダンスをご覧ください。

Directory API roleAssignments.insert:

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

グループまたは個々のユーザーに割り当てる

グループに権限を割り当てる場合は、リクエスト本文の assignedTo フィールドに groupId を含めます。groupId は、セキュリティ グループを作成する手順で取得しました。個々のユーザーに権限を割り当てる場合は、リクエスト本文の assignedTo フィールドにユーザー ID を含めます。ユーザーの ID は、users.get を呼び出してユーザーのメールアドレスを userKey パラメータとして指定するか、users.list を呼び出して取得できます。

POST リクエストを行うアカウントには、次のスコープが必要です。

  • https://www.googleapis.com/auth/admin.directory.rolemanagement

リクエスト本文

リクエストの本文には、作成する RoleAssignment の詳細が含まれます。このグループに関連付ける組織部門ごとに 1 件のリクエストを行う必要があります。

{
   roleId: "<role-id>",        // role's unique ID obtained from Step 3
   assignedTo: "<id>",         // group ID or user ID
   scopeType: "ORG_UNIT",      // can be `ORG_UNIT` or `CUSTOMER`
   orgUnitId: "<org-unit-id>"  // organizational unit ID referenced in Step 4
}

レスポンス

レスポンスには、RoleAssignment の新しいインスタンスが含まれます。

{
   kind: "admin#directory#roleAssignment",
   etag: "<etag-value>",
   roleAssignmentId: "<role-assignment-id>",
   roleId: "<role-id>",
   assignedTo: "<group-id or user-id>",
   assigneeType: "GROUP",
   scopeType: "ORG_UNIT",
   orgUnitId: "<org-unit-id>"
}

リソース

詳細については、以下をご覧ください。