根据文档,我了解如何创建物联网事物以及如何使用AWS IoT创建经过身份验证的用户。我的问题是如何有效地结合这些服务,以便每个用户可以安全地访问他或她的几个设备。
让我们说Jane刚刚注册了该平台,并希望将她的灯泡设备连接到她的帐户。我们还假设她的灯泡设备上已经有证书和IoT中的策略,以便它可以连接到IoT平台,然后发布和订阅一些主题。为了简单起见,让我们说Jane可以通过简单地进行名为pairDevice
的API调用来创建此连接,该API调用具有认知身份(即59700b18-94c7-XXXX-857a-d820a68c0ec6)和设备序列号。
基本上我设想这个功能做两件事:
它将调用" AttachPrincipalPolicy"这会将与该灯泡相关的政策与认知用户联系起来。我将在此假设认知用户能够发布和订阅该特定灯泡的主题,并且仅该灯泡。
它会在事物ARN的用户帐户中添加DynamoDB条目,以便以后可以轻松引用和查询。
因此,如果我的理解是正确的,我会为IoT中的每个设备制定这样的策略(他们是否也应该发布和订阅带有序列号的主题?我想确保用户无法连接到设备他们显然不允许这样做:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-west-1:123456789012:client/SerialNumber",
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Receive"
],
"Resource": [
"*"
]
}
]
}
然后我会简单地使用AttachPrincipalPolicy将此策略附加到cognito用户?我是否需要在Amazon Cognito身份池中为IoT Access设置明确的策略,或者是否通过AttachPrincipalPolicy专门完成该链接?
答案 0 :(得分:1)
要验证Amazon Cognito标识以通过HTTP发布MQTT消息,您必须指定两个策略。必须将第一个策略附加到Amazon Cognito标识池角色。第一个政策很可能是托管政策AWSIoTDataAccess
。
必须使用AWS IoT AttachPrincipalPolicy API将第二个策略附加到Amazon Cognito用户。
证明这一点的示例应用程序是:
https://github.com/awslabs/aws-iot-chat-example
有关明确说明,请参阅:
https://github.com/awslabs/aws-iot-chat-example/blob/master/docs/authentication.md