2016-11-06 7 views
6

AWS에서 IAM을 처음 사용했습니다. 그리고 다양한 사용자의 쿼리를 기본 키가 Cognito ID와 일치하는 테이블 항목으로 만 제한하려고합니다. 이를 위해, 나는 정책 생성 :
enter image description hereAWS IAM - 조건부 사용

을 나는 다음과 같은 오류가 점점 오전 :

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "AllowAccessToOnlyItemsMatchingUserID", 
     "Effect": "Allow", 
     "Action": [ 
      "dynamodb:GetItem", 
      "dynamodb:BatchGetItem", 
      "dynamodb:Query", 
      "dynamodb:PutItem", 
      "dynamodb:UpdateItem", 
      "dynamodb:DeleteItem", 
      "dynamodb:BatchWriteItem" 
     ], 
     "Resource": [ 
      "arn:aws:dynamodb:us-east-1:XXXXXXXXXXX:table/User" 
     ], 
     "Condition": { 
      "ForAllValues:StringEquals": { 
       "dynamodb:LeadingKeys": [ 
        "${cognito-identity.amazonaws.com:sub}" 
       ] 
      } 
     } 
    } 
] 

}

하지만를 아래와 같이 나는 우체부를 사용하여 테이블을 조회하고 때

"__type": "com.amazon.coral.service#AccessDeniedException", 


"Message": "User: arn:aws:sts::XXXXXXXXXXXXX:assumed-role/Achintest/BackplaneAssumeRoleSession is not authorized to perform: dynamodb:Query on resource: arn:aws:dynamodb:us-east-1:XXXXXXXXXXXXX:table/User" 

내가 실수를하고 있음을 알려주실 수 있습니까?


======== UPDATE ========

나는 정책 시뮬레이션을 사용하여 시도하고 LeadingKey없이 쿼리가 아래 그림과 같이 이유를 이해 할 수없는입니다 허용됩니다. 내가 선두 키를 제공 할 때

enter image description here

하고, 그것을 거부했다. 그림 아래 참조 :

enter image description here

+0

오류 메시지는 분명합니다. 그것은 호출하는 사용자 (즉,'arn : aws : sts :: 049428796662 : assum ...')가 자원 :'arn : aws : dynamodb에 대한 프로세스/메카니즘'dynamodb : Query'를 호출 할 특권을 가지고 있지 않음을 나타냅니다. ..'. – FDavidov

+0

예. 하지만 내 ID는 기본 키와 동일합니다. 그래서, 나는 왜 모든 오류 메시지를 올바르게 제공하고 있는데도이 오류가 발생합니까? – achin

+0

특정 답변을 드릴 수는 없지만 내 생각에이 자격 증명은 자격 증명의 정확성과 아무 관련이 없으며 서버 측의 보안 설정과 관련이 있습니다 (이것은 야생의 추측이므로, AWS에 익숙하지 않은 사용자). – FDavidov

답변

0

그것은 당신이 실행중인 요청에 따라 수 있습니다. 귀하의 IAM 정책은 요청의 모든 키를 고려하여 ForAllValues을 사용하고 있습니다. 요청의 일부 키가 결과의 일부 조건 값과 일치하지 않으면 정책이 false를 반환 할 수 있습니다.

ForAnyValue을 사용해보세요. 그럴 수 있습니다.

자세한 내용은 here을 참조하십시오.

관련 문제