まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:securegateway

IBM SecureGateway は、プライベート環境内のデータをクラウド環境から利用する際のトンネリングを行う上で簡単かつセキュアに環境を用意することができて、ハイブリッドクラウドを実現する上で非常に便利なサービスです(詳しくはこちらも参照ください):
2017041804


このトンネリング環境を作る方法として3つのクライアント環境が用意されています。この3つの環境を比較してみました:
2017041900


まず1つ目は「IBM インストーラー」と名付けられている、専用ソフトウェアです。ハイブリッド化の対象となるプライベートネットワークに接続された Windows/Mac/RHEL/Ubuntu(z, PPC, x86_64) に、各システム向けにビルドされた軽量な専用モジュールからインストールして利用します:
2017041801


2つ目は「Docker」です。ハイブリッド化の対象となるプライベートネットワーク内に Docker 環境があれば(または用意して)、専用の Docker イメージをダウンロードしてコンテナ上で稼働させます:
2017041802


そして3つ目が「IBM DataPower」と呼ばれる専用アプライアンスサーバーです。ハイブリッド化の対象となるプライベートネットワークに直接接続して電源を入れると稼働する、専用サーバーおよびハードウェアです:
2017041803


ちなみに DataPower サーバーの実体の外見はこんな感じです。「ザ・サーバー」って感じ:
ibm datapowers



Secure Gateway のクライアントとして利用する場合、いずれも機能そのものとしての違いはないのですが、選択する上で考慮する要素はいくつかあるので考えてみました。

まずは配布形態と、その形態による依存条件です。IBM インストーラーの場合はソフトウェアとしての配布なので、(仮想)マシンと OS があれば導入できます。Docker の場合は Docker 環境が必要です。プライベートネットワーク内に Docker 環境が用意されていればいいのですが、新たに構築可能かどうか、という点は問題になるかもしれません。そして DataPower は専用サーバーハードウェアなので、このハードウェア資産の購入とネットワークに新たに1サーバーを接続するという必要があります。

次に操作画面の違いです。IBM インストーラーと DataPower の場合はサービスとしてクライアントが実行され、その設定や操作は専用のウェブアプリケーションにアクセスして行うことになります。良く言えば詳しくなくてもウィザート通りにすすめていけるので便利、悪くいうとブラウザ環境必須(コマンドラインからは操作できないのでターミナルでリモートログインして・・というわけにはいかない)のです。Mac や Windows などの GUI 環境が用意されているマシンをネットワーク内で使える場合はいいですが、(現実的な)Linux でやろうとすると X Window まで用意された環境が必要になります:
2017041901


一方 Docker の場合は専用イメージを起動すると操作専用のコマンドラインが起動します。このコマンドラインから目的の操作を直接入力できるので、ターミナルを用いたリモート操作も可能です。Linux 環境前提で、ある程度コマンドライン操作に慣れた人が使うのであれば、こちらの方が便利かもしれません:
2017041902


まとめるとこんな感じですかね。トンネリング部分として同じ機能を提供するものなので、後は前提ネットワーク環境内のルールや操作する人のスキルを元にどれを選ぶかを判断することになると思います:
 IBM インストーラーDockerIBM DataPower
配布形態ソフトウェアDocker イメージアプライアンスサーバー
プライベート環境側に必要な事前準備このソフトウェアをインストール可能な Windows/Mac/RHEL/Ubuntu システムが同一ネットワーク内に存在している(或いは接続できる)こと同一ネットワーク内で Docker 環境が構築されていること特になし
クライアント起動形態サービスDocker コンテナ内で常に実行中サービス
クライアント操作画面GUI(ウェブブラウザ)専用のコマンドラインGUI(ウェブブラウザ)
メリットウィザード形式に沿って設定可能
既存環境の活用
コマンドラインから目的のコマンドを直接実行可能
新たにリソースを調達する場合のコスト
ウィザード形式に沿って設定可能
別途システムやハードウェア、ソフトウェアの準備準備不要
デメリット慣れてくると GUI が面倒
別途 OS が必要
Docker 環境必須
全てコマンドライン操作
(仮想環境なので)パフォーマンスの担保が難しい
専用アプライアンスサーバーの購入が必要


個人的な感想ですが、DataPower は「専用機を買う」という選択肢なので対象外。Docker 環境を用意できるなら Docker が一番楽で、用意できない場合は仮想サーバーの Linux に X Window と専用ソフトウェアをインストール、かな。


IBM Bluemix が提供するサービスの1つである Secure Gateway を紹介します:
2017040501


IBM も提唱する「ハイブリッド・クラウド」環境では、パブリックなクラウドだけでなく、一部のデータベースがセキュアなプライベート環境やオンプレミス環境上に存在したままでシステムシステムを実現する必要があります。ではどのような仕組みでパブリッククラウドとセキュアなデータベース接続を実現することができるでしょうか?
2017040501


一般的には VPN などの仕組みを使うことも考えられますが、そのためのサーバー機器やソフトウェア、およびそれらの仕組みをプライベートネットワーク側にも用意する必要があり、運用・管理も含めた負担は軽いものではありません。 今回紹介する Secure Gateway はプライベートネットワークの Docker イメージとしてトンネリングクライアントを用意し、Bluemix 側のトンネリングサーバー(ゲートウェイ)との間で通信して、目的のプライベートデータベースとの接続をシームレスに実現する、というものです:
2017040501


この Secure Gateway を利用する場合、その環境構築は非常に簡単です。ゲートウェイサーバー側は SaaS のサービスをインスタンス化するだけ、クライアント側はソフトウェアを導入してゲートウェイサーバーと接続するコマンドを実行するだけですが、導入方法の1つとして専用の Docker イメージが用意されているので、そのコンテナを Docker から起動するだけで済みます。管理・運用の負担が非常に小さくなります。


また Secure Gateway には利用量に応じたいくつかのプランがあります。無料版である Essentials プランでは1つのゲートウェイにつき接続先は1つ(例えば1つのデータベース)だけですが、1ヶ月間に 500MB のトンネリング通信を行うことができます。Bluemix の画面からプランを選択して「作成」ボタンをクリックすると、このサービスが利用可能になります(この時点ではまだインスタンス化していません):
2017040502


この(サービスを作成した直後の)時点で Bluemix の Secure Gateway サービス画面を見ると以下のようになります。ダッシュボードから利用状況が確認できますが、まだゲートウェイインスタンス(上記図の Secure Gateway サーバー)が生成されていないので通信は行われていません。ゲートウェイサーバーを作成するには、画面左下の「ゲートウェイの作成」をクリックします:
2017040503


ゲートウェイの追加画面が表示されます。ここではゲートウェイの(つまりは接続先の)名称を指定します。必要に応じてセキュリティ・トークンの設定を行い(下図では設定していません)、最後に「ゲートウェイの追加」をクリックします:
2017040504


これでゲートウェイサーバーインスタンスが生成されました。が、まだゲートウェイクライアントが作られていないので、未接続状態です(画面右上のチェーンが赤)。そこで続いて「クライアントの接続」をクリックします:
2017040505


ゲートウェイクライアントを導入するにはプライベートネットワーク内に専用のソフトウェアをインストールする他にも、専用の Docker イメージを使う方法や IBM DataPower アプライアンスサーバーを使う方法があります。今回はゲートウェイクライアントを Docker イメージから作るものとします(プライベートネットワーク内に Docker が導入されたマシンが存在するものとして、以降「Docker ホストマシン」と表現します)。そして接続方法に "Docker" を選択します。すると、Docker ホストマシン上で実行するべきコマンドが表示されます。ここに書かれている "docker run -it" で始まるコマンドを、プライベートネットワーク内の Docker ホストマシンで実行します:
2017040506


多くの場合、ここで作成する Docker イメージを起動したまま Docker ホストマシンのコマンドを抜けることになると思うので、Docker ホストマシンでコマンドを実行する前に一度 screen などでターミナルを多重化しておくのがいいと思います:
$ screen

その上で上記コマンドを実行するとこのような画面になり、最後にプロンプトが表示されます。Secure Gateway クライアントが起動した状態で Docker イメージが起動し、コマンド待ち状態になっています:
$ docker run -it ibmcom/secure-gateway-client XXXXXXXX_prod_ng
IBM Bluemix Secure Gateway Client Version 1.7.0
************************************************************************************************
You  are running the  IBM Secure  Gateway Client for Bluemix. When you enter the provided docker
command the IBM Secure Gateway Client  for Bluemix automatically downloads as a Docker image and
is executed on your system/device. This is released under an IBM license. The  license agreement
for IBM  Secure Gateway Client for Bluemix is available at the following location:

http://www.ibm.com/software/sla/sladb.nsf/lilookup/986C7686F22D4D3585257E13004EA6CB?OpenDocument

Your use of the components of the package and  dependencies constitutes your acceptance  of this
license agreement. If you do  not want to accept the license, immediately quit  the container by
closing the  terminal  window or by  entering 'quit' followed by the ENTER key. Then, delete any
pulled Docker image from your device.

For client documentation, please view the ReadMe located at:
.rpm and .deb installers: /opt/ibm/securegateway/docs/
.dmg installer:           <installation location>/ibm/securegateway/docs/
.exe installer:           <installation location>\Secure Gateway Client\ibm\securegateway\docs\
************************************************************************************************


<press enter for the command line>
[2017-04-04 11:20:59.269] [INFO] (Client ID 1) No password provided. The UI will not require a password for access
[2017-04-04 11:20:59.278] [WARN] (Client ID 1) UI Server started. The UI is not currently password protected
[2017-04-04 11:20:59.279] [INFO] (Client ID 1) Visit localhost:9003/dashboard to view the UI.
[2017-04-04 11:20:59.521] [INFO] (Client ID 15) Setting log level to INFO
[2017-04-04 11:21:01.562] [INFO] (Client ID 15) The Secure Gateway tunnel is connected
[2017-04-04 11:21:01.752] [INFO] (Client ID XXXXXXXX_eoF) Your Client ID is XXXXXXXX_eoF
XXXXXXXX_eoF>

(追記)
ダッシュボード画面に表示されている Docker コマンドは上記(docker run -it ****)なのですが、実際にはネットワークモードをデフォルトのブリッジではなくホストモードで起動しないとエラーが発生する、という症状が出ることもあるので、その場合はホストモード(docker run --net=host -it ****)での起動を試みてください。自分はホストモードで起動しています。
(追記終わり)


このクライアントのワーカー ID (Essentials プランの場合は大抵1だと思いますが)を後で使うので確認しておきます。このプロンプトにおいて "L" という List の短縮コマンドを実行して、Worker ID を確認します:
XXXXXXXX_eoF> L
----------------------------------------
-- Current Secure Gateway Client Connections --

 Worker ID   Client ID     Description
      1     XXXXXXXX_eoF          木村家GW
----------------------------------------
XXXXXXXX_eoF>

もしもここでワーカー ID が確認できなかった場合は、何らかの原因でゲートウェイサーバーとの接続がうまく行ってないことになります。その場合は手動でゲートウェイ ID を指定して接続する必要があります。ゲートウェイ ID を確認するには Secure Gateway ダッシュボードで接続名(下図の場合は「木村家GW」)の右にある歯車マークをクリックします:
2017040502


すると以下のような画面が表示され、ゲートウェイ ID が表示されるので、この値をコピーしておきます:
2017040508


改めてゲートウェイクライアントのプロンプトで、以下のように指定してゲートウェイサーバーと接続します:
XXXXXXXX_eoF> c (ゲートウェイID)

その後、上記の L コマンドで接続を再確認してください。


ではここで確認したワーカー ID を使って、接続を許可するリソースを指定します。例えばプライベートネットワーク内のデータベースサーバーの IP アドレスが 192.168.0.101 で、データベースシステムが MySQL (ポート番号 3306)だった場合、以下のコマンドを実行して、Secure Gateway による接続を許可します:
XXXXXXXX_eoF> A 192.168.0.101:3306 1

  ↑最後の1はワーカーID


なお、上記で触れたようにゲートウェイクライアントで screen を実行してから Docker イメージを起動していた場合、キーボード操作で Ctrl + A, D (Ctrl を押しながら A 、続いて Ctrl を離して D)を実行すると Docker イメージを起動したまま screen を抜ける(デタッチする)ことができます:
XXXXXXXX_eoF> (Ctrl + A, D を実行)
$ 

こうしてデタッチした screen に再び接続(アタッチ)するには screen -r コマンドを実行します:
$ screen -r

XXXXXXXX_eoF>


これだけで Bluemix のランタイム(アプリケーションサーバー)などから、Secure Gateway を経由してプライベートネットワークのデータベース等に接続することができるようになります。 実際に接続する場合にランタイム側からどのようなサーバーとポートに対して接続すればよいのかを確認します。


先程の Secure Gateway のダッシュボード画面の、作成したゲートウェイの画面において、「宛先」タブを選び、上記で定義済みの宛先の設定ボタン(右下の歯車アイコン)を選択します:
2017040701


すると以下のような画面になります。ここで「リソース・ホスト:ポート」にはオンプレミス上の接続先リソースの情報が表示されますが、「クラウド・ホスト・ポート」に表示されているホスト名とポート番号の組み合わせをコピーしてください。そして実際のアプリケーションランタイムからは、このホスト名とポート番号に対して接続することでハイブリッドなクラウド環境が実現できます:
2017040702




このページのトップヘ