2015-05-01 7 views
3

У меня есть несколько небольших приложений приложений Google App, которые получают доступ к одному и тому же экземпляру Cloud SQL (для экономии ресурсов), и я не хочу ограничивать доступ к этим индивидуальным базы данных для каждого приложения; например.Разрешить доступ к приложению приложения Google App Engine только к одной базе данных SQL Server

1. CoolApp5 ---> global_db_instance -> coolapp5_db 
2. EatFood ----> global_db_instance -> eatfood_db 
3. WebsiteCo --> global_db_instance -> websiteco_db 

Configuring Google Could SQL Instance Access

Нынешняя система, кажется, позволяет для приложений, чтобы иметь доступ к глобальным базам данных экземпляра, но и создает уязвимость. Если злоумышленник получит доступ к базе данных с истинным одним приложением (coolapp5/eatfood или websiteco), он получит доступ к базам данных всех.

Например. Wordpress сайтов для CoolApp5

<?php // wp-config.php 
    define('DB_HOST', ':/cloudsql/global_db_instance:db'); // 
    define('DB_USER', 'root'); 
    define('DB_PASSWORD', ''); 
    define('DB_NAME', 'coolapp5_db'); 
?> 

Как вы можете видеть, приложение coolapp5 имеет доступ к coolapp5_db и может получить доступ к другой базе данных (eatfood_db, websiteco_db), как приложение имеет корневой доступ.

Google seems to allow this through an external IP address

Очевидным решением было бы иметь много отдельных экземпляров для каждого приложения, но это неэффективно для небольших приложений, как базы данных Cloud SQL может работать несколько веб-сайтов одновременно.

Есть ли другое решение или моя стратегия просто не будет работать для Google Cloud SQL?

ответ

3

Установите пользователей MySQL на базу данных/приложение (docs) в одном экземпляре Cloud SQL и предоставите доступ к этим новым пользователям только для необходимой им базы данных.

+0

Можете ли вы немного уточнить? У меня нет IPv4-адреса для внесения изменений в mysql, могу ли я временно включить эту функцию, добавить пользователей и отключить ее, или теперь моим приложениям необходимо подключить true ipv4 к новым учетным записям пользователей, чтобы получить доступ к экземпляру mysql? – Kivylius

+0

Ваше имя хоста не нужно изменять, вам нужно создать пользователей '' 'CREATE USER 'app1_user' 'localhost' IDENTIFIED BY 'some_pass';' '' и предоставить этому пользователю доступ только к его db '' 'GRANT ALL ПРИВИЛЕГИИ НА app1_db. * TO 'app1_user' @ '%' -> WITH GRANT OPTION; '' ' – koma

Смежные вопросы