＜SecureGatewayの勉強１＞クラウドのBluemixアプリからオンプレミスのDBをセキュアにアクセス。(SecureGatewayクライアント：Docker編)

# 1. はじめに
<font color="blue"><strong> 「SecureGateway」</strong></font>はBluemixで提供されるサービスです。
 クラウド環境（Bluemix環境）とオンプレミス環境の間でトンネルを確立し、セキュアな接続を提供します。
  これを使えば、クラウド上のBluemixアプリケーションからオンプレミスのDBをアクセスするようなシステムをセキュアに構築することが可能です。
 今回は、BluemixでPHPプログラムを作成し、オンプレに見たてたBluemix Infrastructure(SoftLayer)インスタンスのMySQLにアクセスします。
 尚、今回の<font color="blue">SecureGatewayクライアントはDocker環境のパターン</font>です。
 また、基本的な内容を理解するという点に主眼を置いたため、今回TLS認証機能は省いています。
 <font color="red">（ご注意) 実システムで構築・利用される際は、セキュリティ対策を十分ご検討の上、適用してください。</font>
 
# ２. SecureGatewayについて
 Bluemixアプリケーションからオンプレミス、クラウド上のデータにアクセスする際、セキュアな経路を提供。
![01.png](http://seahorse-inc.com/QIITA/SecureGateway-1/01.png)
（宛先タイプ：オンプレミス宛先の例）

## ２-1. 接続先の宛先タイプ
 アクセスするアプリケーションプログラムとアクセスされるDBが、Bluemix環境（SecureGateway資料では「クラウドの宛先」と表記されています）にあるのか、オンプレミス環境にあるのかによって宛先タイプが異なります。
 
<strong>（１）クラウドの宛先</strong>
アプリケーションプログラムがオンプレミス、DBがBluemix環境。
![02.png](http://seahorse-inc.com/QIITA/SecureGateway-1/02.png)

<strong>（２）オンプレミスの宛先</strong>
アプリケーションプログラムがBluemix環境、DBがオンプレミス。
![03.png](http://seahorse-inc.com/QIITA/SecureGateway-1/03.png)

この2つの宛先タイプを組み合わせることにより、双方向での通信処理が可能となります。

<font color="red">（注意）SecureGatewayの無償プラン（Essentials）では、宛先、クライアントそれぞれ1つまでです。
双方向での通信処理では宛先、クライアントが最低2つとなりますので、無償プランではなく有償プラン（ProffesionalまたはEnterprise）を選択する必要があります。</font>

# ３. テスト構成について
 今回は、SecureGateway宛先タイプ：「オンプレミスの宛先」の構成です。
（アプリケーションプログラムがBluemix環境、DBがオンプレミス。）
オンプレミス環境に見たてた、Blumix Infrastructure（SoftLayer）環境に。仮想インスタンスのCentOS7をデプロイします。
CentOS7には
<font color="blue">① SecureGatewayクライアント用のDocker
② SecureGatewayクライアント
③ MySQL</font>
機能をインストールします。

<strong>【Bluemix側環境】</strong>
■ SecureGateway：Bluemix 2017年10月現在提供のバージョン
■ PHP：Bluemix Cloud Foundry 2017年10月現在提供のバージョン4.3.27
■ cfコマンド：PHPプログラムをBluemixにデプロイするために使用。
ここでは、”Windows10(32bit)環境 cf version 6.19.0+b29b4e0-2016-06-08”を使用しましたが、お使いのクライアントPC環境のOSに合わせてください。

<strong>【オンプレミス側環境 （Blumix Infrastructure（SoftLayer））】</strong>
■ 仮想インスタンス：
CentOS Linux release 7.4.1708 (Core)
プライベートIP：10.132.52.225
プライベートIPのみの設定ですが、インターネット環境にアクセスできるように設定してください。
■ Docker：Docker version 17.09.0-ce, build afdb6d4



# ４. テスト環境の構築


## ４－１. CentOS7初期作業
<font color="orange">《 Blumix Infrastructure（SoftLayer）側での作業です 》</font>
### ４－１－１. CentOS7ツールのインストール
ここではエディターのnanoと画面多重のためにscreenをインストールしました。

```Command:CentOS7ツールのインストール
# yum install -y nano
# yum install -y screen
```

### ４－１－２. CentOS7のアップデート
```Command:CentOS7のアップデート
# yum -y update
```

<font color="blue"><strong>以上で「４－１. CentOS7初期作業」完了です。</strong></font>



## ４－2. Dockerのインストールと設定
<font color="orange">《 Blumix Infrastructure（SoftLayer）側作業です 》</font>
▼ Dockerがインストールされていたら、削除する

```Command:Dockerの削除
# yum remove docker docker-common docker-selinux docker-engine
```

▼ 必要なパッケージのインストール

```Command:必要なパッケージをインストール
# yum install -y yum-utils device-mapper-persistent-data lvm2
```

▼ レポジトリ追加

```Command:レポジトリ追加
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
```

▼ yumのパッケージインデックスを更新

```Command:yumパッケージインデックス更新
# yum makecache fast
```

▼ Docker最新バージョンのインストール

```Command:Dockerインストール
# yum install -y docker-ce
```

▼ Dockerの起動

```Command:Dockerの起動
# systemctl start docker
```

▼ Dockerの動作確認
"Hello from Docker!"が表示されるか確認する

```Command:Dockerの動作確認
# docker run hello-world
```
![04.png](http://seahorse-inc.com/QIITA/SecureGateway-1/04.png)
"Hello from Docker!"が表示されたので、Dockerは正常動作した。

▼ 念のためdockerグループの登録
（すでにできているはずですが、念のため）

```Command:Dockerグループの登録
# groupadd docker
```

▼ 現在のユーザーをdockerグループに登録

```Command:ユーザーをdockerグループに登録
# usermod -aG docker $USER
```

▼ OS起動時にDockerを自動起動する

```Command:Dockerを自動起動設定
# systemctl enable docker
```

<font color="blue"><strong>以上で「４－2. Dockerのインストールと設定」完了です。</strong></font>


## ４－３. MySQLのインストールと設定
<font color="orange"><《 Blumix Infrastructure（SoftLayer）側作業です 》</font>

▼ MariaDBの削除
CentOS7にはMySQLではなく、MariaDBが入っているので削除する

```Command:MariaDBの削除
# yum remove -y mariadb-libs.x86_64
# rm -rf /var/lib/mysql/
```

▼ MySQL yumリポジトリーの追加
今回インストールするMySQLは5.7。
下記アドレスにから関連情報を入手します。
https://dev.mysql.com/downloads/repo/yum/
![05.png](http://seahorse-inc.com/QIITA/SecureGateway-1/05.png)
”Red Hat Enterprise Linux 7 / Oracle Linux 7 "右の「Download」ボタンをクリック。
![06.png](http://seahorse-inc.com/QIITA/SecureGateway-1/06.png)
「No thanks, just start my download.」文字にポインターを合わせ、右クリックでリンクのコピー。
コピーの内容は下記でした。この内容でリポジトリー追加を行います。
https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

```Command:MySQLyumリポジトリーの追加
# yum -y localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
```

▼ MySQLのバージョンを確認

```Command:MySQLバージョン確認
# yum info mysql-community-server
```
![07.png](http://seahorse-inc.com/QIITA/SecureGateway-1/07.png)

▼ MySQL5.7のインストール

```Command:MySQL5.7のインストール
# yum -y install mysql-community-server
```

▼ MySQL5.7のインストール確認

```Command:MySQL5.7のインストール確認
# mysql --version
```
”mysql  Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using  EditLine wrapper”

▼ MySQL自動起動の設定

```Command:MySQL自動起動の設定
#systemctl enable mysqld.service
```

▼ MySQLのroot初期パスワードの確認
初期パスワードは、”/var/log/mysqld.log”に書かれているので、MySQLを起動してパスワードを確認する。

```Command:MySQL初期パスワードの確認
# systemctl start mysqld.service
# cat /var/log/mysqld.log | grep root 
```
"2017-10-23T22:32:48.184856Z 1 [Note] A temporary password is generated for root@localhost: hleHXtMPr5+E"
初期パスワードは「hleHXtMPr5+E」でした。

▼ MySQLの初期設定
「mysql_secure_installation」コマンドで、対話形式にrootパスワード変更や、その他初期設定を行う。
ここで設定したのは、
・rootパスワード変更　⇒ "Mura3root@"
・匿名ユーザーの削除 ⇒ "No"
・リモートホストからrootログイン禁止 ⇒ "No"
・テスト用データベース削除 ⇒ "No"
・ユーザー権限が保存されているテーブルをリロード ⇒ "Yes"
です。
尚、新しく設定するパスワードは「8文字以上かつ英大文字・小文字・数字・記号」を含む必要があります。
（ここでは設定しませんが、パスワードを制限なく自由に決める場合は、「/etc/my.cnf」に”validate_password_policy=LOW”を追加し、MySQLを再起動します。）

```Command:MySQLの初期設定
# mysql_secure_installation
```
![08.png](http://seahorse-inc.com/QIITA/SecureGateway-1/08.png)

▼ MySQL文字コードをUTF-8にセット
「/etc/my.cnf」に次の2行を追記して再起動。
character_set_server=utf8
skip-character-set-client-handshake

```Command:MySQL文字コードをUTF-8にセット
# nano /etc/my.cnf
# systemctl restart mysqld.service
```
▼ MySQLに新規ユーザ追加と権限の設定
rootユーザ（パスワード：Mura3root@）でMySQLにログイン

```Command:rootユーザでMySQLにログイン
# mysql -u root -pMura3root@
```

今回のテストで使用するユーザを下記内容で作成します。
・ユーザー：「usermura」
・パスワード：「Mura3root@」
また、usermuraの権限をすべて操作できるように設定します。

```Command:MySQLに新規ユーザ追加と権限の設定
mysql> CREATE USER usermura IDENTIFIED BY 'Mura3root@';
mysql> grant all privileges on *.* to usermura@"%"  with grant option ;
```
MySQLコマンドラインを終了し、再度「usermura」でログインします。

```Command:MySQLにusermuraで再ログイン
mysql> quit
# mysql -u uasermura -pMura3root@
```
正常にログインできるか確認してください。


<font color="blue"><strong>以上で「４－３. MySQLのインストールと設定」完了です。</strong></font>

## ４－４. MySQLテストデータの作成
<font color="orange">《 Blumix Infrastructure（SoftLayer）側作業です 》</font>
usermuraでログインします。
ここでは、下記内容でデータを作成します。
データベース名：「db1」
テーブル名：「fish」
カラム：id 数値 , name 可変長文字列, price 可変長文字列

▼ データベースdb1作成

```Command:データベースdb1作成
mysql> create database db1;
mysql> use db1
```
▼ テーブルfish作成

```Command:テーブルfish作成
mysql> create table fish(id int ,name varchar(20),price varchar(10));
```
▼ データ登録

```Command:データ登録
insert into fish values(1, 'マアジ',120);
insert into fish values(2, 'カンパチ',270);
insert into fish values(3, 'カツオ',210);
insert into fish values(4, 'マダイ',320);
insert into fish values(5, 'クロダイ',290);
insert into fish values(6, 'メジナ',180);
insert into fish values(7, 'イサキ',310);
insert into fish values(8, 'ハタハタ',650);
insert into fish values(9, 'ムツ',380);
insert into fish values(10, 'カワハギ',150);
insert into fish values(11, 'カタクチイワシ',110);
insert into fish values(12, 'マコガレイ',360);
```

▼ 登録データ確認

```Command:登録データ確認
select * from fish;
```
![09.png](http://seahorse-inc.com/QIITA/SecureGateway-1/09.png)
確認したら、「quit」で終了してください。

以上で「４－４. MySQLテストデータの作成」完了です。


《 Blumix 側作業 》
## ４－５. Bluemix側のSecureGateway設定
▼ SecureGatewayサービスのオーダー
下記URLより、Bluemixにログインします。
https://console.bluemix.net/home/

![10.png](http://seahorse-inc.com/QIITA/SecureGateway-1/10.png)
「カタログ」より「SecureGateway」をクリック。

![11.png](http://seahorse-inc.com/QIITA/SecureGateway-1/11.png)
「作成」をクリック。

▼ ゲートウェイの追加
![12.png](http://seahorse-inc.com/QIITA/SecureGateway-1/12.png)
「ゲートウェイの追加」をクリック。

![13.png](http://seahorse-inc.com/QIITA/SecureGateway-1/13.png)
ゲートウェイ名の入力。ここでは「muraGW」としました。
ここではゲートウェイ接続の際、セキュリテイトークンを確認しない設定にしますので、”クライアントを接続するためにセキュリティー・トークンを必要とする”と”トークン有効期限”のチェックをはずします。
「ゲートウェイの追加」をクリック。

▼ SecureGatewayクライアントの追加
![14.png](http://seahorse-inc.com/QIITA/SecureGateway-1/14.png)
「クライアントの接続」をクリック。

![15.png](http://seahorse-inc.com/QIITA/SecureGateway-1/15.png)
「Dockerのアイコン」をクリック。

![16.png](http://seahorse-inc.com/QIITA/SecureGateway-1/16.png)
"docker run -it ibmcom/secure-gateway-client TDhz3N9U1Gb_prod_ng"をコピーして保存します。後程、SecureGatewayクライアントのインストールで使用します。
”×”をクリックしてウインドウを閉じます。

▼ 宛先の追加
![17.png](http://seahorse-inc.com/QIITA/SecureGateway-1/17.png)
「宛先」タブをクリック。
下の「＋」マークをクリック。

![18.png](http://seahorse-inc.com/QIITA/SecureGateway-1/18.png)
「オンプレミス」を選択。
「次へ」をクリック。

![19.png](http://seahorse-inc.com/QIITA/SecureGateway-1/19.png)
MySQLが動作するオンプレミス側環境 （Blumix Infrastructure（SoftLayer））の仮想インスタンス・プライベートIP：「10.132.52.225」とMySQLのポート番号「3306」を入力。
「次へ」をクリック。

![20.png](http://seahorse-inc.com/QIITA/SecureGateway-1/20.png)
ここでは認証を行わないの設定の”TCP”を選びました。
”TCP”は証明書なしで、ゲートウェイと通信できます。
ユーザー/アプリケーションが宛先への接続に使用するプロトコル：「TCP」を選択。
「次へ」をクリック。

![21.png](http://seahorse-inc.com/QIITA/SecureGateway-1/21.png)
宛先で実施される認証の種類は、TLSのオプションです。
前の設定では”TCP”を選択したので、ここでは”None”を選択します。

![22.png](http://seahorse-inc.com/QIITA/SecureGateway-1/22.png)
今回、宛先を非公開にしないので、何も入力せず「次へ」をクリック。

![23.png](http://seahorse-inc.com/QIITA/SecureGateway-1/23.png)
ここでは、この宛先に付ける名前：「オンプレミスMySQL」を入力。
「宛先の追加」をクリック。

<font color="blue"><strong>以上で「４－５. Bluemix側のSecureGateway設定」完了です。</strong></font>



## ４－６. Bluemix側のSecureGatewayクライアント設定
<font color="orange">《 Blumix Infrastructure（SoftLayer）側作業です 》</font>

前の「４－2. Dockerのインストールと設定」でDockerを設定したインスタンスに、「４－５. Bluemix側のSecureGateway設定　▼ SecureGatewayクライアントの追加」で取得した、"docker run -it ibmcom/secure-gateway-client TDhz3N9U1Gb_prod_ng"でSecureGatewayクライアントを設定します。
尚、Deckerのディフォルトネットワークモードは”ブリッジモード”ですが、”ホストモード”でないと接続できない場合がある為、「--net=host」パラメータを付加して実行します。

```Command:SecureGatewayクライアントの起動
docker run -it --net=host ibmcom/secure-gateway-client TDhz3N9U1Gb_prod_ng
```
![24.png](http://seahorse-inc.com/QIITA/SecureGateway-1/24.png)
Bluemix側のSecureGateway管理画面で接続が確認できます。
![25.png](http://seahorse-inc.com/QIITA/SecureGateway-1/25.png)
![26.png](http://seahorse-inc.com/QIITA/SecureGateway-1/26.png)

<font color="blue"><strong>以上で「４－６. Bluemix側のSecureGatewayクライアント設定」完了です。</strong></font>

## ４－７. DBアクセス用テストプログラムの作成と登録
テストプログラムは、PHPでデータアクセスにはPDOを使用します。
また、プログラムで指定するMySQLへの接続先の、ホスト名、ポート番号情報は、
「４－５. Bluemix側のSecureGateway設定　▼宛先の追加」に登録されています。

▼MySQLへの接続先のホスト名とポート番号入手
<font color="orange">《 Blumix 側作業です 》</font>
BluemixのSecureGateway管理画面から宛先情報を取得します。

![27.png](http://seahorse-inc.com/QIITA/SecureGateway-1/27.png)
"宛先：オンプレミスMySQL"の歯車マークをクリック

![28.png](http://seahorse-inc.com/QIITA/SecureGateway-1/28.png)
クラウド・ホスト：ポートが、プログラムで指定するMySQLへの接続先のホスト名とポート番号です。
ここでは、「cap-sg-prd-1.integration.ibmcloud.com:15758」
情報を保存し、「×」でウィンドウを閉じます。

以上で「４－７. DBアクセス用テストプログラムの作成と登録」完了です。


## ４－８. DBアクセス用テストプログラムの作成とBluemixにデプロイ
テストプログラム名称を”test.php”とします。
また、プログラムの保存場所はローカルPCの"c:\phppgm\"フォルダーです。Blumixへのデプロイはいくつかありますが、CloudFoundryの”cfコマンド”を使用しました。
尚、phpでPDOを使用しますので、その設定も合わせて記載しました。


▼ DBアクセス用テストプログラム
"c:\phppgm\index.php"で保存して下さい。
※説明しやすいように行番号(xx)をつけてます。

```Command:DBアクセス用テストプログラム(index.php)
(01)	<?php
(02)	// MySQLへの接続情報
(03)	$hostname = 'cap-sg-prd-1.integration.ibmcloud.com';
(04)	$port = 15758;
(05)	$dbname = 'db1';
(06)	$username = 'usermura';
(07)	$password = 'Mura3root@';
(08)	$dsn = 'mysql:dbname='.$dbname.';host='.$hostname.';port='.$port;
(09)	?>
(10)	
(11)	<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
(12)	<html>
(13)	<head>
(14)	<title>MySQL接続テスト</title>
(15)	<meta http-equiv="viewport" content="width=device-width, initial-scale=1" />
(16)	<meta http-equiv="apple-mobile-web-app-capable" content="yes" />
(17)	</head>
(18)	<body>
(19)	<h1>DBアクセス用テスト</h1>
(20)	<br/>
(21)	<table border="1">
(22)	<tr><th>id</th><th>name</th><th>price</th></tr>
(23)	
(24)	<?php
(25)	try{
(26)		$dbh = new PDO( $dsn, $username, $password );
(27)		if($dbh != null){
(28)			$sql = "SELECT id, name, price FROM fish";
(29)			print $sql;
(30)		$stmt = $dbh->query($sql);
(31)		while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
(32)		$id = $row['id'];
(33)		$name = $row['name'];
(34)		$price = $row['price'];
(35)		//rowデータ表示
(36)		$tr = "<tr><td>".$id."</td>"
(37)			. "<td>".$name."</td>"
(38)			. "<td>".$price."</td></tr>\n";
(39)		echo $tr;
(40)		}
(41)		$dbh = null;
(42)		}
(43)	}catch( PDOException $e){
(44)		print('Error: '.$e->getMessage());
(45)		die();
(46)	}
(47)	?>
(48)	</table>
(49)	</body>
(50)	</html>
```

<font color="blue"><strong>(03)(04)</strog></font> MySQLへの接続先ホスト名とポート番号
「４－７. DBアクセス用テストプログラムの作成と登録　▼MySQLへの接続先のホスト名とポート番号入手」で入手した情報を設定。
<font color="blue"><strong(06)(07)</strog></font>MySQLへのログインID、パスワード
「４－３. MySQLのインストールと設定　▼ MySQLに新規ユーザ追加と権限の設定」で設定したログインID、パスワードを設定。
<font color="blue"><strong>(08))</strog></font> DSN情報を変数$dsnに代入
<font color="blue"><strong>(26))</strog></font> PDOクラスのオブジェクトを作成し、$dbh変数に代入
<font color="blue"><strong>(28))</strog></font> SQL文を変数$sqlへ代入
<font color="blue"><strong>(30))</strog></font> queryメソッドでSQL文を発行し、結果を$stmtオブジェクト変数に挿入
<font color="blue"><strong>(31)-(40))</strog></font> fetchメソッドで、配列変数$rowに代入し表示
データがなくなるまで繰り返し。
<font color="blue"><strong>(43)-(45))</strog></font> try範囲でエラーがあったら、エラーメッセージを表示して終了

▼ Bluemix PHPにPDO設定を拡張
PDOを使用するための設定を行います。
前で作成した”c:\phppgm”フォルダーの下に”.bp-config”を作成し、その中に”options.json”ファイルを作成します。
尚、”.bp-config”フォルダーはドットファイル（フォルダー）のため、コマンドプロンプトでは作成できません。エクスプローラで作成してください。
「c:\phppgm\.bp-config\options.json」

```Command:options.jsonの内容
{
    "PHP_EXTENSIONS": [ "bz2", "zlib", "curl", "mcrypt", "mbstring", "mysql", "pdo", "pdo_mysql", "fileinfo", "ftp", "zip" ]
}
```
PDO以外にも、便利な機能を拡張設定しています。

▼ CloudFoundry CLIツールのインストール
今回、テストプログラムをBluemixへデプロイするには、”CloudFoundry CLIツール”の”cfコマンド”を使用します。
下記URLにアクセスして、ローカルPCにCloudFoundry CLIツールをインストールします。
https://github.com/cloudfoundry/cli/releases
![29.png](http://seahorse-inc.com/QIITA/SecureGateway-1/29.png)
ローカルPCのOSに合ったインストーラーをダウンロードして、インストールしてください。

インストールが完了したら、cfコマンドでログインしてみます。
尚、BluemixのAPIエンドポイントは下記になります。
![30.png](http://seahorse-inc.com/QIITA/SecureGateway-1/30.png)
今回、Bluemixは米国南部地域を使用しますので、API endpointは”https://api.ng.bluemix.net” になります。
BluemixのID、パスワードを準備してください。

```Command:cfログイン
c:\cf login
```
![31.png](http://seahorse-inc.com/QIITA/SecureGateway-1/31.png)
ここではspaceを複数登録しているので、どのspaceかを聞いてきました。
また、次回ログインからはAPI endpointは登録されているので、入力する必要はありません。
一旦ログアウトします。

```Command:cfログアウト
c:\cf logout
```

▼ テストプログラムをBluemixへデプロイ
コマンドプロンプトから、cfコマンドでpushします。
今回は、テストプログラムの構成を記載するmanifest.ymlは指定しません。デフォルト値でデプロイします。

ログイン

```Command:cfログイン
c:\pgppgm\cf login
```
デプロイ

```Command:デプロイ
c:\pgppgm\cf push dbtest20171001
```
ここではプログラム名を「dbtest20171001」としました。

デプロイが正常に完了してプログラムが実行中です。
![32.png](http://seahorse-inc.com/QIITA/SecureGateway-1/32.png)

Bluemixのダッシュボードでも確認できます。
![33.png](http://seahorse-inc.com/QIITA/SecureGateway-1/33.png)

以上で「４－８. DBアクセス用テストプログラムの作成とBluemixにデプロイ」完了です。

# ５. テストプログラムの実行
DockerのSecuregatewayクラインとが起動していない場合、起動します。

```Command:SecureGatewayクライアントの起動
docker run -it --net=host ibmcom/secure-gateway-client TDhz3N9U1Gb_prod_ng
```

▼ 接続を許可するリソースを指定
SecureGatewayクライアントCLIコマンドの”A”で指定します。
"A hostname:port  workerID"
hostname：MySQLインスタンスのプライベートIPアドレス”10.132.52.225”
port：MySQLのポート番号"3306"
workID：”1”  SecureGatewayクライアントCLIコマンドの”L”で確認できます。
![34.png](http://seahorse-inc.com/QIITA/SecureGateway-1/34.png)

```Command:アクセス制御リストの許可設定
> A 10.132.235.118:3306 1
```
![35.png](http://seahorse-inc.com/QIITA/SecureGateway-1/35.png)


▼ プログラムの実行
Bluemixダッシュボードでデプロイしたプログラム”dbtest20171001”の行にある
経路”dbtest20171001.mybluemix.net”をダブルクリックして実行します。
![36.png](http://seahorse-inc.com/QIITA/SecureGateway-1/36.png)

▼ 接続確認
![37.png](http://seahorse-inc.com/QIITA/SecureGateway-1/37.png)
データが正常に表示され、正常にDBアクセスできている事が確認できました。


# ６. おわりに
MySQLやPHPプログラム、デプロイ操作など、詳細に記載したため多少長くなってしましました。
今回は、SecureGatewayクライアントがDockerパターンでしたが、他のパターンでも書く予定です。