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

リソース

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