2016-02-09 12 views
18

Mam funkcję lambda skonfigurowaną przez bramkę API, która ma trafić zewnętrzny interfejs API poprzez węzeł (np. Twilio). Nie chcę jednak przechowywać referencji dla funkcji bezpośrednio w funkcji lambda. Czy jest lepsze miejsce na ich ustawienie?W AWS Lambda, gdzie mogę bezpiecznie przechowywać poświadczenia API?

+0

mówisz poświadczeń AWS – helloV

+2

No non-AWS? dane uwierzytelniające (takie jak Twilio API) –

+0

Dlaczego nie chcesz przechowywać referencji w funkcji? Czy to nie jest bezpieczne? –

Odpowiedz

1

Zakładam, że nie odwołujesz się do poświadczeń AWS, ale raczej do zewnętrznych danych uwierzytelniających API?

Nie wiem, czy to świetne miejsce, ale znalazłem posty na forach AWS, na których ludzie umieszczają dane uwierzytelniające na S3.

To nie jest twój konkretny przypadek użycia, ale sprawdź ten wątek na forum.

https://forums.aws.amazon.com/thread.jspa?messageID=686261

Jeśli umieścisz poświadczenia na S3, po prostu upewnij się, że prawidłowo zabezpieczyć. Rozważ udostępnienie go tylko określonej roli IAM przypisanej tylko do tej funkcji Lambda.

2

Każda usługa pamięci masowej lub usługa bazy danych na AWS będzie w stanie rozwiązać problem tutaj. Pytanie brzmi: czego używasz w swojej obecnej funkcji AWS Lambda? Na tej podstawie, oraz następujące rozważania:

  • Jeśli trzeba to szybko i koszt nie jest problem, użyj Amazon DynamoDB
  • Jeśli trzeba go szybko i przeszkadza kosztów, należy Amazon ElastiCache (Redis lub Memcache)
  • Jeśli używasz już jakiś relacyjnej bazy danych, należy użyć Amazon RDS
  • Jeśli nie korzystasz z niczego i nie trzeba go szybko użyć Amazon S3

W każdym razie, musisz utworzyć pewne zasady bezpieczeństwa (zarówno rola IAM, jak i polityka wiaderek S3), aby umożliwić wyłączny dostęp między Lambdą a twoją pamięcią/bazą danych.

Uwaga: Amazon VPC wsparcie dla AWS Lambda jest tuż za rogiem, więc każde rozwiązanie wybierzesz, upewnij się, że znajduje się w tym samym VPC z funkcji Lambda (dowiedz się więcej na https://connect.awswebcasts.com/vpclambdafeb2016/event/event_info.html)

5

Chociaż nie to zrobić siebie, ale powinieneś być w stanie wykorzystać AWS KMS do szyfrowania/odszyfrowywania kluczy API z poziomu funkcji, nadając rola Lambda dostęp do kluczy KMS.

+0

Tak, usługa KMS to świetny sposób na przechowywanie zaszyfrowanych danych. – Jurgen

+0

KMS wydaje się dobrym podejściem. Tylko nie wiem, jak bardzo spowolni to czas przetwarzania lambda. – Nick

4

Ta funkcja została prawdopodobnie dodana do Lambdy po opublikowaniu tego pytania.

Dokumentacja AWS zaleca używanie zmiennych środowiskowych do przechowywania poufnych informacji. Są one zaszyfrowane (domyślnie) przy użyciu klucza AWS (aws/lambda) podczas tworzenia funkcji Lambda za pomocą konsoli AWS Lambda.

Wykorzystuje system AWS KMS i umożliwia: użycie klucza określonego przez AWS, lub wybranie własnego klucza KMS (wybierając Włącz pomocników szyfrowania); musisz wcześniej utworzyć klucz.

Od AWS DOC 1 ...

„Podczas tworzenia lub aktualizowania funkcji Lambda, które używają zmiennych, AWS Lambda szyfruje je za pomocą AWS Key Management Service.Kiedy wywoływana jest twoja funkcja Lambda, te wartości są odszyfrowywane i udostępniane do kodu Lambda.

Podczas pierwszego tworzenia lub aktualizowania funkcji Lambda wykorzystujących zmienne środowiskowe w regionie, domyślny klucz usługi jest tworzony automatycznie w ramach AWS KMS. Ten klucz służy do szyfrowania zmiennych środowiskowych. Jeśli jednak chcesz korzystać z narzędzi szyfrujących i używać KMS do szyfrowania zmiennych środowiskowych po utworzeniu funkcji Lambda, musisz utworzyć własny klucz AWS KMS i wybrać go zamiast domyślnego klucza. .. Klucz domyślny da błędy podczas wybrany”

klucz domyślny pewno nie«dać błędy podczas wybrany»- co sprawia, że ​​zastanawiam się, dlaczego oni umieścić go na liście rozwijanej w ogóle

Źródła:

Powiązane problemy