如何限制经过身份验证的身份验证用户将物联网策略附加到认知身份?

时间:2019-04-03 09:11:07

标签: amazon-web-services amazon-cognito amazon-iam aws-iot

我想使用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角色/策略来完成吗?这样用户只能附加特定的策略? 或通过其他任何方式实现这一目标?

1 个答案:

答案 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\": \"...\" } ] }"
 ]
} 
相关问题