控制对Cognito身份的AWS IoT策略操作的访问

时间:2016-07-28 12:09:42

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

Documentation for IAM声明Resource - AttachUserPolicyDetacherUserPolicy的属性应设置为托管策略将附加到的用户主体。虽然iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy的文档不够详细,但错误消息

  

AccessDeniedException:User:arn:aws:sts :: ACCOUNT_ID:assume-role / ROLE / CognitoIdentityCredentials无权执行:iot:AttachPrincipalPolicy on resource:COGNITO_ID

让我相信它需要一个用于Cognito身份或身份池的ARN。但是,指定Cognito documentation中显示的ARN会导致相同的错误。 Cognito身份ARN也未在策略生成器中进行验证。

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

1 个答案:

答案 0 :(得分:8)

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

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

使用经过身份验证的案例时,您必须将策略附加到使用您的Cognito身份池创建的cognito_auth_role AND 为每个经过身份验证的实体创建的Cognito ID。 AWS IoT API AttachPrincipalPolicy用于将AWS IoT策略附加到Cognito ID。 CLI中API调用的格式如下:<link href="//css/bootstrap.min.css" rel="stylesheet"> 。在这种情况下,委托人是经过身份验证的实体的Cognito ID。只有使用这两个策略,Cognito返回的凭据才能与AWS IoT建立连接。