【问题标题】:Allow Google App Engine app access to only one Cloud SQL Instance database仅允许 Google App Engine 应用访问一个 Cloud SQL 实例数据库
【发布时间】:2015-07-11 06:53:08
【问题描述】:

我有一些小型 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),他将有权访问所有数据库。

例如。 CoolApp5 的 Wordpress 网站

<?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

一个明显的解决方案可能是为每个应用创建多个单独的实例,但这对于小型应用来说效率很低,因为 Cloud SQL 数据库可以同时运行多个网站。

是否有任何其他解决方案或者我的策略根本不适用于 Google Cloud SQL?

【问题讨论】:

    标签: google-app-engine google-cloud-sql


    【解决方案1】:

    在单个 Cloud SQL 实例中为每个数据库/应用程序 (docs) 设置 MySQL 用户,并仅向这些新用户授予对他们需要的数据库的访问权限。

    【讨论】:

    • 你能稍微详细点吗?我没有 IPv4 地址来更改 mysql,我可以临时启用此功能,添加用户并禁用它,还是我的应用程序现在需要将 ipv4 与新用户帐户连接,才能访问 mysql 实例?
    • 您的主机名不需要更改,您只需创建用户CREATE USER 'app1_user'@'localhost' IDENTIFIED BY 'some_pass';并授予该用户访问他的数据库GRANT ALL PRIVILEGES ON app1_db.* TO 'app1_user'@'%' -&gt; WITH GRANT OPTION;的权限
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 2018-06-25
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多