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 分の遅延が発生する可能性があります。さらに、API はグループ メンバーシップのサイクルについてエラーを返します。たとえば、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 分析

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

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

一時的なクラスアクセス

serviceId019c6y1840fzfkt に設定し、クラスに一時的にアクセスできるカスタムロールを作成するには、ADMIN_OVERSIGHT_MANAGE_CLASSES 権限が必要です。

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

関連情報

詳細については、次のリンクをご覧ください。