【问题标题】:How to restrict cognito authenticated users to attach iot policy to cognito identity?如何限制 cognito 身份验证用户将 iot 策略附加到 cognito 身份?
【发布时间】:2019-04-03 19:11:19
【问题描述】:

我想使用 cognito 凭据订阅 IoT 影子。为此,我必须将策略附加到经过身份验证的 cognito 身份。表示用户登录后用户将获得身份ID。然后,我将先前创建的物联网策略附加到该身份。附加的策略有权连接和订阅设备影子。 我用于此“AttachPrinciplePolicy”/“AttachPolicy”的方法。 这两种方法都需要两个参数,1.策略名称,2.我要附加的身份 ID。 这里的问题是关于安全性。因为一旦用户通过身份验证,用户就可以通过指定策略名称来附加任何策略。黑客可以使用一些技术来更改代码中的策略名称,然后可能会导致重大漏洞。

我想通过 cognito 身份验证用户只能附加有权连接和订阅影子的特定策略来限制用户。

可以使用某些 IAM 角色/策略来完成吗?这样用户只能附加特定的策略?

请提出建议。

我尝试使用 IAM 策略,但是当我为 AttachPrinciplePolicy 操作的资源指定特定策略时,它不起作用。 我使用的 IAM 政策如下

{
  "Action": [
     "iot:AttachPolicy",
     "iot:AttachPrincipalPolicy"
   ],
   "Resource": [
       "arn:aws:iot:us-east-2:XXXXXXXXXX:policy/AccessByCognito_Policy"
    ],
    "Effect": "Allow"
}

可以使用某些 IAM 角色/策略来完成吗?这样用户只能附加特定的策略? 或者任何其他方式来实现这一点?

【问题讨论】:

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


    【解决方案1】:

    改用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\": \"...\" } ] }"
     ]
    } 
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 2017-01-02
      • 1970-01-01
      • 2016-07-24
      • 2018-01-29
      • 2018-12-13
      • 2016-12-02
      • 2022-06-19
      • 2016-06-25
      相关资源
      最近更新 更多