[英]Controlling access to AWS IoT policy actions for Cognito identities
IAM的文档指出, AttachUserPolicy
和DetacherUserPolicy
的Resource
属性应设置为托管策略将附加到的用户主体。 虽然iot:AttachPrincipalPolicy
的文档iot:AttachPrincipalPolicy
和iot: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:AttachPrincipalPolicy
和iot:DetachPrincipalPolicy
被允许在Cognito身份上附加/分离IoT策略?
在AWS IoT中使用Cognito身份有两个略有不同的路径。 Cognito身份池支持未经身份验证(任何代理可以获取凭据)或经过身份验证的身份(与Cognito用户池,Facebook,OpenID等提供商绑定的用户)。 使用Cognito获取凭据时,AWS IoT支持这两种情况。
使用未经身份验证的案例时,您必须将策略附加到使用Cognito身份池创建的cognito_unauth_role。 身份访问和管理(IAM)控制台是您将策略附加到此角色的位置。 要开始使用,请尝试附加托管策略“AWSIoTDataAccess”。 然后,未经身份验证的Cognito ID可以获取传递给AWS IoT以建立连接的凭据(访问密钥,密钥,会话令牌)。
当使用身份验证的情况下,您必须将政策的是它和你的Cognito身份池并为每个验证过的实体创建Cognito ID创建的cognito_auth_role。 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建立连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.