Хранилище параметров AWS для проекта автоматизации тестирования
16 апреля 2022 г.Я люблю, чтобы все было организовано и легко управлялось. Секретные данные в коде не исключение. Ранее я написал руководство [как использовать менеджер секретов AWS] (https://medium.com/geekculture/aws-secrets-manager-for-test-automation-project-2958331a8309). А теперь я хочу, чтобы вы рассмотрели еще одно решение — [Хранилище параметров AWS Systems Manager] (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html ).
Он обеспечивает безопасную и иерархическую систему хранения и управления секретными данными, такими как пароли, секретные параметры, лицензии и т. д. Вы можете избежать рутины с удобно управляемыми секретными файлами, которыми вы должны поделиться с каждым членом команды и добавить к каждому заданию Jenkins. Просто добавьте их в централизованное хранилище и настройте извлечение через AWS API.
Большим преимуществом Parameters Store является то, что вы можете сохранить любую часть данных вместо AWS Secrets Manager, где вы можете выбрать только определенный формат. Давайте настроим некоторые секреты и посмотрим, как это работает на практике.
Представьте, что мы хотим сохранить licence.xml для какой-то библиотеки.
```разметка
<ЛИЦЕНЗИФАЙЛ>
<ИМЯ ФУНКЦИИ="MyFeatureName">
<НАСТРОЙКА MAJOR_VERSION="1"/>
<НАСТРОЙКА MINOR_VERSION="0"/>
<НАСТРОЙКА КОНЕЦ="2018-01-01"/>
<НАСТРОЙКА IP-АДРЕСА="123.123.123.123"/>
<НАСТРОЙКА ИМЯ ПОЛЬЗОВАТЕЛЯ="Джон"/>
Найдите хранилище параметров и откройте главную страницу.
Нажмите кнопку «Создать параметр» и перейдите на страницу конфигурации.
Введите секретное имя и выберите тип «SecureString».
Поместите секретные данные в поле значения и следуйте «Создать параметр».
Вот и все, секрет создан!
Чтобы сделать его доступным для целевых пользователей, необходимо предоставить разрешения с помощью политики, позволяющей читать параметры:
```json
«Версия»: «2012-10-17»,
"Заявление": [
"Сид": "VisualEditor0",
«Эффект»: «Разрешить»,
"Действие": "ssm:GetParameter",
"Ресурс": "*"
А теперь давайте получим это из кода. Добавьте SSM-зависимость в свой проект, создайте остаточный клиент, выполните запрос на получение с расшифровкой и используйте полученный секрет.
```разметка
<зависимость>
<версия>1.12.186
```java
Клиент AWSSimpleSystemsManagement = AWSSimpleSystemsManagementClient
.строитель()
.withCredentials (новый AWSStaticCredentialsProvider (новый BasicAWSCredentials (accessKey, secretKey)))
.строить();
var getParameterRequest = новый GetParameterRequest()
.withName("licence.xml")
.withWithDecryption (истина);
Строковая лицензия = client.getParameter(getParameterRequest).getParameter().getValue();
LicenseReader.read(лицензия);
Таким образом, вы можете хранить и извлекать любые данные, которые могут быть десериализованы из строки в любой интересующий вас объект.
Вывод
Хранилище параметров — это безопасная и масштабируемая служба управления секретами без серверов для управления. В случае с разными типами секретных данных это выглядит универсальным решением для всех. Это отличный способ управлять строгими вещами в вашем проекте.
Оригинал