Amazon S3 bezpośrednie przesyłanie plików z przeglądarki klienta - ujawnienie klucza prywatnego

Implementuję bezpośrednie przesyłanie plików z komputera klienckiego do Amazon S3 za pośrednictwem interfejsu API REST przy użyciu tylko JavaScript, bez żadnego kodu po stronie serwera. Wszystko działa dobrze, ale jedno mnie martwi ...

Kiedy wysyłam żądanie do API REST Amazon S3, muszę podpisać żądanie i wstawić podpisAuthentication nagłówek. Aby utworzyć podpis, muszę użyć mojego tajnego klucza. Ale wszystko dzieje się po stronie klienta, więc tajny klucz można łatwo ujawnić ze źródła strony (nawet jeśli zaciemniam / szyfruję moje źródła).

Jak sobie z tym poradzić? Czy to w ogóle problem? Może mogę ograniczyć konkretne użycie klucza prywatnego tylko do wywołań API REST z określonego Origins i tylko do metod PUT i POST, a może klucza do tylko S3 i konkretnego wiadra? Może istnieją inne metody uwierzytelniania?

Rozwiązanie „bez serwera” jest idealne, ale mogę rozważyć włączenie przetwarzania serwerów, z wyłączeniem przesyłania pliku na mój serwer, a następnie wysyłania do S3.

questionAnswers(9)

yourAnswerToTheQuestion