AWS: как аутентифицировать автоматизированный запрос?

Вопрос или проблема

У меня есть API-сервис, который в настоящее время использует обычные хранимые секреты в качестве метода аутентификации, работающий в AWS. Сейчас у меня есть требование обеспечить аутентификацию автоматических запросов. Я бы предпочел не использовать хранимый секрет на стороне клиента для поддержки этого. Я полагаю, что у AWS есть механизм для идентификации машины (подтверждение источника EC2 instance достаточно для моих целей) с использованием подписанных документов. Но как создать такой документ на клиенте? Как его проверить на сервере?

Я думаю, что мне, возможно, нужен AWS Security Token Service – но трудно найти соответствующую документацию.

Авторизация реализована внутри API – поэтому мне нужно проверить личность вызывающей стороны, прежде чем API сможет авторизовать запрос.

(клиент в настоящее время является shell-скриптом, в то время как aws-cli, openssl и python доступны).

.

Ответ или решение

Для автоматизации аутентификации запросов в AWS без использования хранимых секретов на стороне клиента, вы можете воспользоваться механизмом, включающим подписанные документы от AWS. Ваша текущая задача заключается в реализации аутентификации для автоматизированных систем, где EC2-инстансы будут выполнять роль клиентов.

Подробное руководство по аутентификации автоматизированных запросов в AWS:

Шаг 1: Создание документа аутентификации на стороне клиента

Для создания документа, удостоверяющего личность EC2-инстанса, вы можете использовать сервис AWS Instance Identity Document (IID). AWS предоставляет возможность инстансам EC2 запрашивать и подписывать документы через HTTP-запросы к локальному эндпоинту мета-данных инстанса.

Действия:

  1. Запросите Instance Identity Document (IID):
    Используйте команду curl или аналогичный инструмент в вашем скрипте для запроса документа удостоверения инстанса:

    curl http://169.254.169.254/latest/dynamic/instance-identity/document
  2. Получите и подпишите документ:
    Этот документ можно подписать с помощью OpenSSL, чтобы убедиться в его подлинности или воспользоваться встроенными функциями EC2 для получения подписи.

Шаг 2: Проверка документа на стороне сервера

После того как документ будет получен и подписан, необходимо настроить сервер API для подтверждения подлинности источника запроса на основании полученного документа.

Действия:

  1. Использование AWS SDK или CLI для проверки:
    На стороне сервера установите библиотеку AWS SDK для выбранного вами языка (например, Python, если вы используете Boto3) или используйте AWS CLI для верификации.

  2. Верификация Instance Identity Document:
    На серверной стороне выполните валидацию подписи документа с помощью сертификатов AWS, чтобы подтвердить подлинность и происхождение EC2-инстанса.

  3. Интеграция с системой авторизации:
    После верификации документа интегрируйте информацию с системой авторизации API, чтобы разрешить или отказать в доступе к ресурсам.

Заключение

Использование AWS Instance Identity Documents предоставляет надежный способ удостоверения личности EC2-инстанса без применения хранимых секретов на стороне клиента. Применение этой стратегии позволит вам повысить уровень безопасности автоматизированных запросов и интегрировать данные аутентификации с текущей системой авторизации.

Эти шаги обеспечат безопасность вашего API и устранение зависимостей от хранимых секретов, а также облегчат дальнейшее масштабирование и управление инфраструктурой.

Оцените материал
Добавить комментарий

Капча загружается...