2016-11-06 21 views
6

AWS'de IAM'da yeniyim. Ve, çeşitli kullanıcılar için Sorguyu yalnızca birincil anahtarın cognito kimliğiyle eşleştiği tablo girişlerini kısıtlamak istiyorum. Bunu başarmak için, ben politikasını oluşturmuştur:
enter image description hereAWS IAM - Koşulları kullanma

aşağıdaki hatayı alıyorum:

{ 
"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}" 
       ] 
      } 
     } 
    } 
] 

}

Ama aşağıda gösterildiği gibi i Postacı kullanarak tablo sorgulama am zaman

"__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" 

biri bana ben ne yapıyorum hata haber verir misiniz?


======== GÜNCELLEME ========

Ben politika sim kullanarak çalıştı ve LeadingKey olmadan Sorgu aşağıda pic gösterildiği gibi neden anlamıyorum alamıyorum izin verilir. i lider anahtarı sağlayabilir zaman

enter image description here

ve bu inkar diyor. pic aşağıya bakın:

enter image description here

+0

Hata mesajı oldukça açık. Çağıran kullanıcının (yani "arn: aws: sts :: 049428796662: varsayılan ...") işlemin/mekanizmanın 'dynamodb: Query 'kaynağında çağrılması imtiyazına sahip olmadığını belirtir: arn: aws: dynamodb. ..'. – FDavidov

+0

Evet. Ancak, şifreleme kimliğim tablodaki birincil anahtarla aynı. Bu yüzden, tüm kimlik bilgilerini doğru bir şekilde sağladığım halde neden bu hatayı alıyorum? – achin

+0

Size belirli bir yanıt veremem, ancak tahminimce bunun kimlik bilgilerinin doğruluğu ile ilgisi yok ve sunucu tarafındaki güvenlik ayarlarıyla ilgili olması gerekiyor (bu, bu yana bence vahşi bir tahmin). AWS'ye aşina değil). – FDavidov

cevap

0

Size veren konum isteği bağlı olabilir. IAM politikanız, isteğin her anahtarını dikkate alan ForAllValues kullanıyor. İsteğinizdeki bazı anahtarlar sonuçtaki bazı koşul değerleriyle eşleşmezse, politikanız yanlış olabilir.

ForAnyValue kullanmayı deneyin ve bu da işe yarayabilir.

Daha fazla bilgi için bkz. here.