AWS Аутентификация IAM до MySQL из кода ядра do tnet, работающего в Lambda - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть лямбда-функция, написанная на do tnet core 2.1. В этом коде используется поставщик Oracle MySql (v8.0.19). MySQL RDS (v5.7.26) запущен с пользователем, настроенным на использование AWSAuthenticationPlugin, как описано в статье AWS, приведенной ниже.

Я могу подключиться к этому RDS, используя обычное имя пользователя / пароль, но вместо этого я хочу использовать аутентификацию IAM. В этой статье описывается, как сделать это с помощью клиента mysql на сервере linux: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.html

Я создал политику IAM и могу загрузить токен в лямбда-функции через RDSAuthTokenGenerator.GenerateAuthToken. Строка подключения строится следующим образом:

MySqlConnection c = new MySqlConnection();
MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder();
csb.Server = "dbinstanceName.xxx.us-xxx-1.rds.amazonaws.com";
csb.Port = 3306;
csb.Database = "Database";
csb.UserID = "DatabaseUserName";
csb.Password = RDSAuthTokenGenerator.GenerateAuthToken("dbinstanceName.xxx.us-xxx-1.rds.amazonaws.com", 3306, "DatabaseUserName");
csb.SslMode = MySqlSslMode.VerifyFull;
c.ConnectionString = csb.ConnectionString;

Когда я передаю этот токен в качестве значения пароля в строке подключения, я получаю исключение:

"errorType": «MySqlException», «errorMessage»: «Метод аутентификации« mysql_clear_password »не поддерживается ни одним из доступных плагинов».

В этой статье MySQL описывается аутентификация с использованием открытого текста на стороне клиента (https://dev.mysql.com/doc/refman/5.7/en/cleartext-pluggable-authentication.html), однако я не знаю, как включить этот плагин в MySQL провайдере в do tnet.

Может кто-нибудь предложить способ отправить этот токен RDS в строке подключения открытым текстом в ядре do tnet? Я не могу понять, как это делается.

1 Ответ

0 голосов
/ 13 февраля 2020

Я смог сделать эту работу с помощью другого MySQL провайдера. Если вы застряли, попробуйте использовать вместо этого провайдера MySqlConnector:

https://mysqlconnector.net/

С этим провайдером мне не пришлось ничего менять в строке кода / соединения выше.

Надеюсь, это полезно для кого-то еще.

...