Przeszedłem już przez documentation i ściśle odzwierciedla ona mój przypadek użycia, z tym że nie mogę używać Google, Facebook lub Amazon jako mojego dostawcy tożsamości, ale już mam token dostępu OAuth na poziomie przedsiębiorstwa dla uwierzytelnionych użytkowników.Precyzyjna kontrola dostępu z Amazon Dynamo DB z ukrywaniem informacji w poziomie
Rozumiem, że mogłem ewentualnie skorzystać z opcji Enterprise Federated ze strony AWS STS, aby uzyskać tymczasowe dane uwierzytelniające i użyć ich do dalszego dostępu do zasobów AWS, ale nie rozumiem, jak mogę skonfigurować zasady IAM, aby używać tych poświadczeń do uzyskiwania informacji horyzontalnych. ukrywanie.
Mam pewne tabele w DynamoDB, w których przechowuję dane wszystkich użytkowników mojej aplikacji, a moja aplikacja obsługuje wielu najemców, dlatego chcę, aby użytkownicy jednego dzierżawcy NIE byli w stanie uzyskać dostępu do danych innych najemców. Polityka IAM że mogę skonfigurować jest typu:
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": ["${www.amazon.com:user_id}"]
}
}
Teraz moi użytkownicy Nie jesteś zalogowany (przez Amazon czy Google czy Facebook), a więc nie mogę użyć klawiszy jak „$ {www.amazon.com : user_id} "itd. Również mój skrót dla niektórych tabel jest złożony.
Moje pytanie brzmi: jak osiągnąć multi-tenancy na poziomie bazy danych i móc segregować lub rozdzielać dane na jednego dzierżawcę, tj. Ukrywać określone wiersze moich tabel przed użytkownikami, którzy nie powinni mieć do niego dostępu.
Czy można określić niestandardowe zmienne zasad podczas definiowania strategii IAM i określić sposób ich rozwiązywania w środowisku wykonawczym? Lub w jakiś inny sposób?
Moje tabele w Dynamo mają obecnie złożone klucze mieszające, które są kombinacją Tenant_ID i User_ID, więc czy mogę określić jakąś regułę w Polityce IAM, aby móc uzyskać ukrywanie informacji horyzontalnych?
Proszę dać mi znać, jeśli potrzebujesz więcej informacji o moim przypadku użycia.
Pozdrawiam, Agraj
dziękuję Stu za odpowiedź.Nie mogę jednak zaakceptować tego jako właściwej odpowiedzi, ponieważ nie mogę teraz tego wypróbować. Przeniosłem się z tego projektu 2 lata temu. Jeśli ktokolwiek może potwierdzić tę odpowiedź jako poprawną, chętnie zaakceptuję to jako poprawną odpowiedź. – Agraj