Как разрешить другим пользователям моего приложения доступ к RDS со своего компьютера? - PullRequest
0 голосов
/ 07 мая 2019

Я создаю инвентарную заявку для своей компании. В приложении есть информация об инвентаризации, хранящаяся в RDS. Я использую MySQL и имею pymysql для подключения. На протяжении всей разработки у меня не было проблем с подключением с ноутбука, с которого я создал базу данных. Я хочу знать, как разрешить другим компьютерам с приложением для подключения. Есть ли способ избежать добавления каждого отдельного IP-адреса в группу безопасности? Мне бы хотелось, чтобы те, у кого загружено приложение, имели доступ без дополнительных учетных данных.

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

pymysql.connect(db=dbname, host=host, port=port, user=user, password=password)

enter image description here

1 Ответ

0 голосов
/ 08 мая 2019

Примечание по безопасности:

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

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

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

Лучше всего будет предоставить API и заставить приложения использовать API для доступа к данным:

  • API должен управлять аутентификацией , чтобы вы могли определить, кому разрешить вход и, что более важно, отследить, кто что делает.Это также позволит избежать необходимости добавления каждого отдельного IP-адреса пользователей, поскольку вы будете управлять уровнем аутентификации.
  • API будет применять уровень бизнес-логики вместо того, чтобы разрешатьудаленное приложение, чтобы делать все, что пожелает.Это лишает удаленных пользователей возможности делать такие вещи, как удаление всей базы данных.Это также означает, что вместо того, чтобы удаленные приложения просто передавали оператор SQL, они должны будут передавать информацию через определенный API (обычно в форме Action + Parameters).
  • Он обеспечивает стабильный интерфейс в приложение, позволяющее вносить изменения в бэкэнд (например, изменять содержимое таблицы), в то же время представляя тот же интерфейс для клиентских приложений.

Правило большого пальца: Только один сервер приложений должен иметь прямой доступ к данной базе данных.У вас может быть несколько серверов, на которых работает одно и то же программное обеспечение, чтобы обеспечить высокую доступность и поддерживать высокую нагрузку на трафик, но не позволяйте клиентским приложениям напрямую обращаться к базе данных.Вот что делает «трехуровневое» приложение намного лучше, чем «двухуровневое».(Client - Server - Database)

...