Jestem nowicjuszem IAM w AWS. I chcę ograniczyć zapytanie dla różnych użytkowników tylko do wpisów w tabeli, w których klucz podstawowy pasuje do identyfikatora cognito. Aby to osiągnąć, stworzyłem zasadę:AWS IAM - Korzystanie z warunków
{
"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}"
]
}
}
}
]
}
Ale kiedy jestem odpytywanie tabeli przy użyciu Postman, jak pokazano poniżej:
otrzymuję następujący błąd:
"__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"
Czy ktoś może mi powiedzieć, jaki błąd robię?
======== ======== UPDATE
Próbowałem przy użyciu sim polityki, a ja jestem w stanie zrozumieć, dlaczego Query bez LeadingKey jak pokazano na rys poniżej jest dozwolone.
i kiedy zapewniają wiodącą klucza, to mówi zaprzeczyć. Patrz poniżej pic:
Komunikat o błędzie jest całkiem jasny. Stwierdza, że wywołujący użytkownik (np. 'Arn: aws: sts :: 049428796662: założony ...') nie ma uprawnień do wywołania procesu/mechanizmu 'dynamodb: Query' na zasobie:' arn: aws: dynamodb. ..'. – FDavidov
Tak. Ale mój identyfikator cognito jest taki sam jak klucz podstawowy w tabeli. dlaczego pojawia się ten błąd pomimo prawidłowego podania wszystkich poświadczeń? – achin
Nie mogę podać konkretnej odpowiedzi, ale domyślam się, że nie ma to nic wspólnego z poprawnością poświadczeń i ma to związek z ustawieniami bezpieczeństwa po stronie serwera (jest to dzikie domysły, ponieważ ja ". nie znam AWS). – FDavidov