Назад | Перейти на главную страницу

Как отключить возможность сброса пароля для пользователя мастер-инстанса БД?

Недавно я столкнулся со случаем, когда разработка велась для учетной записи, предоставленной клиентом, и пользователи IAM не были настроены, поэтому все входили в систему через учетную запись root (здесь, очевидно, есть проблемы).

Экземпляр RDS, на котором запущен экземпляр Aurora "Writer", совместимый с MySQL 5.6, неожиданно сбросил пароль пользователя главного экземпляра БД, что вызвало множество проблем. Есть ли способ отключить эту возможность, подтверждающую, что данные будут невозможно восстановить, если учетные данные для доступа были потеряны?

Я не думаю, что есть способ явно заблокировать изменение мастер-пароля. Вы можете использовать IAM, чтобы заблокировать изменение свойств экземпляров RDS (я думаю, разрешение RDS IAM ModifyInstance), но это не только предотвратит изменение пароля, но и любую модификацию экземпляра.

Лучший вариант, который я могу придумать, - это создать более одного master level учетная запись. По сути:

mysql> CREATE USER 'new_master_user'@'%' IDENTIFIED BY 'password';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'new_master_user'@'%' WITH GRANT OPTION;

Либо использовать эту учетную запись в качестве бэкдора на случай, если у вас снова возникнет эта проблема, либо предоставить учетные записи с этими разрешениями вместо фактической основной учетной записи? (obvs. вам действительно следует использовать минимум привилегий / не делиться паролями / [вставьте сюда свои лучшие практики] - но я предполагаю, что вы уже это знаете :).