我有幾個小型的Google App Engine應用訪問相同的Cloud SQL實例(以節省資源),我不想限制這些個人的訪問權限每個應用的數據庫例如。只允許Google App Engine應用訪問一個Cloud SQL實例數據庫
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
)作爲應用程序具有root權限。
Google seems to allow this through an external IP address
一個顯而易見的解決方案可能是有許多單獨的實例爲每個應用程序,但是這是低效的小型應用程序,像一朵雲SQL數據庫可以同時運行多個網站。
有沒有其他解決方案,或者我的策略對Google雲SQL不起作用?
你能稍微詳細一點嗎?我沒有IPv4地址來改變mysql,我可以臨時啓用此功能,添加用戶並禁用它,或者我的應用程序現在需要將ipv4與新用戶帳戶連接起來才能訪問mysql實例? – Kivylius
你的主機名不需要改變,你只需創建用戶'''CREATE USER'app1_user'@'localhost'IDENTIFIED BY'some_pass';'''並授予該用戶只有他的數據庫'''GRANT ALL 「app1_user'@'%' - > WITH GRANT OPTION;''' – koma