我想使用Cognito凭据订阅Iot影子。为此,我必须将策略附加到已认证的认知身份。意味着用户登录后,用户将获得身份ID。然后,我将先前创建的物联网策略附加到该身份。附加策略可以访问连接和订阅设备影子。 我正在为此“ AttachPrinciplePolicy” /“ AttachPolicy”使用方法。 这两种方法都带有两个参数:1.策略名称,2.我要附加的身份ID。 这里的问题是关于安全性的。因为一旦用户通过身份验证,则用户只需指定策略名称即可附加任何策略。黑客可以使用某些技术来更改代码中的策略名称,然后可能会导致重大漏洞。
我想通过一种方式来限制用户,即经过身份验证的用户只能附加可以访问和订阅影子的特定策略。
可以使用某些IAM角色/策略来完成吗?这样用户只能附加特定的策略?
请提出建议。
我尝试使用IAM策略,但是当我在AttachPrinciplePolicy操作的资源中指定特定策略时,它不起作用。 我使用的IAM政策如下
{
"Action": [
"iot:AttachPolicy",
"iot:AttachPrincipalPolicy"
],
"Resource": [
"arn:aws:iot:us-east-2:XXXXXXXXXX:policy/AccessByCognito_Policy"
],
"Effect": "Allow"
}
可以使用某些IAM角色/策略来完成吗?这样用户只能附加特定的策略? 或通过其他任何方式实现这一目标?
答案 0 :(得分:0)
改为尝试AWS IoT Custom Authorizer。您可以使用lambda函数随时随地附加策略。
您可以在连接到AWS IOT时发送AWS Cognito ID令牌。
在lambda函数中,您可以验证JWT id令牌并以json形式返回IAM策略。您还可以确定该策略将附加到会话的时间。
{
"isAuthenticated":true,
"principalId": "xxxxxxxx",
"disconnectAfterInSeconds": 86400,
"refreshAfterInSeconds", 300,
"policyDocuments": [
"{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Action\": \"...\", \"Effect\": \"Allow|Deny\", \"Resource\": \"...\" } ] }"
]
}