このページでは、Identity and Access Management(IAM)を使用してデバイスへのアクセスを制御する方法について説明します。アクセス権はプロジェクト レベルまたはレジストリレベルで付与できます。個々のデバイスレベルでアクセス制御を行うことはできません。通常、アクセス権は個人やユーザー グループ、あるいはサーバー側サービス アカウントに付与されます。(デバイスは公開鍵/秘密鍵の認証を使用します。詳細については、デバイスのセキュリティをご覧ください)。
たとえば、デバイス レジストリ IAM ポリシーに対する cloudiot.provisioner
のロールをユーザーに割り当てると、そのユーザーはデバイスを追加または削除できますが、レジストリ自体の変更または削除はできません。ロールはクラウド プロジェクトにも設定できます。このロールは、そのクラウド プロジェクトに属するすべてのレジストリに適用されます。
このセクションでは、Cloud IoT Core に関連する IAM 権限と、これらの権限を付与する IAM ロールについて説明します。IAM とその機能の詳細については、IAM のドキュメントをご覧ください。特に、IAM ポリシーの管理のセクションをご覧ください。
役割
ロールは、権限をまとめたものです。たとえば、roles/cloudiot.viewer
には cloudiot.registries.get
、cloudiot.registries.list
、cloudiot.devices.get
および cloudiot.devices.list
の権限が含まれています。ロールを割り当てられたユーザーまたはグループは、プロジェクト内のレジストリに対する操作を実行できるようになります。
次の表に、各ロールに関連付けられた権限を含む Cloud IoT Core の IAM のロールを示します。
ロール | 説明 | 権限 |
---|---|---|
roles/cloudiot.viewer |
すべての Cloud IoT リソースに対する読み取り専用権限 |
|
roles/cloudiot.deviceController |
デバイスの構成を更新するため権限(デバイスの作成や削除はできない) | 上記のすべてと
|
roles/cloudiot.provisioner |
レジストリに対してデバイスを作成および削除する権限(レジストリの変更はできない) | 上記のすべてと
|
roles/cloudiot.editor |
すべての Cloud IoT リソースに対する読み取り / 書き込み権限 | 上記のすべてと
|
roles/cloudiot.admin |
すべての Cloud IoT リソースと権限を完全に制御する権限。 | 上記のすべてと
|
追加のロール roles/cloudiot.serviceAgent
は、関連する Cloud Pub/Sub トピックに対するパブリッシャー権限を付与します。このロールは、プロジェクトで Google Cloud IoT Core API を有効にするときに作成されるサービス アカウントに自動的に割り当てられます。ほとんどの場合、このロールの設定や管理は必要ありません。Cloud Pub/Sub トピックに関連する権限エラーが発生した場合は、トラブルシューティングをご覧ください。
ロールの詳細については、ロールについてをご覧ください。
権限
権限を使用することで、Cloud IoT Core 内のレジストリまたはデバイスに対して、特定のアクションを実行できます。たとえば、cloudiot.registries.list
権限を持つユーザーは、プロジェクト内のレジストリを一覧表示できます。ユーザーには権限を直接付与するのではなく、役割を割り当てます。役割には、1 つ以上の権限が譲渡します。カスタムのロールを作成することもできます。
次の表は、Cloud IoT Core に関連付けられている IAM の権限を示しています。
デバイス レジストリの権限名 | 説明 |
---|---|
cloudiot.registries.create |
プロジェクトに新しいレジストリを作成します。 |
cloudiot.registries.delete |
レジストリの削除。 |
cloudiot.registries.get |
ACL を除くレジストリの詳細を読み取ります。 |
cloudiot.registries.getIAMPolicy |
レジストリ ACL を読み取ります。 |
cloudiot.registries.list |
プロジェクト内のレジストリを一覧表示します。 |
cloudiot.registries.setIAMPolicy |
レジストリ ACL を更新します。 |
cloudiot.registries.update |
レジストリの詳細を更新します(ACL を除く)。 |
cloudiot.devices.sendCommand |
コマンドを送信する(デバイスごとではなく、レジストリごと)。 |
デバイスの権限名 | 説明 |
---|---|
cloudiot.devices.create |
新しいデバイスをレジストリに追加します。 |
cloudiot.devices.delete |
デバイスを削除します。 |
cloudiot.devices.get |
デバイスの詳細を読み取ります(ACL を除く)。 |
cloudiot.devices.list |
レジストリ内のデバイスを一覧表示します。 |
cloudiot.devices.update |
デバイスの詳細を更新します(ACL を除く)。 |
cloudiot.devices.updateConfig |
デバイス構成を更新します。 |
cloudiot.devices.bindGateway |
デバイスをゲートウェイにバインドします。 |
cloudiot.devices.unbindGateway |
ゲートウェイからのデバイスのバインドを解除します。 |
ユーザーがレジストリとデバイスに対してメソッドを実行できるようにする IAM 権限の詳細については、各メソッドの特定の REST リファレンスをご覧ください。
Cloud IoT Core の IAM 管理
IAM ポリシーの取得と設定は、Google Cloud コンソール、IAM API、gcloud ツールのいずれかを使って実行できます。プロジェクト レベルでこれを行う方法については、アクセス権の付与、変更、取り消しをご覧ください。このセクションの残りの部分では、デバイス レジストリ レベルでの IAM 管理について説明します。
ポリシーの取得
Console
デバイス レジストリのアクセス制御を取得するには:
- Google Cloud コンソールで、[レジストリ] ページに移動します。
権限を設定するデバイス レジストリの横にあるチェックボックスをオンにします。情報パネルが開かない場合は、[情報パネルを表示] をクリックします。
[権限] をクリックします。[権限] ペインが開き、ユーザーとその権限のリストが表示されます。
gcloud
デバイス レジストリのポリシーを取得するには、gcloud iot registries get-iam-policy
コマンドを実行します。
gcloud iot registries get-iam-policy REGISTRY_ID \ --region=REGION \ [--filter=EXPRESSION] [--limit=LIMIT] [--page-size=PAGE_SIZE] [--sort-by=[FIELD,...]]
API
API を介IAM 権限を取得するには、DeviceRegistry getIamPolicy
メソッドを使用します。
C#
Go
Java
Node.js
PHP
Python
Ruby
ポリシーの設定
Console
デバイス レジストリ レベルでアクセス制御を設定するには:
- Google Cloud コンソールで、[レジストリ] ページに移動します。
権限を設定するデバイス レジストリの横にあるチェックボックスをオンにします。情報パネルが開かない場合は、[情報パネルを表示] をクリックします。
[権限] をクリックします。[権限] ペインが開きます。
1 人以上のユーザーを入力し、プルダウン メニューからロールを選択して、[追加] をクリックします。
gcloud
デバイス レジストリにポリシーを設定するには、gcloud iot registries set-iam-policy
コマンドを実行します。
gcloud iot registries set-iam-policy REGISTRY_ID \ --region=REGION \ POLICY_FILE
API
API を介して IAM 権限を設定するには、DeviceRegistry setIamPolicy
メソッドを使用します。