Вращение секретов RDS в AWS с открытыми соединениями - PullRequest
0 голосов
/ 08 января 2019

Если секреты вращаются, когда в данный момент открыто соединение с RDS, будет ли это соединение по-прежнему запрашивать базу данных или оно станет неактивным?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Большинство баз данных, включая все базы данных в RDS, не закрывают сеансы / соединения при смене пароля (например, см. Этот ответ для oracle ). Для завершения сеансов требуются явные команды завершения.

Если вы используете Java и диспетчер пулов соединений, вы можете использовать предоставляемую AWS JDBC-оболочку для автоматического получения последнего пароля, когда ваши соединения необходимо восстановить.

Я могу проверить это:

  • Раскрутка экземпляра MySQL RDS
  • Хранение мастер-пароля в Secrets Manager
  • Настройка ротации одного пользователя через консоль
  • Подключение к БД с помощью MySQL CLI
  • Проверьте соединение с помощью запроса
  • Оставьте соединение открытым, запустив подоболочку из CLI
  • Дамп текущего пароля
  • Запустите асинхронное вращение и немного подождите
  • Проверьте вращение, набрав новый пароль
  • Вернитесь к существующему соединению MySQL в CLI, выйдя из подоболочки
  • Выполнить другой запрос

    $ mysql -h testdb -Dmysql -u root -p$(aws --region us-east-2 secretsmanager get-secret-value --secret-id testdb-root --query SecretString --output text | jq -r '.password')
       ...
    mysql> select user from user;
    +-----------+
    | user      |
    +-----------+
    | root      |
    | mysql.sys |
    | rdsadmin  |
    +-----------+
    3 rows in set (0.05 sec)

    mysql> \! bash
    $ # Show current password
    $ aws --region us-east-2 secretsmanager get-secret-value --secret-id testdb-root --query SecretString --output text | jq -r '.password'
    3%c70'-e9s<Dy5ecX-(0mV%&E6Y[<jnJ
    $ aws --region us-east-2 secretsmanager rotate-secret --secret-id testdb-root
       ...
    $ sleep 60 # Give rotation time to complete
    $ aws --region us-east-2 secretsmanager get-secret-value --secret-id testdb-root --query SecretString --output text | jq -r '.password'
    .z,B{,P]jE~pr3?0mZ5H,6rJi;aXrQVO
    $ exit
    mysql> select user from user;
    +-----------+
    | user      |
    +-----------+
    | root      |
    | mysql.sys |
    | rdsadmin  |
    +-----------+
    3 rows in set (0.05 sec)

0 голосов
/ 08 января 2019

Если вы повернете пароль для учетной записи пользователя, пользователи будут отключены от базы данных, пока не получат новый пароль.

Общая стратегия состоит в том, чтобы иметь две учетные записи пользователей (user1 и user2) и поворачивать их пароли в шахматном порядке. Учетные данные для user1 будут работать, пока клиенты обнаружат user2 и начнут его использовать. Обратите внимание, чтобы это было эффективным, клиенты должны будут периодически проверять наличие обновленных учетных данных.

https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-two-users.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...