2015-05-01 53 views
3

我有幾個小型的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不起作用?

回答

3

在單個Cloud SQL實例中爲每個數據庫/應用程序(docs)設置MySQL用戶,並將這些新用戶的訪問權授予他們所需的數據庫。

+0

你能稍微詳細一點嗎?我沒有IPv4地址來改變mysql,我可以臨時啓用此功能,添加用戶並禁用它,或者我的應用程序現在需要將ipv4與新用戶帳戶連接起來才能訪問mysql實例? – Kivylius

+0

你的主機名不需要改變,你只需創建用戶'''CREATE USER'app1_user'@'localhost'IDENTIFIED BY'some_pass';'''並授予該用戶只有他的數據庫'''GRANT ALL 「app1_user'@'%' - > WITH GRANT OPTION;''' – koma

相關問題