2016-07-28 7 views
5

Documentation for IAMAttachUserPolicyDetacherUserPolicyResource- 속성이 관리 정책이 첨부되는 사용자 보안 주체로 설정되어야한다고 명시합니다. iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy 설명서에 상세한 없지만, 오류 메시지Cognito ID에 대한 AWS IoT 정책 작업에 대한 액세스 제어

AccessDeniedException : 사용자 : ARN : AWS : STS : ACCOUNT_ID : IOT : 가정 - 역할/역할/CognitoIdentityCredentials 수행 할 권한이 없습니다 AttachPrincipalPolicy을 리소스 : COGNITO_ID

나는 Cognito ID 또는 ID 풀에 대해 ARN이 필요하다고 생각합니다. 그러나 Cognito documentation에 표시된 ARN을 지정하면 동일한 오류가 발생합니다. Cognito ID ARN도 정책 생성기에서 유효성 검사에 실패합니다.

iot:AttachPrincipalPolicyiot:DetachPrincipalPolicy이 Cognito ID에 IoT 정책을 첨부/분리 할 수 ​​있도록 지정해야하는 리소스는 무엇입니까?

답변

7

AWS에서 Cognito ID를 사용하면 IoT에는 약간 다른 경로가 있습니다. Cognito ID 풀은 인증되지 않은 (에이전트는 자격증 명을 얻을 수 있음) 또는 인증 된 사용자 (Cognito User Pools, Facebook, OpenID 등과 같은 공급자에 연결된 사용자)를 지원합니다. AWS IoT는 Cognito를 사용하여 자격 증명을 얻을 때 두 가지 경우를 모두 지원합니다.

인증되지 않은 케이스를 사용할 때는 Cognito ID 풀을 사용하여 만든 cognito_unauth_role에 정책을 첨부해야합니다. Identity Access & 관리 (IAM) 콘솔은이 역할에 정책을 첨부합니다. 시작하려면 관리되는 정책 "AWSIoTDataAccess"를 첨부하십시오. 그런 다음 인증되지 않은 Cognito ID가 연결을 설정하기 위해 AWS IoT에 전달되는 자격 증명 (액세스 키, 비밀 키, 세션 토큰)을 가져올 수 있습니다.

인증 된 사례를 사용하는 경우 Cognito ID 풀 으로 생성 된 cognito_auth_role에 인증 된 각 엔티티에 대해 생성 된 Cognito ID를 첨부해야합니다. AWS IoT API AttachPrincipalPolicy는 AWS IoT 정책을 Cognito ID에 연결하는 데 사용하는 API입니다. CLI에서 해당 API 호출의 형식은 다음과 같습니다 : aws iot attach-principal-policy --policy-name myPolicy --principal us-east-1:abcd1234-5678-1234-abcd1234efgh. 이 경우의 주체는 인증 된 개체의 Cognito ID입니다. Cognito에서 반환 한 자격 증명은 두 정책을 모두 수행해야만 AWS IoT에 연결할 수 있습니다.

+2

사용자가 방금 등록했다면 인증 된 엔티티에 대해 생성 된 Cognito ID에 정책을 어떻게 첨부합니까? 내가 사용할 수있는 방아쇠가 있습니까? – webjay

+0

@webjay, Wow 나는 같은 질문으로 여기에 왔습니까? 그 해결책이 있습니까? – Roskoto

+0

@Roskoto 우리는 클라이언트가 새로운 사용자에게 IoT로 작성된 정책을 첨부하게합니다. 이상한 일이지만 작동합니다. – webjay

관련 문제