阅读Bluemix™ 基础系列 后,您应该知道如何在 Bluemix 上创建和使用新的数据库。但是如果您在自己的数据中心已有一个包含必要信息的数据库,您应该怎么做?
在本教程中,您将了解如何使用 Bluemix Secure Gateway 服务,在 Bluemix 应用程序与数据中心之间配置一个具有加密和身份验证功能的传输层安全 (TLS) 隧道。然后您可使用此隧道建立数据库连接。
为了演示此功能,您要创建并使用一个 “数据中心”,该数据中心仅包含一个在 Bluemix 上运行的虚拟机,虚拟机中有数据库和 Secure Gateway 客户端。
“ 在本教程中,我将介绍如何使用 Bluemix Secure Gateway 服务在 Bluemix 应用程序与您的数据中心之间配置一个 TLS 隧道。然后您可使用该隧道建立数据库连接。 ”
获取代码
您可在网络上的任何地方创建一个虚拟机来模拟您的数据中心环境,包括数据库。在本教程中,我将介绍如何在 Bluemix 上创建该虚拟机。
PuTTYgen
生成您自己的公钥或私钥对。 key4bluemix
,然后输入一个密码短语 (passphrase)。 在 Linux 系统上,运行 ssh-keygen
并将该文件保存在默认位置 ~/.ssh/id_rsa。
备注:在生产系统中,您要保留此文件的多个备份。如果丢失此文件,就无法登录虚拟机了。
参数 | 值 |
---|---|
VM Cloud to use | IBM Cloud Public |
Initial instances | 1 |
Assign public IP addresses | Selected |
Image to launch | Ubuntu 14.04 |
Name | Pretend-DC |
VM size | m1.small |
~/.ssh/id_rsa.pub
)的公钥粘贴到 Public Key to import 字段中。 bluemix_vm
。单击 Save ,创建一个已保存的会话。 ibmcloud
登录。由于使用私钥/公钥验证,因此不需要输入密码。 如果可以连接到命令行接口,则表明已正确设置了虚拟机。
您希望您的 Bluemix 应用程序连接到一个远程数据库。为此,您需要安装一个数据库。为了避免处理许可证问题,本教程中使用了 MySQL,而不是 DB2®。
sudo apt-get update
sudo apt-get install mysql-server
系统要求输入 MySQL 根密码时,输入 object00
。 mysql --user=root --password=object00
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE mytable (fname VARCHAR(120), time TIMESTAMP);
CREATE USER 'app'@'%' IDENTIFIED BY 'app-pwd';
GRANT SELECT,INSERT ON mydb.mytable TO 'app'@'%';
quit
备注:为应用程序提供所需的最低权限,是使用最低特权原则 (PoLP) 的一种方式。这样,即使入侵者攻破一个应用程序,他也无法删除表条目或丢弃该表。
sudo
和根用户特权执行编辑工作。 #
) 放在 " bind-address = 127.0.0.1
" 行的开头。 sudo service mysql restart
sudo ufw allow proto tcp to any port 3306 from <your public IP>
下一步是将 Secure Gateway 服务安装在 Bluemix 应用程序上,从而对传输到 “数据中心” 的信息进行加密并对回传的信息进行解密。
app2dc
并单击 ADD DESTINATIONS 。 mydc
,输入已创建的虚拟机的公共 IP 地址,然后输入 MySQL 端口号 ( 3306
)。单击 加号 图标添加该目标: 要与 “远程数据中心” 通信,有必要在它之上安装一个端点。
docker run -it ibmcom/secure-gateway-client aSomkLv6XiK_prod_ng –sectpken eyJ0eXA……
sudo apt-get install curl
curl -sSL https://get.docker.com | sh
docker run -it ibmcom/secure-gateway-client aSomkLv6XiK_prod_ng –sectpken eyJ0eXA……
)。在以根用户身份运行前,需要使用 sudo
命令。 下一步是配置该应用程序使用 Secure Gateway;这需要您了解 Secure Gateway 的信息。
点击查看大图
关闭 [x]
名称 | 值 |
---|---|
DB_HOST | Cloud Host(在上面的示例中为 cap-sg-prd-3.integration.ibmcloud.com) |
DB_PORT | Cloud Port(在上面的示例中为 15122) |
点击查看大图
关闭 [x]
如果未正确配置 Secure Gateway,会出现一条连接错误消息:
要在您的环境中应用本教程的知识,可为您自己的应用程序创建一个 Secure Gateway 并将 Secure Gateway 客户端安装在您的数据中心内。这样就为您的 Bluemix 应用程序提供了访问内部数据存储(比如数据库、目录服务器)的权限。
这同样适用于 Bluemix 虚拟机,但有一个重要的差别。您的防火墙策略应没有那么宽容,而且不允许数据中心内的计算机拥有完整的网络访问权。从下面的 tcpdump 输出中可以看到,Secure Gateway 客户端在两个 TCP 端口上连接到外部 IBM® 数据中心:443(HTTPS 端口)和 9000。您需要允许这些端口传出流量。
点击查看大图
关闭 [x]
能够从 Bluemix 访问内部数据存储,让您可以将数据从您的数据中心逐步迁移到 Bluemix,一次迁移一个应用程序。也可将现有应用程序保留在数据中心内,并使用 Bluemix 承载新的应用程序。
BLUEMIX SERVICE USED IN THIS TUTORIAL: Bluemix Secure Gateway 服务 帮助您安全地从 Bluemix 连接到在内部或在其他云中运行的其他应用程序和数据源。
相关主题: PuTTY Bluemix cURL