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:
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.
und wenn ich die führenden Schlüssel liefern, sagt er verweigert. Im folgenden sehen Sie pic:
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
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
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