Не оставляйте пароли в своем коде; Вместо этого используйте менеджер секретов AWS — CloudSavvy IT

1 min


менеджер всплесков секретов

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

Что делает менеджер секретов?

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

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

Лучшее решение Секреты Менеджера, Вместо того, чтобы хранить пароль MySQL в виде открытого текста, вы сохраняете его в Secrets Manager, а когда вам нужно его использовать, вы выполняете API-вызов Secrets Manager, который возвращает секрет. Это позволяет вам обезопасить доступ к своим секретам с помощью ролей и разрешений IAM, которая является гораздо лучшей системой и которую вы уже используете, если ваша компания работает на AWS.

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

Просто чтобы прояснить — Менеджер секретов не делает автоматическую обработку важных секретов тривиальной. В конце концов, вы все еще запрашиваете конфиденциальную информацию, которая будет храниться на диске или в памяти на вашем сервере. Любой, кто сможет получить доступ к серверу, все равно сможет получить доступ к секрету, и вам потребуется хорошая политика разрешений IAM для блокировки доступа. Однако без Secrets Manager вы вообще не сможете управлять этим доступом с помощью IAM, и потенциально у вас будут важные ключи, хранящиеся в других местах, например в легко доступных репозиториях Git.

Менеджер секретов может быть использован для хранения любых ключей, включая JSON. Однако он обычно используется для хранения учетных данных базы данных и поэтому имеет встроенную интеграцию для RDS, которая может автоматически настраивать и поворачивать учетные данные для вас.

Как использовать Secrets Manager

Перейдите к консоли диспетчера секретов и нажмите «Сохранить новый секрет».

хранить новый секрет

Если вы настраиваете секрет для хранения учетных данных для RDS или любой другой службы БД AWS, вы можете выбрать его в качестве типа, ввести имя пользователя и пароль и выбрать базу данных, которую вы хотите использовать с этим секретом.

хранить ключ RDS

Если вы храните что-то еще, вам нужно выбрать «Другой тип секрета». Если вы храните серию пар ключ-значение, вы можете ввести их здесь, но если у вас более сложная схема JSON, вы можете ввести все это в виде открытого текста на вкладке «Открытый текст».

хранить в секрете

Нажмите «Далее», дайте ему имя и любые теги, которые вы можете добавить для организационных целей.

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

настроить вращение

Нажмите «Далее» и нажмите «Магазин», чтобы создать секрет.

Доступ к секрету довольно прост. Если у вас установлен и настроен интерфейс командной строки AWS с пользователем или ролью, у которых есть разрешение на получение секрета, вы можете получить к нему доступ, используя secretsmanager get-secrete-value, Это возвращает вывод JSON, так что вы, вероятно, захотите передать его jq для обработки.

aws secretsmanager get-secret-value --secret-id Confidential_Info | jq

вывод секретного значения

Это возвращает некоторые метаданные о вашей строке, а также саму строку в SecretString параметр. Он закодирован в одну строку, но вы можете использовать jq«s fromjson директива для возврата фактического значения JSON строки.

| jq '.SecretString | fromjson'

разобрали с jq

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

Если вы хотите автоматизировать создание секретов, вы можете сделать это с create-secret:

aws secretsmanager create-secret --name  --secret-string 

Настройка доступа к IAM

Вы захотите настроить пользовательские политики IAM для предоставления доступа на чтение к отдельным секретам на основе имени ресурса Amazon (ARN). В консоли управления IAM создайте новую роль (или измените существующую роль вашего экземпляра EC2) и добавьте доступ «Чтение» для Secrets Manager.

доступ для чтения для секрета

Ниже вы хотите добавить ARN для ограничения доступа. Введите секретный идентификатор и нажмите «Добавить».

секрет АРН

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


0 Comments

Ваш адрес email не будет опубликован. Обязательные поля помечены *