7

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

Odpowiedz

0

W celu umożliwienia fine-grained data access in DynamoDB, należy określić IAM Policy Element Variable w polityce DynamoDB IAM.

Typowa polityka może wyglądać następująco:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "FullAccessToUserItems", 
      "Effect": "Allow", 
      "Action": [ 
       "dynamodb:*" 
      ], 
      "Resource": [ 
       "arn:aws:dynamodb:*:table/*" 
      ], 
      "Condition": { 
       "ForAllValues:StringEquals": { 
        "dynamodb:LeadingKeys": [ 
         "${cognito-identity.amazonaws.com:sub}" 
        ] 
       } 
      } 
     } 
    ] 
} 

Gdzie ${cognito-identity.amazonaws.com:sub} jest IAM polityki zmiennych reprezentujących sub użytkownika w Cognito.

Niestety, Amazon nie publikuje listy dostępnych zmiennych zasad. Oznacza to jednak, że zarządzanie użytkownikami ma być zarządzane przez Amazon w celu zapewnienia drobnoziarnistych zabezpieczeń. Nie można definiować własnych zmiennych strategicznych - muszą one być wstępnie zdefiniowanymi zmiennymi Amazon - dlatego precyzyjne zabezpieczenia są dostępne tylko w przypadku zarządzania użytkownikami w Amazon.

Dodatkowo klucz partycji DynamoDB musi pasować do zmiennej strategii. Na przykład tabela klucz partycji musi być sub Cognito.

Jeśli Twój token OAuth został odebrany od Cognito, możesz po prostu wysłać go do Amazon Token Endpoint, co da ci identyfikator id_take, który zawiera użytkowników Cognito sub.

+0

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

Powiązane problemy