Cloud Pak for Data as a Service から IBM Cloud のデータベース・サービスへの接続時、Private Endpointを使用する

## 本記事の目的

本記事では、IBM Cloud上で提供される Cloud Pak for Data as a Service (以降、CP4DaaSと表記) を対象に、CP4DaaSから分析用データソースへの接続でPrivate Endpointを指定する方法を紹介します。

## 1. Private Endpoint とは

Private Endpointは、IBM Cloudのサービス・エンドポイントに対応するサービスで利用可能なオプションです。
リソースでPrivate Endpointを有効化すると、IBM Cloudプライベート・ネットワーク経由でのリソース・アクセスが可能になります。
例えば、IBM Cloud上の仮想サーバー(Virtual Server Instance:VSI)にデプロイしたアプリケーションから、IBM Cloud上のデータベース・サービスにアクセスする場合など、IBM Cloud上のリソース同士の通信に利用することができます。
Private Endpointのみを有効化したリソースは、インターネットでルーティング可能な IP アドレスを持たないため、パブリック・インターネットへのアクセスを制限したい場合に役に立ちます。

- Private Endpointを利用可能なサービス
    - 「サービス・エンドポイントを使用したサービスへのセキュアなアクセス」＞「サービス・エンドポイントの使用」参照
    - https://cloud.ibm.com/docs/account?topic=account-vrf-service-endpoint&interface=ui

- 上記URLより引用：図 1. サービス・エンドポイントを介してルーティングされるトラフィック 
    ![image.png](https://cloud.ibm.com/docs-content/v1/content/ff9c5ffeb676ecd87041bd8ea0fc6ed9dbcac6c6/nl/ja/account/images/CSE.png)


以降の節では下記の2パターンについて、Db2 on CloudのデータをPrivate Endpoint経由で利用できることを確認します。

- 同一アカウントのCP4DaaSからDb2 on Cloudへの接続にPrivate Endpointを指定する
- 別アカウントのCP4DaaSからDb2 on Cloudへの接続にPrivate Endpointを指定する

## 2. 同一アカウントのCP4DaaSからDb2 on Cloudへの接続にPrivate Endpointを指定する

CP4DaaSはIBM Cloud上のリソースです。そのため、分析のデータソースとしてIBM Cloudのデータベース・サービスを使用する際、Private Endpointを指定可能です。
IBM Cloudのデータベース・サービスのうち、Db2 on Cloudを使用し、Private Endpointを利用してみます。

今回は、Cp4DaaSとDb2 on Cloudが同一のIBM Cloudアカウントに存在します。

- 2サービスはアカウント名「FreeUsage2022************」に存在
    - Db2 on Cloud
        - 右上のアカウント名より確認 
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/fe0c3eb5-5de9-0144-0f67-f1131c6d8252.png)
    - Cp4DaaS
        - CP4DaaSのアカウントページより確認 
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/db02886e-e295-f070-dc8c-ff067cf33a8a.png)


### 2-1. Db2 on Cloudの作成

- IBM Cloudのデータベース・サービスのリソース作成時、Service Endpointにて、Private Networkを指定します。
    - Db2 on Cloudでは、作成済みのリソースについて、後からPrivate Networkを有効化することも可能です。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/04ef15af-ff4b-a373-52a6-47371799c210.png)

- IBM CloudのDb2 on Cloud詳細画面より、データベース資格情報を作成し、ユーザー名とパスワードを控えます。
    - -u の文字列がユーザー名 　：例では98a82678
    - -p の文字列がパスワード 
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/5d773b48-a2d4-9af1-7616-c5a8c502404d.png)

- Db2 on Cloudのコンソールへアクセスし、「管理」＞「接続」と進み、プライベート・エンドポイントのホスト名、データベース名、ポート番号を控えます。
    - プライベート・エンドポイント用のホスト名の末尾は、`private.databases.appdomain.cloud`となります。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/afa22439-c6a9-cec2-588c-0096aa801e68.png)

- CP4DaaSで使用する分析データソース用に、表を作成します。
    - 例では、[IRISデータセット](https://archive.ics.uci.edu/ml/datasets/iris)を使用し、IRIS表を作成しました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/57cc5d72-f28e-64e6-8a28-37c44868f01d.png)

### 2-2. CP4DaaSへのデータベース接続情報の登録（接続資産および接続データ資産の作成）

CP4DaaSでは、「接続資産」と呼ばれるタイプの資産を作成し、データソースへの接続情報を登録します。
 
- Watson Studioプロジェクトで、新規資産の作成に進み、「接続」を指定します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/ec1a4858-83b4-77a1-1e5b-f7cb4a7c7123.png)

- データソースのタイプとして、「Db2 on Cloud」を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/cf1606d4-ffa7-20bf-7dbf-3907ea511ef6.png)
- 資産の作成画面にて、控えておいたDb2 on Cloudの接続情報と資格情報を指定します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/1fb56e1f-27d5-4f93-dcbf-f61266087e70.png)
- 画面右上の「テスト接続」をクリックし、Db2 on Cloudにアクセスできることを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/993b77d7-2787-dbd5-0b21-93083c763768.png)
- 「作成」をクリックし、内容を保存します。
- プロジェクトの資産一覧へ、接続資産が追加されています。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/740ab764-8693-6312-5562-1e657a8979fc.png)

次に、作成した「接続資産」を利用し、データベース上の1表に対応する「接続データ資産」を作成します。

- Watson Studioプロジェクトで、新規資産の作成に進み、「接続データ」を指定します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/04201a65-622f-e91b-9db7-655b5564cadb.png)
- ソースの選択をクリックします。開いた画面にて、前の手順で作成した「Db2 on Cloudの接続資産」＞「スキーマ名」＞「分析データソース用の表」を指定し、選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/3528cf32-2d61-9ef5-5352-5d947cc42e03.png)
- 名前を入力した後、「作成」をクリックし、内容を保存します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/d2507d63-2bdd-caab-529f-c01f0aed8958.png)
- プロジェクトの資産一覧へ、接続データ資産が追加されています。接続データ資産をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/ee04084d-a061-722f-36f5-b33d9dd0e3af.png)
- 表データの一部がプレビュー表示されます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/70a1b5f4-0fbc-f02e-1838-b232de3097d5.png)

### 2-3. 接続データ資産の利用

分析ツールのデータソースとして、2-2で作成した「接続データ資産」を使用します。
分析ツールとして、SPSS Modelerを使用します。

- Watson Studioプロジェクトで、新規資産の作成に進み、「SPSS Modeler」を起動します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/5ee9ad82-df6d-b088-df51-d1fd46128d57.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/ff15b295-73e0-83b9-33d4-23e929828d94.png)
- 開いたフローエディターにて、インポート・カテゴリより、データ資産ノードを追加します。
- データ資産ノードをダブルクリックし、2-2で作成した「接続データ資産」を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/40d5b901-5850-5720-d1d3-b98d288779d1.png)
- データ資産ノードのプロパティへ、選択した「接続データ資産」が表示されたことを確認し、「保存」をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/5124bde3-b72b-5af4-c3be-38c2acbf611d.png)
- グラフ・カテゴリの 散布図ノードを追加し、データ資産ノードと接続します。
- 散布図ノードをダブルクリックし、プロパティで散布図のX軸とY軸で使用する列を指定します。その後、「保存」をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/03d20d1c-483e-641b-c96e-740b36af26c7.png)
- グラフノードを選択し、ストリームを実行します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/616b77f7-52f6-5d2d-3197-d3b476d70b1e.png)
- ストリームの実行完了後、グラフを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/c5d871f9-6239-5357-267e-03324f3c123f.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/b54b102a-181c-a8ef-cfc8-5d56ba1364e5.png)

Db2 on CloudのデータをPrivate Endpoint経由で利用することができました。

### 2-4.  Db2 on Cloudから接続状況を確認

Db2 on CloudのWebコンソールより、「ダッシュボード」＞「アプリケーション」＞「接続」と進みます。
アプリケーションからの接続状況のリストへ、`modelersrv_saas`という名前の接続が表示されています。クライアントIPアドレスは`10.133.106.167`となっており、プライベートIPアドレスが使用されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/c4c1be5d-685a-6cc8-ba0c-6dfc703137a9.png)

## 3. 別アカウントのCP4DaaSからDb2 on Cloudへの接続にPrivate Endpointを指定する

今回は、Cp4DaaSとDb2 on Cloudが異なるIBM Cloudアカウントに存在します。

- Db2 on Clodは、アカウント名「FreeUsage2022************」に存在
    - 右上のアカウント名より確認 
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/fe0c3eb5-5de9-0144-0f67-f1131c6d8252.png)
- CP4DaaSは、個人アカウントに存在
    - CP4DaaSのアカウントページより確認 
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/1d5b96e0-bed8-7f52-c8d5-dba0bc82f433.png)


### 3-1. Db2 on Cloudの作成

2-1で作成したDb2 on Cloudを使用します。

### 3-2. CP4DaaSへのデータベース接続情報の登録（接続資産および接続データ資産の作成）

2-2の手順を実施します。この時、個人のIBM Cloudアカウントに作成したCp4DaaSを使用します。 
手順は同じですので、接続のテストおよび表データをプレビューした際の画面キャプチャのみ掲載します。

CP4DaaSでは、「接続資産」と呼ばれるタイプの資産を作成し、データソースへの接続情報を登録します。

- Watson Studioプロジェクトで、新規資産の作成に進み、「接続」を指定します。
- データソースのタイプとして、「Db2 on Cloud」を選択します。
- 資産の作成画面にて、控えておいたDb2 on Cloudの接続情報と資格情報を指定します。
- 画面右上の「テスト接続」をクリックし、Db2 on Cloudにアクセスできることを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/06b3e7ee-35ac-7345-660b-a9daca6940df.png)
- 「作成」をクリックし、内容を保存します。
- プロジェクトの資産一覧へ、接続資産が追加されています。

次に、作成した「接続資産」を利用し、データベース上の1表に対応する「接続データ資産」を作成します。

- Watson Studioプロジェクトで、新規資産の作成に進み、「接続データ」を指定します。
- ソースの選択をクリックします。開いた画面にて、前の手順で作成した「Db2 on Cloudの接続資産」＞「スキーマ名」＞「分析データソース用の表」を指定し、選択します。
- 名前を入力した後、「作成」をクリックし、内容を保存します。
- プロジェクトの資産一覧へ、接続データ資産が追加されています。接続データ資産をクリックします。
- 表データの一部がプレビュー表示されます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/a8eed9be-0a9a-4491-a24a-f0d47a91eb63.png)


### 3-3. 接続データ資産の利用

2-3の手順を実施します。この時、個人のIBM Cloudアカウントに作成したCp4DaaSを使用します。 
手順は同じですので、グラフを表示した際のキャプチャのみ掲載します。

- Watson Studioプロジェクトで、新規資産の作成に進み、「SPSS Modeler」を起動します。
- 開いたフローエディターにて、インポート・カテゴリより、データ資産ノードを追加します。
- データ資産ノードをダブルクリックし、2-2で作成した「接続データ資産」を選択します。
- データ資産ノードのプロパティへ、選択した「接続データ資産」が表示されたことを確認し、「保存」をクリックします。
- グラフ・カテゴリの 散布図ノードを追加し、データ資産ノードと接続します。
- 散布図ノードをダブルクリックし、プロパティで散布図のX軸とY軸で使用する列を指定します。その後、「保存」をクリックします。
- グラフノードを選択し、ストリームを実行します。
- ストリームの実行完了後、グラフを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/6f78277f-c1ca-0ddd-4df2-2fc6e8184cc5.png)

IBM Cloudサービス・エンドポイント対応サービスで作成したPrivate Endpointは、IBM Cloudの別アカウントからも利用できることが確認できました。

### 3-4. Db2 on Cloudから接続状況を確認

Db2 on CloudのWebコンソールより、「ダッシュボード」＞「アプリケーション」＞「接続」と進みます。
アプリケーションからの接続状況のリストへ、`modelersrv_saas`という名前の接続が表示されています。クライアントIPアドレスは`10.133.106.167`となっており、2-4と同じプライベートIPアドレスが使用されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/69746dbb-6836-462c-9e6a-2038bae182c0.png)


## 4. 関連資料

製品資料：IBM Cloud サービスへのプライベート接続
https://cloud.ibm.com/docs/overview?topic=overview-endpoints-support&locale=ja

製品資料：VRF およびサービス・エンドポイントの有効化
https://cloud.ibm.com/docs/account?topic=account-vrf-service-endpoint&interface=ui