2016-11-06 12 views
6

Ich bin neu bei IAM in AWS. Und ich möchte die Abfrage für verschiedene Benutzer auf nur Tabelleneinträge beschränken, bei denen der Primärschlüssel mit der Cognito-ID übereinstimmt. Um dies zu erreichen, habe ich die Politik:AWS IAM - Verwenden von Bedingungen

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

}

Aber, wenn ich die Abfrage der Tabelle Postman wie unten gezeigt:
enter image description here

ich die folgende Fehlermeldung erhalten:

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

Kann mir bitte jemand sagen, welchen Fehler ich mache?


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

Ich habe versucht, Politik sim verwenden, und ich bin nicht in der Lage zu verstehen, warum die Abfrage ohne LeadingKey in pic wie unten gezeigt ist erlaubt.

enter image description here

und wenn ich die führenden Schlüssel liefern, sagt er verweigert. Im folgenden sehen Sie pic:

enter image description here

+0

Die Fehlermeldung ist ziemlich klar. Es besagt, dass der aufrufende Benutzer (dh "arn: aws: sts :: 049428796662: angenommen ...") nicht das Recht hat, den Prozess/Mechanismus "dynamodb: Query" auf der Ressource aufzurufen: 'arn: aws: dynamodb. ..'. – FDavidov

+0

Ja. Aber meine Cognito-ID ist dieselbe wie der Primärschlüssel in der Tabelle. Also, warum bekomme ich diesen Fehler obwohl ich alle Zugangsdaten korrekt zur Verfügung stelle? – achin

+0

Ich kann Ihnen keine spezifische Antwort geben, aber meine Vermutung ist, dass dies nichts mit der Korrektheit der Anmeldeinformationen zu tun hat, und es hat mit den Sicherheitseinstellungen auf Ihrer Serverseite zu tun (das ist eine wilde Vermutung, da ich ' Ich bin mit AWS nicht vertraut). – FDavidov

Antwort

0

Es könnte auf Antrag ab, die Sie ausgeben. Ihre IAM-Richtlinie verwendet ForAllValues, die alle Schlüssel der Anfrage berücksichtigt. Ihre Richtlinie gibt möglicherweise false zurück, wenn ein Schlüssel in Ihrer Anfrage nicht mit einem Bedingungswert im Ergebnis übereinstimmt.

Versuchen Sie mit ForAnyValue und das könnte den Trick tun.

Weitere Informationen finden Sie unter here.

Verwandte Themen