我们想设置一些策略,以便只有设备“所有者”才能访问设备影子(“iot:UpdateThingShadow”、“iot:GetThingShadow”)。
根据此文档 ( https://docs.aws.amazon.com/iot/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-view-thing-tags ),应该可以定义设备标签并将其与 IAM 用户名进行比较。 像这样:
{
"Sid": "ConnectToThings",
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": "arn:aws:iot:*:*:thing/*"
}
{
"Sid": "ViewThingsIfOwner",
"Effect": "Allow",
"Action": [
"iot:GetThingShadow",
"iot:UpdateThingShadow"
],
"Resource": "arn:aws:iot:*:*:thing/*",
"Condition": {
"StringEquals": {"iot:ResourceTag/Owner": "${aws:username}"}
}
}
我们尝试了以下配置,但没有成功:
IOT 事物 -> “thing00”,标记为“Owner=user00”
IAM 用户 -> “user00”和“user01”具有上面定义的 IAM 策略。
“user00”和“user01”都不能访问“thing00”的影子服务。我们是否遗漏了什么?
最佳答案
根据 this , 物联网支持基于标签的授权。 如果您将标签分配给您的用户或角色,则只有当资源和委托(delegate)人都附加了相同的标签时,您才能授予访问权限。
在将相同的标签附加到资源和用户之后,我会尝试以下条件,例如所有者=用户 A。
"Condition": {
"StringEquals": {
"aws:ResourceTag/Owner": "${aws:PrincipalTag/Owner}"
}
}
如果可行,您可以根据您的访问管理策略对您的事物进行标记,并为您的用户分配一个属性(标签)。
这article建议 UpdateThingsShadow 可以与 PrincipalTag 一起使用。
关于amazon-web-services - 基于标签的 AWS IoT 资源访问不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59767165/