使用 IAM 策略在 Google Cloud IoT Core 中进行访问控制以避免灾难
物联网 (IoT) 是当今在物理设备之间建立网络的最常用技术之一。就云物联网而言,云技术通过为现代物联网自动化提供大量支持,使其更加安全、可管理、可扩展等,无疑增加了额外的价值,这种云物联网现在是物联网的新定义大规模操作,尤其是远程访问和管理。
就 Google Cloud IoT Core 而言,它是一项完全托管的服务,可以安全地连接并轻松地从全球数百万台设备中获取数据。这可确保您无需进行自动扩展、数据库分区、资源预配置。还有更多优点,例如:
- 云管理员不需要确定设备的位置,
- 无需为每个区域复制 IoT 配置,而是将数据发布到 Cloud Pub/Sub 并从任何地方轻松访问。
- 设备管理器将允许不时控制和更新系统以维护数据安全。
设备连接注册到 Google Cloud IoT:
连接物联网云的设备注册需要先在设备管理器中注册。设备管理器帮助用户建立和配置设备注册表。根据 Google 的 Cloud ( GCP)文档,设备注册表是指“具有共享属性的设备容器。您向服务(如 Cloud IoT Core)注册设备,以便您可以管理它” 。您可以通过 Google Cloud Platform Console、Google cloud shell 命令或 REST 风格的 API 访问应用程序管理器。
设备注册表:
如前所述,设备注册表是一个容器,可以通过云物联网核心或任何管理服务连接多个设备,我们可以在其中选择 HTTP (超文本传输协议)或 MQTT (消息队列遥测传输)等协议。在我们构建设备注册表时,我们可以根据需要在其中添加这些协议。 onlyEach 设备注册表通常构建在特定的云区域中并属于正在进行的云项目。例如,在 Google Cloud 的cloudiot.googleapis.com服务中,Registry 被定义为它的全名(如下) :
projects/{project-id}/locations/{cloud-region}/registry-id}
因此, 可以通过添加更多 Cloud Pub / Sub 主题来配置系统注册表,该系统注册表中的所有设备的遥测事件都会发布到这些主题中。但在单个主题的情况下,它可能用于所有区域的数据收集。对于每个注册表,堆栈驱动程序监视都会自动激活。
Cloud IoT Core 的身份和访问管理 (IAM):
现在在这里使用 IAM 来监控所有访问权限,并允许用户完整地显示、接收或管理设备。对于每个项目,Cloud IoT Core 自动将cloudiot.serviceAgent的位置授予相应的服务帐户,以允许发布到 Pub / Subtopics。
IAM 可以在注册表级别授予访问权限,而无需单独的访问控制。下表包含Google Cloud IoT Core IAM 角色及其相应的权限。
IAM 角色权限表
IAM Roles | Descriptions | Permissions |
---|---|---|
roles/cloudiot.viewer | Read-only |
|
roles/cloudiot.deviceController | Only access to update the requirements for devices in the registry but not to create or delete. | All the above commands + the below points:
|
roles/cloudiot.provisioner | Access to the registry to create or delete the devices from it but not for any kind of modification. | All the above commands + the below points:
|
roles/cloudiot.editor | Both Read and Write access to all the cloud resources, | All the above commands + the points below:
|
roles/cloudiot.admin | Full access & control of all Cloud IoT resources and permissions | All the above commands + the points below:
|
设备注册表权限表
Device registry permission name | Description |
---|---|
cloudiot.registries.create | It creates a new registry in a project. |
cloudiot.registries.delete | It deletes a registry. |
cloudiot.registries.get | It reads registry details, excluding ACLs. |
cloudiot.registries.getIAMPolicy | It reads registry ACLs. |
cloudiot.registries.list | It lists the registries in a project. |
cloudiot.registries.setIAMPolicy | It updates registry ACLs. |
cloudiot.registries.update | It updates registry details, excluding ACLs. |
cloudiot.devices.sendCommand | It sends the commands (per registry, not per device). |
设备权限表
Device Permission name | Description |
---|---|
cloudiot.devices.create | It adds a new device to a registry. |
cloudiot.devices.delete | It deletes a device. |
cloudiot.devices.get | It reads device details, excluding ACLs. |
cloudiot.devices.list | It lists devices in a registry. |
cloudiot.devices.update | It updates device details, excluding ACLs. |
cloudiot.devices.updateConfig | It updates the device configuration. |
cloudiot.devices.bindGateway | It binds a device to a gateway. |
cloudiot.devices.unbindGateway | It unbinds a device from a gateway. |
表数据/命令来源: Google Cloud 文档
通过上述权限模块,您可以设置所有初始级别权限以访问接收到的物联网传感器信号数据的存储,然后进入高级远程访问以从任何地方管理和保护您的 Cloud IoT Core 数据库,包括对 Google 的控制Big Query、BI 解决方案、谷歌机器学习等。这是关于如何在身份和访问管理 (IAM) 的帮助下管理和控制谷歌云物联网核心的方式,以进行任何类型的安全风险评估或避免灾难。
参考:
- 使用 IAM 进行访问控制,
- 谷歌云物联网核心
- 谷歌云设备注册表