Краткое описание
В этой статье рассматриваются следующие аспекты:
- Что такое лямбда?
- Что такое секретный менеджер AWS?
- Как получить доступ к секретам API в AWS с помощью AWS Lambda?
- Заключение
Что такое 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.