本页介绍了如何使用 Identity and Access Management (IAM) 控制对设备的访问权限。您可以在项目或注册表级别授予访问权限。没有具体设备级别的访问权限控制。访问权限通常授予个人或一组用户,或服务器端服务帐号。(设备使用公钥/私钥身份验证;如需了解详情,请参阅设备安全性部分)。
例如,如果您为用户分配了 cloudiot.provisioner
设备 IAM 政策角色,则该用户可以添加或移除设备,但无法修改或删除注册表本身。也可以为云项目设置角色;然后,该角色适用于属于该云项目的所有注册表。
本部分重点介绍与 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
权限允许用户列出项目中的注册表。您不能直接授予用户权限,但可以为他们分配角色,这些角色捆绑了一项或多项权限。您还可以创建自定义角色。
下表列出了与 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 管理
您可以使用 Google Cloud 控制台、IAM API 或 gcloud 工具获取并设置 IAM 政策。如需了解如何在项目级别执行此操作,请参阅授予、更改和撤消访问权限。本部分的其余部分包含有关设备注册表级别的 IAM 管理的信息。
购买保单
控制台
如需获取设备注册表的访问权限控制,请执行以下操作:
- 转到 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
设置政策
控制台
如需在设备注册表级别设置访问权限控制,请执行以下操作:
- 转到 Google Cloud 控制台中的“注册表”页面。
选中要为其设置权限的设备注册表旁边的复选框。如果信息面板未打开,请点击显示信息面板。
点击权限。此时系统会打开一个“权限”窗格。
输入用户并从下拉菜单中选择一个角色,然后点击添加。
gcloud
如需为设备注册表设置政策,请运行 gcloud iot registries set-iam-policy
命令:
gcloud iot registries set-iam-policy REGISTRY_ID \ --region=REGION \ POLICY_FILE
API
如需通过 API 设置 IAM 权限,请使用 DeviceRegistry setIamPolicy
方法: