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

MrB*_*ink 6 amazon-web-services amazon-iam amazon-cognito

IAM的文档声明Resource-property for AttachUserPolicyDetacherUserPolicyshould应设置为托管策略将附加到的用户主体.虽然文档中iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy没有详细说明,但错误消息

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

让我相信它期望ARN用于Cognito身份或身份池.但是,指定Cognito文档中显示的ARN会导致相同的错误.Cognito身份ARN也未在策略生成器中进行验证.

我应该指定什么资源,以便iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy被允许在Cognito身份附着/分离物联网的政策?

The*_*AWS 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调用的格式如下:aws iot attach-principal-policy --policy-name myPolicy --principal us-east-1:abcd1234-5678-1234-abcd1234efgh.在这种情况下,委托人是经过身份验证的实体的Cognito ID.只有使用这两个策略,Cognito返回的凭据才能与AWS IoT建立连接.

  • 假设用户刚刚注册,如何将策略附加到为经过身份验证的实体创建的Cognito ID?我可以使用触发器吗? (2认同)