Как получить доступ к секретам API с помощью AWS Lambda?

Kak Polucit Dostup K Sekretam Api S Pomos U Aws Lambda



Лучшие практики сервисов AWS включают два действия: извлечение из хранилища и ротацию аудита. Объединив эти две практики в одну, AWS запустила Secret Manager, который помогает пользователям защитить секретную информацию своих приложений. AWS Secret Manager широко используется для создания, хранение , модификация , тиражирование и ротацию учетных данных базы данных, ключей API, токенов OAuth и т. д.

Краткое описание

В этой статье рассматриваются следующие аспекты:

Что такое AWS Lambda?

AWS Lambda — это вычислительный сервис для выполнения кодов в различных средах и на разных языках без предоставления серверов и управления ими. Кроме того, AWS Lambda может запускаться несколькими различными сервисами AWS, такими как корзина S3, шлюзы API и т. д. Этот сервис автоматически масштабирует приложение и эффективно выполняет код, не требуя от пользователя установки каких-либо дополнительных зависимостей.







Чтобы узнать больше о сервисе Lambda, обратитесь к этой статье здесь: «Начало работы с AWS Lambda» .



Что такое секретный менеджер AWS?

AWS Secret Manager позволяет пользователям защищать и шифровать конфиденциальная информация приложений, таких как токены OAuth, учетные данные базы данных, API и т. д. Эта конфиденциальная информация называется «секрет» . Доступ к этим секретам имеют только уполномоченные органы, и их можно менять в целях повышения безопасности.



Дополнительную информацию о хранении учетных данных RDS в Secret Manager можно найти в этой статье: «Как хранить учетные данные Amazon RDS с помощью Secret Manager?»





Как получить доступ к секретам API в AWS с помощью AWS Lambda?

Lambda обеспечивает встроенную поддержку нескольких сервисов, например. Корзина S3, шлюз API и диспетчер секретов. Лямбда-функции можно использовать для получения значения настроенных секретов. Используя секреты API в функциях AWS Lambda, пользователи могут взаимодействовать с несколькими сервисами AWS. Такие секреты API также важны для авторизации лямбда-функций.

Чтобы получить доступ к ключам API в AWS Secret Manager с помощью AWS Lambda, выполните следующие действия:



  • Шаг 1. Создайте секрет API
  • Шаг 2. Создайте политику IAM
  • Шаг 3. Создайте роль IAM
  • Шаг 4. Создайте роль Lambda

Шаг 1. Создайте секрет API

Прежде чем получить доступ к ключу API в AWS Secret Manager, мы сначала научимся создать секрет API . Для этого зайдите в «Секретный менеджер» обслуживание от Консоль управления AWS:

На Основная консоль Секретного менеджера AWS нажмите кнопку «Храни новый секрет» кнопка:

в «Секретный тип» блок, выберите «Другой секрет» вариант из различных отображаемых вариантов:

Прокрутите вниз до «Пары ключ/значение» раздел и предоставить уникальная пара ключ-значение для вашего секрета API. К добавлять более пары ключ-значение , нажать на 'Добавить ряд' кнопка:

Далее идет «Ключ шифрования» раздел. AWS предоставляет ключ шифрования по умолчанию для секрета. Однако пользователь также может указать собственное имя для ключа. Оставив настройки по умолчанию, нажмите кнопку « Следующий ' кнопка:

В этом интерфейсе пользователь должен предоставить уникальное имя за их тайну и описание, которое является необязательным поле здесь:

Сохраняя настройки без изменений , продолжайте дальше, нажав на кнопку « Следующий ' кнопка:

Далее идет Раздел обзора. Чтобы подтвердить все информация предоставлено правильный , нажать на ' Магазин Кнопка », расположенная в нижней части интерфейса:

Секрет был успешно создано . Нажать на ' Перезагрузить », чтобы отобразить имя секрета на Панель приборов :

Шаг 2. Создайте политику IAM

К создать политику IAM, получить доступ к IAM-сервис из консоли управления AWS:

Из боковая панель IAM сервис, нажмите на кнопку « Политика ' вариант:

На Консоль политики , нажать на «Создать политику» кнопка:

Дополнительную информацию о политике AWS IAM можно найти в этой статье: «Примеры политики AWS IAM»

Далее идет «Указать разрешения» раздел. Найдите и выберите «Секретный менеджер» услуга:

Прокрутите вниз до «Действия разрешены» блокировать. Здесь, на разных уровнях доступа, нажмите « Читать ' вариант. Выберите «Все действия чтения» возможность включить все чтение услуги по данному полису:

Прокрутить вниз к « Ресурсы » и нажмите на кнопку «Добавить АРН» вариант:

Вернитесь к Панель управления секретным менеджером AWS и щелкните имя секрета. Скопируйте « РНК » секрета под надписью « Секретный АРН метка из отображаемого интерфейса:

На Консоль сейчас , вставьте скопированный ARN в « РНК ' поле:

Прежде чем нажать на «Добавить ARN» кнопку, нажмите на кнопку 'Этот аккаунт' Кнопка, чтобы подтвердить, что секреты существуют в той же учетной записи. После настройки параметров нажмите кнопку «Добавить ARN» кнопка:

После настройка все настройки Политики нажмите на кнопку « Следующий ' кнопка:

в Разделы сведений о политике укажите имя политики в поле « Название политики ' поле:

Нажать на ' Создать политику ' кнопка:

политика был создан успешно :

Шаг 3. Создайте роль IAM

В этом разделе создайте роль IAM, которая содержит необходимые разрешения для функций Lambda для доступа к секретам. Для этого нажмите на кнопку « Роли » на боковой панели роли IAM, а затем коснитесь значка «Создать роль» кнопка из интерфейса:

После нажатия на «Создать роль» Кнопка, вам отобразится следующий интерфейс. Выберите «АВС сервис» вариант из следующих вариантов, так как мы будем прикреплять это Роль IAM с лямбда-функцией:

в «Случай использования» раздел, найдите Лямбда-сервис и выберите его. Ударь ' Следующий » в нижней части интерфейса, чтобы продолжить:

На следующий интерфейс , найдите название Название политики который мы настроили ранее. Из отображаемых результатов выберите название политики:

Нажмите кнопку « Следующий кнопку «внизу интерфейс для продолжения:

Обеспечить уникальный идентификатор для тебя Роль IAM в следующем выделенном поле:

Сохранение остальные настройки по умолчанию , нажать на «Создать роль» кнопку, прокрутив вниз до нижней части интерфейса:

Роль была успешно созданный:

Дополнительную информацию о создании роли IAM в AWS можно найти в этой статье: «Как создавать роли IAM в AWS» .

Шаг 4. Создайте лямбда-функцию

Следующим шагом будет создание лямбда-функции. Эта лямбда-функция будет содержать роль IAM и при выполнении получит значение секретов. Чтобы получить доступ к сервису Lambda, выполните поиск по запросу « Лямбда » в строке поиска Консоль управления AWS . Нажмите на имя службы в результатах, чтобы открыть консоль:

В начальном интерфейсе службы Lambda нажмите кнопку «Создать функцию» кнопка:

Это отобразит «Создать функцию» интерфейс. Выберите «Автор с нуля» и продолжите дальше, указав имя для Лямбда-функция в выделенном поле:

в Поле времени выполнения , выберите « Питон 3.9 ' среда:

Ниже Раздел времени выполнения , Eсть «Изменить роль исполнения по умолчанию» раздел. Выберите «Использовать существующую роль» а затем укажите роль в «Существующая роль» поле:

В том же интерфейсе коснитесь значка «Создать функцию» кнопка в нижней части интерфейса:

Чтобы узнать больше о создании лямбда-функции, обратитесь к этой статье: «Как создать лямбда-функцию с помощью среды выполнения Pyhton» .

Лямбда-функция создана. Следующий шаг — предоставить код функции Lambda. Когда этот код будет выполнен, он отобразит значения Секретный менеджер:

Импортировать JSON
Импортировать бото3
Импортировать база64
из ботокора. исключения Импортировать Ошибка клиента

защита лямбда_обработчик ( событие , контекст ) :
среда '=' событие [ 'окр.' ]
секретное_имя '=' 'shmaster19/%s/ключ' % среда
имя_региона '=' 'ап-юго-восток-1'

сессия '=' бото3. сессия . Сессия ( )
клиент '=' сессия. клиент (
наименование услуги '=' 'распорядитель секретов' ,
имя_региона '=' имя_региона
)

пытаться :
secret_value_response '=' клиент. get_secret_value (
Секретный идентификатор '=' секретное_имя
)
кроме ClientError как ошибки :
Распечатать ( ошибка )
еще :
если 'Секретная строка' в secret_value_response :
секрет '=' json. нагрузки ( secret_value_response [ 'Секретная строка' ] )
возвращаться секрет
еще :
decoded_binary_secret '=' база64. b64декодировать ( secret_value_Response [ «Секретный двоичный файл» ] )
возвращаться decoded_binary_secret
  • импортировать JSON: используется для выполнения операций JSON.
  • импортировать бото3: это SDK для связи между AWS и Python.
  • импортировать базу64: Используется для выполнения функций кодирования и декодирования двоичных данных в формате Base64.
  • импортировать ClientError: Это позволяет пользователям обрабатывать исключения в написанном коде.
  • секретное_имя: В этой переменной укажите имя вашего секрета. Обратите внимание, что этот секрет содержит «%s» . Это когда у пользователя есть несколько ключей одинакового формата. Например, если пользователь создал два секрета, например: «apikey/dev/ключ» и «apikey/prod/ключ» . Затем в «%s» , если пользователь предоставляет « разработчик », функция Lambda предоставит ключ развития (apikey/dev/key) и наоборот.
  • бото. сеанс.Сессия(): позволяет пользователям создавать клиентов служб и ответов.
  • имя_региона: Укажите название региона, в котором настроен ваш секрет AWS.
  • Секретное_значение_ответ: В этой переменной мы используем « client.get_secret_value ” функция, которая вернет значение секрета.
  • Decoded_binary_secert: После получения значения секрета он в дальнейшем будет декодирован в базовый формат 64 .

После вставки кода в лямбда-функцию нажмите « Развертывать Кнопка », чтобы сохранить и применить изменения:

Шаг 5. Тестирование кода

В этом разделе блога мы проверим, работает код или нет. Для этого нажмите на кнопку « Тест Кнопка » после успешного развертывания изменений в функции Lambda:

В следующем интерфейсе укажите название теста мероприятие в 'Название события' поле:

Прокрутите вниз до Раздел JSON события , укажите « окружение ” и укажите значение в формате JSON. « ценить ” ключа будет передано «%s» . Поскольку указанные нами секреты содержат « разработчик значение, « разработчик значение передается в параметр « окружение ' переменная. Функция Lambda будет идентифицировать секрет при выполнении кода, поскольку идентификатор конкретного секрета указан в коде. После указания реквизитов нажмите на кнопку « Сохранять ' кнопка:

Когда событие будет успешно создано, нажмите кнопку « Тест ' кнопка:

Здесь у нас есть успешно получен значение указанного нами секрета:

Это все из этого руководства.

Заключение

Чтобы получить доступ к ключам API в Secret Manager с помощью Lambda, сначала создайте секрет API, политику IAM, роль и функцию Lambda и выполните код функции. Лямбда-функции можно вызывать для получения значений AWS Secret Manager, указав идентификатор секрета при выполнении кода. В этой статье представлены пошаговые инструкции по получению доступа к ключам API в AWS Secret Manager с помощью AWS Lambda.