亚马逊网络服务-控制Cognito身份对AWS物联网政策操作的访问


IAM的文档说明AttachUserPolicyDetacherUserPolicyResource-属性应设置为托管策略将附加到的用户主体。虽然iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy的文档没有那么详细,但错误消息

AccessDeniedException:用户:arn:aws:sts::ACCOUNT_ID:假定的角色/role/CognitoIdentityCredentials未被授权对资源执行:iot:AttachPrincipalPolicy:COGNITO_ID

让我相信它期望Cognito身份或身份池的ARN。但是,指定Cognito文档中显示的ARN会导致相同的错误。Cognito身份ARN也无法通过策略生成器中的验证。

我应该指定什么资源,以便允许iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy在Cognito身份上附加/分离IoT策略?

在AWS IoT中使用Cognito身份有两条略有不同的路径。Cognito身份池支持未经身份验证(任何代理都可以获得凭据(或已通过身份验证(与Cognito用户池、Facebook、OpenID等提供商绑定的用户(的身份。AWS IoT在使用Cognito获取凭据时支持这两种情况。

使用未经身份验证的情况时,必须将策略附加到使用cognito标识池创建的cognito_unath_role。身份访问&管理(IAM(控制台是将策略附加到此角色的位置。若要开始,请尝试附加托管策略"AWSIoTDataAccess"。然后,您未经身份验证的Cognito ID可以获得凭据(访问密钥、密钥、会话令牌(,这些凭据将传递给AWS IoT以建立连接。

使用经过身份验证的案例时,必须将策略附加到cognito_auth_role,该角色是使用cognito标识池为每个经过身份验证实体创建的cognito ID创建的。AWS IoT API AttachPrincipalPolicy用于将AWS IoT策略附加到Cognito ID。CLI中API调用的格式如下:aws iot attach-principal-policy --policy-name myPolicy --principal us-east-1:abcd1234-5678-1234-abcd1234efgh。在这种情况下,主体是经过身份验证的实体的Cognito ID。只有在这两项政策都到位的情况下,Cognito返回的凭据才能连接到AWS IoT。

最新更新