如何限制经过 Cognito 身份验证的用户将物联网策略附加到 Cognito 身份?
How to restrict cognito authenticated users to attach iot policy to cognito identity?
我想使用 Cognito 凭据订阅 Iot 影子。为此,我必须将策略附加到经过身份验证的 Cognito 身份。意味着用户登录后,用户将获得身份标识。然后我将之前创建的物联网策略附加到该身份。我附加的策略有权连接和订阅设备影子。
我为此 'AttachPrinciplePolicy' / 'AttachPolicy' 使用的方法。
这两种方法都有两个参数,1. 策略名称,2. 我要附加的身份 ID。
这里的问题是关于安全的。因为一旦用户通过身份验证,用户就可以通过指定策略名称来附加任何策略。黑客可以使用一些技术来更改代码中的策略名称,然后可能会导致重大漏洞。
我想以一种方式限制用户,使经过 cognito 身份验证的用户只能附加有权连接和订阅影子的特定策略。
可以使用一些 IAM roles/policy 来完成吗?以便用户只能附加特定的策略?
求推荐。
我尝试过使用 IAM 策略,但是当我为 AttachPrinciplePolicy 操作的资源指定一个特定的策略时,它不起作用。
我使用的 IAM 策略如下
{
"Action": [
"iot:AttachPolicy",
"iot:AttachPrincipalPolicy"
],
"Resource": [
"arn:aws:iot:us-east-2:XXXXXXXXXX:policy/AccessByCognito_Policy"
],
"Effect": "Allow"
}
可以使用一些 IAM roles/policy 来完成吗?以便用户只能附加特定的策略?
或任何其他方式来实现这一目标?
试试 AWS IoT Custom Authorizer。您可以使用 lambda 函数随时附加策略。
您可以在连接到 aws iot 时发送 aws cognito id 令牌。
在 lambda 函数中,您可以将 JWT id 令牌和 return IAM 策略验证为 json。您还可以确定该策略将附加到会话的时间长度。
{
"isAuthenticated":true,
"principalId": "xxxxxxxx",
"disconnectAfterInSeconds": 86400,
"refreshAfterInSeconds", 300,
"policyDocuments": [
"{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Action\": \"...\", \"Effect\": \"Allow|Deny\", \"Resource\": \"...\" } ] }"
]
}
我想使用 Cognito 凭据订阅 Iot 影子。为此,我必须将策略附加到经过身份验证的 Cognito 身份。意味着用户登录后,用户将获得身份标识。然后我将之前创建的物联网策略附加到该身份。我附加的策略有权连接和订阅设备影子。 我为此 'AttachPrinciplePolicy' / 'AttachPolicy' 使用的方法。 这两种方法都有两个参数,1. 策略名称,2. 我要附加的身份 ID。 这里的问题是关于安全的。因为一旦用户通过身份验证,用户就可以通过指定策略名称来附加任何策略。黑客可以使用一些技术来更改代码中的策略名称,然后可能会导致重大漏洞。
我想以一种方式限制用户,使经过 cognito 身份验证的用户只能附加有权连接和订阅影子的特定策略。
可以使用一些 IAM roles/policy 来完成吗?以便用户只能附加特定的策略?
求推荐。
我尝试过使用 IAM 策略,但是当我为 AttachPrinciplePolicy 操作的资源指定一个特定的策略时,它不起作用。 我使用的 IAM 策略如下
{
"Action": [
"iot:AttachPolicy",
"iot:AttachPrincipalPolicy"
],
"Resource": [
"arn:aws:iot:us-east-2:XXXXXXXXXX:policy/AccessByCognito_Policy"
],
"Effect": "Allow"
}
可以使用一些 IAM roles/policy 来完成吗?以便用户只能附加特定的策略? 或任何其他方式来实现这一目标?
试试 AWS IoT Custom Authorizer。您可以使用 lambda 函数随时附加策略。
您可以在连接到 aws iot 时发送 aws cognito id 令牌。
在 lambda 函数中,您可以将 JWT id 令牌和 return IAM 策略验证为 json。您还可以确定该策略将附加到会话的时间长度。
{
"isAuthenticated":true,
"principalId": "xxxxxxxx",
"disconnectAfterInSeconds": 86400,
"refreshAfterInSeconds", 300,
"policyDocuments": [
"{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Action\": \"...\", \"Effect\": \"Allow|Deny\", \"Resource\": \"...\" } ] }"
]
}