转载

使用 Bluemix Secure Gateway 服务连接您的数据中心

阅读Bluemix™ 基础系列 后,您应该知道如何在 Bluemix 上创建和使用新的数据库。但是如果您在自己的数据中心已有一个包含必要信息的数据库,您应该怎么做?

在本教程中,您将了解如何使用 Bluemix Secure Gateway 服务,在 Bluemix 应用程序与数据中心之间配置一个具有加密和身份验证功能的传输层安全 (TLS) 隧道。然后您可使用此隧道建立数据库连接。

为了演示此功能,您要创建并使用一个 “数据中心”,该数据中心仅包含一个在 Bluemix 上运行的虚拟机,虚拟机中有数据库和 Secure Gateway 客户端。

在本教程中,我将介绍如何使用 Bluemix Secure Gateway 服务在 Bluemix 应用程序与您的数据中心之间配置一个 TLS 隧道。然后您可使用该隧道建立数据库连接。

构建您的应用程序需要做的准备工作

  • 一个 Bluemix 帐户
  • 网络概念、Linux 和 SQL 的实用知识

获取代码

第 1 步. 在 Bluemix 上创建 “数据中心”

您可在网络上的任何地方创建一个虚拟机来模拟您的数据中心环境,包括数据库。在本教程中,我将介绍如何在 Bluemix 上创建该虚拟机。

准备您的环境

  1. 安装一个 SSH 客户端与该虚拟机通信。如果您的计算机上使用的是 Windows,可安装 PuTTY package 并按照以下步骤操作来获取公钥:
    1. 运行 PuTTYgen 生成您自己的公钥或私钥对。
    2. 选择 SSH-2 RSA 并单击 Generate 。按照说明创建随机序列。
    3. 输入一条注释,比如 key4bluemix ,然后输入一个密码短语 (passphrase)。
    4. 将公钥信息保存在一个文本文件中。 使用 Bluemix Secure Gateway 服务连接您的数据中心
    5. 单击 Save Private Key 并将 .ppk 文件保存在一个安全的地方。

在 Linux 系统上,运行 ssh-keygen 并将该文件保存在默认位置 ~/.ssh/id_rsa。

备注:在生产系统中,您要保留此文件的多个备份。如果丢失此文件,就无法登录虚拟机了。

创建一个虚拟机

  1. 登录您的 Bluemix 帐户。
  2. 选择想要使用的工作区。
  3. 单击 RUN VIRTUAL MACHINES
  4. 使用以下参数创建一个新虚拟机:
参数
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
  1. 上传新的 SSH 密钥:
    1. 单击 Add Key
    2. 命名该密钥。
    3. 将来自子步骤 1.d(或 ~/.ssh/id_rsa.pub )的公钥粘贴到 Public Key to import 字段中。
    4. 单击 OK
  2. 单击 CREATE
  3. 等待一条表明 VM 正在运行的消息出现: 使用 Bluemix Secure Gateway 服务连接您的数据中心
  4. 使用 PuTTY 连接到虚拟机的公共 IP 地址。
    1. 运行 PuTTY。
    2. 键入来自 Bluemix 网站的公共 IP 地址。在 saved sessions 字段中,将该会话命名为 bluemix_vm 。单击 Save ,创建一个已保存的会话。
    3. 选择该会话并单击 Connection > SSH > Auth
    4. 单击 Browse 并选择您在子步骤 1.e 中创建的已保存私钥。
    5. 如果出现提示,输入密码短语。
    6. 如果出现提示,单击 Yes 接受服务器的公钥。
    7. 使用默认用户名 ibmcloud 登录。由于使用私钥/公钥验证,因此不需要输入密码。

如果可以连接到命令行接口,则表明已正确设置了虚拟机。

在虚拟机上配置数据库

您希望您的 Bluemix 应用程序连接到一个远程数据库。为此,您需要安装一个数据库。为了避免处理许可证问题,本教程中使用了 MySQL,而不是 DB2®。

  1. 运行以下命令来更新操作系统,然后安装数据库:
    sudo apt-get update
    sudo apt-get install mysql-server
    系统要求输入 MySQL 根密码时,输入 object00
  2. 进入 MySQL 用户界面:
    mysql --user=root --password=object00
  3. 在该数据库内创建一个数据库和一个表:
    CREATE DATABASE mydb;
    USE mydb;
    CREATE TABLE mytable (fname VARCHAR(120), time TIMESTAMP);
  4. 创建一个用户并授权该用户读取该表以及向表中插入行,然后退出。
    CREATE USER 'app'@'%' IDENTIFIED BY 'app-pwd';
    GRANT SELECT,INSERT ON mydb.mytable TO 'app'@'%';
    quit

备注:为应用程序提供所需的最低权限,是使用最低特权原则 (PoLP) 的一种方式。这样,即使入侵者攻破一个应用程序,他也无法删除表条目或丢弃该表。

  1. 配置 MySQL 监听所有 IP 地址:
    1. 在编辑器中打开配置文件 /etc/mysql/my.cnf。记住,使用 sudo 和根用户特权执行编辑工作。
    2. 将一个井号 ( # ) 放在 " bind-address = 127.0.0.1 " 行的开头。
    3. 保存并退出编辑器。
    4. 重新启动 MySQL:
      sudo service mysql restart
  2. 允许数据库连接通过防火墙。由于 Secure Gateway 和 Docker 的操作方式,数据库连接看似来自公共 IP 地址。
    sudo ufw allow proto tcp to any port 3306 from <your public IP>

第 2 步. 在 Bluemix 上安装 Secure Gateway 服务

下一步是将 Secure Gateway 服务安装在 Bluemix 应用程序上,从而对传输到 “数据中心” 的信息进行加密并对回传的信息进行解密。

  1. 返回到仪表板。
  2. 单击 USE SER V ICE S OR API S
  3. 选择 Integration > Secure Gateway
  4. 选择 Standard 计划并单击 USE
  5. 单击 ADD GATEWAY
  6. 将新网关命名为 app2dc 并单击 ADD DESTINATIONS
  7. 将目标命名为 mydc ,输入已创建的虚拟机的公共 IP 地址,然后输入 MySQL 端口号 ( 3306 )。单击 加号 图标添加该目标: 使用 Bluemix Secure Gateway 服务连接您的数据中心
  8. 单击 I'M DONE

第 3 步. 在虚拟机上安装 Secure Gateway 客户端

要与 “远程数据中心” 通信,有必要在它之上安装一个端点。

从 Bluemix 获取配置

  1. 单击 Secure Gateway 服务的 app2dc 磁贴。
  2. 单击 CONNECT GATEWAY
  3. 选择 docker
  4. 记下该命令行。它类似于下面这条命令(但不会完全相同):
    docker run -it ibmcom/secure-gateway-client aSomkLv6XiK_prod_ng –sectpken eyJ0eXA……

安装 Secure Gateway 客户端

  1. 使用 SSH 或 PuTTY 连接您的虚拟机。
  2. 安装 Docker 软件。需要先安装 cURL 包,然后使用它下载 Docker 安装程序。
    sudo apt-get install curl
    curl -sSL https://get.docker.com | sh
  3. 运行子步骤 4 中的命令 ( docker run -it ibmcom/secure-gateway-client aSomkLv6XiK_prod_ng –sectpken eyJ0eXA…… )。在以根用户身份运行前,需要使用 sudo 命令。
  4. 等待一条表明 Secure Gateway 隧道已连接的消息出现。

第 4 步. 安装和配置应用程序

下一步是配置该应用程序使用 Secure Gateway;这需要您了解 Secure Gateway 的信息。

  1. 在 Bluemix 仪表板中,单击 Secure Gateway 服务。
  2. 单击网关 app2dc
  3. 在作为目标的 mydc 磁贴上,单击 information 图标。此时显示 mydc 的详细信息: 使用 Bluemix Secure Gateway 服务连接您的数据中心

    点击查看大图

    关闭 [x]

    使用 Bluemix Secure Gateway 服务连接您的数据中心

  4. 下载并安装测试应用程序。此应用程序是用 Node.js 编写的,但同样的技术也适用于任何其他平台。因为它使用环境变量来表示数据库主机和端口号,所以您不需要更改源代码中的任何内容。
  5. 在 Bluemix 仪表板中单击应用程序的磁贴。
  6. 单击 Environment Variables
  7. 单击 USER-DEFINED ,然后单击 ADD 两次。创建这两个变量:
名称
DB_HOST Cloud Host(在上面的示例中为 cap-sg-prd-3.integration.ibmcloud.com)
DB_PORT Cloud Port(在上面的示例中为 15122)
  1. 单击 SAVE
  2. 单击 Overview 并重新启动该应用程序。
  3. 等待应用程序启动。

第 5 步. 使用该应用程序

  1. 浏览到您的应用程序的 URL。尝试使用不同的文件名,可以看到显示了最近使用的一些文件名以及时间戳。
使用 Bluemix Secure Gateway 服务连接您的数据中心

点击查看大图

关闭 [x]

使用 Bluemix Secure Gateway 服务连接您的数据中心

如果未正确配置 Secure Gateway,会出现一条连接错误消息:

使用 Bluemix Secure Gateway 服务连接您的数据中心
  1. 查看 Docker Secure Gateway 客户端。其中每个连接都有两个日志条目,连接打开和关闭时各一个:
使用 Bluemix Secure Gateway 服务连接您的数据中心
  1. 运行一个查询,查看 mytable 的内容。
使用 Bluemix Secure Gateway 服务连接您的数据中心

在您的环境中使用 Secure Gateway

要在您的环境中应用本教程的知识,可为您自己的应用程序创建一个 Secure Gateway 并将 Secure Gateway 客户端安装在您的数据中心内。这样就为您的 Bluemix 应用程序提供了访问内部数据存储(比如数据库、目录服务器)的权限。

这同样适用于 Bluemix 虚拟机,但有一个重要的差别。您的防火墙策略应没有那么宽容,而且不允许数据中心内的计算机拥有完整的网络访问权。从下面的 tcpdump 输出中可以看到,Secure Gateway 客户端在两个 TCP 端口上连接到外部 IBM® 数据中心:443(HTTPS 端口)和 9000。您需要允许这些端口传出流量。

使用 Bluemix Secure Gateway 服务连接您的数据中心

点击查看大图

关闭 [x]

使用 Bluemix Secure Gateway 服务连接您的数据中心

结束语

能够从 Bluemix 访问内部数据存储,让您可以将数据从您的数据中心逐步迁移到 Bluemix,一次迁移一个应用程序。也可将现有应用程序保留在数据中心内,并使用 Bluemix 承载新的应用程序。

BLUEMIX SERVICE USED IN THIS TUTORIAL: Bluemix Secure Gateway 服务 帮助您安全地从 Bluemix 连接到在内部或在其他云中运行的其他应用程序和数据源。

相关主题: PuTTY Bluemix cURL

正文到此结束
Loading...