首页 文章

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

提问于
浏览
5

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

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

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

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

1 回答

  • 7

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

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

    使用经过身份验证的案例时,您必须将策略附加到使用您的Cognito身份池创建的cognito_auth_role以及为每个经过身份验证的实体创建的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 Build 连接 .

相关问题