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


# 1. はじめに
＜SecureGatewayの勉強１/２/３＞では、
・SecureGatewayクライアント
・DBサーバ（MySQL）
を1台のインスタンス上で動かしていました。

今回は、少し現実に近づけた構成で「SecureGatewayクライアント」と「DBサーバ（MySQL）」を別々のインスタンスで動かします。

尚、＜SecureGatewayの勉強３＞をベースにDBサーバを追加構成します。
 https://qiita.com/Mitsu-Murakita/items/90018fa92d6c434e55c4
 
# ２.変更点
SecureGatewayサービスをキャンセルしていなければ、変更点は３つです。
（１）「SecureGatewayサービス」宛先のホスト
（２）「SecureGatewayクライアント」アクセス制御リストのアクセス許可アドレス
（３）「PHPプログラム」select文
　※見比べ易く、テーブルを変更したため。DB名、カラム属性はそのままです。
 
# ３.構成
![01.png](http://seahorse-inc.com/QIITA/SecureGateway-4/01.png)
 【オンプレミス側】
 (1) SecureGatewayクライアント
      Ubuntu 16.04
      プライベートIP：10.132.52.225 
      ※インターネットに接続できるように構成する。
 (2) DBサーバ
      Ubuntu 16.04
      MySQL
      プライベートIP：10.132.52.226
      ※インターネット接続しないように構成する。

# ４.変更

（１）「SecureGatewayサービス」宛先のホスト
![02.png](http://seahorse-inc.com/QIITA/SecureGateway-4/02.png)
「宛先タブ」クリック⇒「歯車マーク」クリック

![03.png](http://seahorse-inc.com/QIITA/SecureGateway-4/03.png)
「編集クリック」

![04.png](http://seahorse-inc.com/QIITA/SecureGateway-4/04.png)
DBサーバのプライベートIP：「10.132.52.226」を入力
「宛先の更新」をクリック

（２）「SecureGatewayクライアント」アクセス制御リストのアクセス許可アドレス
アクセス制御リスト「ACLFile.txt」の”acl allow”をDBサーバのプライベートIP：「10.132.52.226」へ変更。

```Command:ACLFile.txt変更
# nano /opt/ibm/securegateway/client/ACLFile.txt
```
![05.png](http://seahorse-inc.com/QIITA/SecureGateway-4/05.png)

（３）「PHPプログラム」select文
テーブルは、"fish"から"vegetable"に変更しました。
PHPプログラムのselect文を「$sql = "SELECT id, name, price FROM vegetable";」に変更。
後ほど、テーブル構成を説明します。

SecureGatewayクライアントを再起動。

以上で「４.変更」完了です。

# ５.DBサーバ関連設定
DBサーバのUbuntu設定、MySQLインストール設定、PDO拡張設定、CloudFoundry CLIツールのインストールは割愛させていただきます。
＜SecureGatewayの勉強３＞を参照してください。
 https://qiita.com/Mitsu-Murakita/items/90018fa92d6c434e55c4

MySQLユーザは、
ユーザ：usermura
パスワード：Mura3root@
で作成し、権限設定しました。

▼ データベースdb1作成
usermuraユーザでMySQLへログイン後、以降の操作を行います。

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

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

```Command:データ登録
insert into vegetable values(1, '白菜',489);
insert into vegetable values(2, '人参',320);
insert into vegetable values(3, 'キャベツ',200);
insert into vegetable values(4, 'かぼちゃ',180);
insert into vegetable values(5, '玉ねぎ',320);
insert into vegetable values(6, 'きゅうり',200);
insert into vegetable values(7, 'しいたけ',450);
insert into vegetable values(8, 'ジャガイモ',380);
insert into vegetable values(9, 'なす',320);
insert into vegetable values(10, 'ほうれん草',280);
insert into vegetable values(11, 'ピーマン',180);
insert into vegetable values(12, 'れんこん',290);
```

▼ 登録データ確認

```Command:登録データ確認
select * from vegetable;
```

確認したら、「quit」で終了してください。

以上で「５. DBサーバ関連設定」完了です。


# ６. テストプログラムのデプロイと実行
▼ テストプログラムをBluemixへデプロイ
ログイン

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

デプロイ

```Command:デプロイ
c:\pgppgm\cf push dbtest20171109-2
```

ここではプログラム名を「dbtest20171109-2」としました。

# ７. テストプログラムの実行
▼ プログラムの実行
Bluemixダッシュボードでデプロイしたプログラム”dbtest20171109-2”の行にある
経路”dbtest20171109-2.mybluemix.net”をダブルクリックして実行します。

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


# ６. おわりに
SecureGatewayなのにセキュリティ設定に関してまだ書いていませんでした。
次回は、セキュリティ対策と設定について書く予定です。