Безопасное подключение кода PHP на Compute Engine к Cloud SQL

Я пытаюсь подключить drupal cms, работающий на экземпляре Compute Instance, к базе данных Cloud SQL, но все попытки комбинации терпят неудачу. Я могу подключиться к Cloud SQl с другого сервера, но я не уверен, какой путь проходит MySQL-соединение от моего экземпляра до Cloud SQL, но также хочу настроить как можно более безопасное соединение с сервером db и обратно.

Вот конфигурация, которая у меня есть

Серверы

  • Cloud SQL с назначенным внешним IP-адресом. Также авторизованный внешний IP-адрес вычислительного экземпляра и IP-адрес независимого сервера для подключения.
  • Вычислительный экземпляр с внешним IP-адресом, успешно запускающий apache и php в Интернете
  • Попытка настроить соединение с базой данных из веб-браузера в соответствии с шагом 4 https://drupal.org/documentation/install/run-script для кода drupal, запущенного на вычислительном экземпляре
  • Независимый сервер с доступным из Интернета IP-адресом

Пользователи

  • Пароль пользователя root SQL установлен и успешно используется для подключения с независимого сервера с помощью Workbench
  • Пользователь Db с хоста% создан для доступа к базе данных drupal и может успешно подключаться с независимого сервера с помощью рабочей среды.
  • Тот же пользователь БД не подключается к вычислительному экземпляру

Сеть

  • Запуск ifconfig на вычислительном экземпляре показывает только частный IP-адрес
  • Я открыл 3306 в брандмауэре Google и брандмауэре экземпляра

У меня вопрос: как мне заставить вычислительный экземпляр подключиться к облачному SQL, указав dbname, dbusername, dbuserpwd, host (IPAddress), чтобы он подключался точно так же, как workbench, но при этом имел как можно более ограниченные ограничения? Проблема связана с конфигурацией вычислительного экземпляра, используемыми настройками подключения или облачным sql


person mobcdi    schedule 02.04.2014    source источник
comment
При подключении drupal, работающего в движке приложений, к CloudSQL используется localhost, но это вряд ли применимо к GCE, не так ли?   -  person mobcdi    schedule 02.04.2014
comment
Нужно ли указывать имя экземпляра CloudSQL?   -  person mobcdi    schedule 02.04.2014
comment
не могли бы вы уточнить подробности, но все же максимально ограничили их? . Почему вы не чувствуете, что в настоящее время достигли этого с помощью Compute Engine ?. Кроме того, если вы хотите подключиться максимально безопасно, вам следует зашифровать свое подключение с помощью SSL и отклонить подключения без SSL.   -  person Juan Enrique Muñoz Zolotoochin    schedule 02.04.2014
comment
Я имею в виду не идти простым (неправильным) путем и открывать MySQL-соединения с любого IP-адреса.   -  person mobcdi    schedule 03.04.2014
comment
Ну, добавив в белый список только тех IP-адресов, которые вам нужны, включая IP-адрес экземпляра GCE.   -  person Juan Enrique Muñoz Zolotoochin    schedule 03.04.2014


Ответы (1)


Похоже, это комбинация проблемы drupal, когда значение хоста отбрасывается или опускается установщиком, и проблема принудительного применения защиты SELinux, которая ограничивает удаленные подключения к базе данных из CentOS, которая является гостевой ОС, которую я использовал

Также может возникнуть необходимость переименовать файлы с их правильной меткой SELinux после добавления их в корневую веб-папку.

Чтобы решить эту проблему: отредактируйте файл settings.php drupal 7 самостоятельно, чтобы включить соединение mysql.

$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'database' => 'dbname',
      'username' => 'dbuser',
      'password' => 'dbpassword',
      'host' => 'CloudSQLIPAddress',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);

и из ssh внутри экземпляра GCE под управлением CentOS запустите команду ниже, чтобы разрешить подключения к базе данных, я не думаю, что этот параметр переживет перезагрузку сервера, но я могу жить с ним для своих нужд

 setsebool httpd_can_network_connect_db=1

Чтобы повторно применить контекст SElinux к скопированным файлам, запустите этот

restorecon -rv /var/www/html 
person mobcdi    schedule 03.04.2014