对客户端设备进行身份验证和授权 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对客户端设备进行身份验证和授权

注意

此功能适用于 v2.6.0 及更高版本的Greengrass 核组件.

使用客户端设备身份验证 IPC 服务开发可连接本地 IoT 设备(如客户端设备)的自定义本地代理组件。

要使用这些 IPC 操作,请使用 2.2.0 版或更高版本的客户端设备身份验证组件作为自定义组件中的依赖项。然后,您可以在自定义组件中使用 IPC 操作来执行以下操作:

  • 验证连接到核心服务的客户端设备的身份。

  • 为客户端设备创建一个会话以连接到核心设备。

  • 验证客户端设备是否有权执行操作。

  • 当核心设备的服务器证书轮换时收到通知。

开发工具包的最低版本

下表列出了的最低版本Amazon IoT Device SDK您必须使用它来与客户端设备身份验证 IPC 服务进行交互。

Authorization

要在自定义组件中使用客户端设备身份验证 IPC 服务,必须定义允许组件执行这些操作的授权策略。有关定义授权策略的信息,请参阅授权组件执行 IPC 操作.

客户端设备身份验证和授权的授权策略具有以下属性。

IPC 服务标识符: aws.greengrass.clientdevices.Auth

运算 描述 资源

aws.greengrass#VerifyClientDeviceIdentity

允许组件验证客户端设备的身份。

*

aws.greengrass#GetClientDeviceAuthToken

允许组件验证客户端设备的凭据并为该客户端设备创建会话。

*

aws.greengrass#AuthorizeClientDeviceAction

允许组件验证客户端设备是否有权执行操作。

*

aws.greengrass#SubscribeToCertificateUpdates

允许组件在核心设备的服务器证书轮换时接收通知。

*

*

允许组件执行所有客户端设备身份验证 IPC 服务操作。

*

授权策略示例

您可以参考以下授权策略示例来帮助您为组件配置授权策略。

例 授权策略示例

以下示例授权策略允许组件执行所有客户端设备身份验证 IPC 操作。

{ "accessControl": { "aws.greengrass.clientdevices.Auth": { "com.example.MyLocalBrokerComponent:clientdevices:1": { "policyDescription": "Allows access to authenticate and authorize client devices.", "operations": [ "aws.greengrass#VerifyClientDeviceIdentity", "aws.greengrass#GetClientDeviceAuthToken", "aws.greengrass#AuthorizeClientDeviceAction", "aws.greengrass#SubscribeToCertificateUpdates" ], "resources": [ "*" ] } } } }

VerifyClientDeviceIdentity

验证客户端设备的身份。此操作验证客户端设备是否有效Amazon IoTthing。

请求

此操作的请求具有以下参数:

credential

客户端设备的凭据。这个对象ClientDeviceCredential,包含以下信息:

clientDeviceCertificate(Python:client_device_certificate

客户端设备的 X.509 设备证书。

响应

此操作的响应包含以下信息:

isValidClientDevice(Python:is_valid_client_device

客户端设备的标识是否有效。

GetClientDeviceAuthToken

验证客户端设备的凭据并为该客户端设备创建会话。此操作返回可用于后续请求的会话令牌授权客户端设备操作.

要成功连接客户端设备,客户端设备身份验证组件必须授予mqtt:connect客户端设备使用的客户端 ID 的权限。

请求

此操作的请求具有以下参数:

credential

客户端设备的凭据。这个对象CredentialDocument,包含以下信息:

mqttCredential(Python:mqtt_credential

客户端设备的 MQTT 凭据。指定客户端设备用于连接的客户端 ID 和证书。这个对象MQTTCredential,包含以下信息:

clientId(Python:client_id

用于连接的客户端 ID。

certificatePem(Python:certificate_pem

用于连接的 X.509 设备证书。

username
注意

此属性当前未使用。

password
注意

此属性当前未使用。

响应

此操作的响应包含以下信息:

clientDeviceAuthToken(Python:client_device_auth_token

客户端设备的会话令牌。您可以在后续请求中使用此会话令牌来授权此客户端设备的操作。

AuthorizeClientDeviceAction

验证客户端设备是否有权对资源执行操作。客户端设备授权策略指定客户端设备在连接到核心设备时可以执行的权限。在配置客户端设备身份验证组件.

请求

此操作的请求具有以下参数:

clientDeviceAuthToken(Python:client_device_auth_token

客户端设备的会话令牌。

operation

要授权的操作。

resource

客户端设备执行操作的资源。

响应

此操作的响应包含以下信息:

isAuthorized(Python:is_authorized

客户端设备是否被授权对资源执行操作。

SubscribeToCertificateUpdates

订阅以在每次轮换时接收核心设备的新服务器证书。当服务器证书轮换时,代理必须使用新的服务器证书重新加载。

这些区域有:客户端设备身份验证组件默认情况下,每 7 天轮换一次服务器证书。您可以将轮换间隔配置为 2 到 10 天之间。

此操作是一种订阅操作,您可以在其中订阅事件消息流。要使用此操作,请使用处理事件消息、错误和流闭包的函数定义一个流响应处理程序。有关更多信息,请参阅 订阅 IPC 事件直播

事件消息类型: CertificateUpdateEvent

请求

此操作的请求具有以下参数:

certificateOptions(Python:certificate_options

要订阅的证书更新的类型。这个对象CertificateOptions,包含以下信息:

certificateType(Python:certificate_type

要订阅的证书更新的类型。选择以下选项:

  • SERVER

响应

此操作的响应包含以下信息:

messages

消息流。这个对象CertificateUpdateEvent,包含以下信息:

certificateUpdate(Python:certificate_update

有关新证书的信息。这个对象CertificateUpdate,包含以下信息:

certificate

证书。

privateKey(Python:private_key

证书的私有密钥。

publicKey(Python:public_key

证书的公钥。

caCertificates(Python:ca_certificates

证书的 CA 证书链中的证书颁发机构 (CA) 证书列表。