Как AWS аутентифицирует мой подписанный запрос - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь понять, как аутентификация запроса работает на AWS. Есть часть, которую я не могу понять.

Существует много документации о том, как подписать запрос, используя ваш секретный ключ доступа, и как отправить эту подпись вместе с вашим ключом доступа на AWS.
Но есть только одно предложение о том, как AWS пересчитывает эту подпись для проверки подлинности запроса. Он говорит, что AWS выбирает секретный ключ на основе ключа доступа и пытается пересчитать подпись для сравнения.
Но что означает это fetch ?
Do они хранят мой секретный ключ вместе с моим ключом доступа и просто ищут его? Или они могут восстановить мой секретный ключ на основе ключа доступа? Может кто-то пролить свет на это, потому что ясно одно: AWS нужен мой секретный ключ для пересчета подписи, потому что я использовал его для вычисления в первую очередь.

1 Ответ

0 голосов
/ 07 апреля 2020

TL; DR - AWS не раскрывает, как ключи хранятся и извлекаются.

Как вы сказали, AWS определенно использует ваш секретный ключ доступа для воссоздания подписи. Я не могу найти документацию от AWS о том, как секретный ключ доступа вызывается для этой цели. Ниже приведена полная ссылка, но здесь приведен поток, на который вы ссылались:

enter image description here

AWS учитывает идентификатор ключа доступа AWS и секретный доступ Ключ должен быть похож на имя пользователя и пароль.

Как имя пользователя и пароль, вы должны использовать оба идентификатора ключа доступа и секретный ключ доступа для аутентификации ваших запросов.

К вашим конкретным c вопросам :

Они хранят мой секретный ключ вместе с моим ключом доступа и просто ищут его?

AWS (насколько мне известно) не опубликовали, как они хранят любой ключ, но я бы предположил, что это похоже на то, как Unix хранит пароли, т. е. пользователь (идентификатор ключа доступа) находится в виде простого текста, а пароль (секретный ключ доступа) либо зашифрован, либо хеширован. Это безопасно и не может быть просмотрено.

Или они могут сгенерировать мой секретный ключ на основе ключа доступа?

Нет, как только сгенерирован секретный ключ доступа в первый раз он не может быть сгенерирован снова.

Вы можете получить секретный ключ доступа только при первоначальном создании пары ключей. Как и пароль, вы не сможете восстановить его позже. Если вы его потеряете, вы должны создать новую пару ключей.

Ссылки

Ключи доступа и секретные ключи доступа
Чтобы получить AWS идентификатор доступа и секретный ключ
V4 Аутентификация запросов

...