我想使用cognito凭证订阅Iot阴影。为此,我必须将政策附加到经过身份验证的认知身份。表示用户登录后将获取身份标识。然后我将先前创建的iot策略附加到该身份。策略即时附加具有连接和订阅设备阴影的访问权限。方法我正在使用这个'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角色/策略来完成吗?这样用户只能附加特定的策略?或任何其他方式来实现这一目标?
试试AWS IoT Custom Authorizer吧。您可以随时使用lambda函数附加策略。
连接到aws iot时,您可以发送aws cognito id令牌。
在lambda函数中,您可以验证JWT id令牌并将IAM策略作为json返回。您还可以确定该策略将附加到会话的时间。
{
"isAuthenticated":true,
"principalId": "xxxxxxxx",
"disconnectAfterInSeconds": 86400,
"refreshAfterInSeconds", 300,
"policyDocuments": [
"{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Action\": \"...\", \"Effect\": \"Allow|Deny\", \"Resource\": \"...\" } ] }"
]
}