IBM Cloud の Hyper Protect Virtual Server と DBaaS を試してみた

#はじめに
IBMメインフレーム (IBM Z) のLinuxがクラウドで、[Hyper Protect Services](https://www.ibm.com/jp-ja/cloud/hyper-protect-crypto)として利用できるようになっています。

メインフレームをクラウドで利用するということに、いったいどんなユースケースがあるんだろうかと調べたところ、こんな記事がありました。

>[Using IBM Cloud Hyper Protect Services with Apple CareKit](https://developer.ibm.com/technologies/security/blogs/using-ibm-cloud-hyper-protect-services-with-apple-carekit/) (IBM Developer Blog)
[carekit-apple / IBM-HyperProtectSDK](https://github.com/carekit-apple/IBM-HyperProtectSDK) (GitHub)

>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/2141941b-592d-aec6-e37a-9723732de689.png)


身体や病気の情報はかなりプライベートなデータですし、ヘルスケアはまだまだ新しいサービスが出てくる分野だと思うので、
"セキュリティ x 手軽さ" を実現する "メインフレーム x クラウド" の相性は良いかも知れないですね。

"Hyper Protect" の中でもいくつかのサービスがIBM Cloudの無料プランで触れるようですが、今回は上図のイメージで[Hyper Protect Virtual Server](https://cloud.ibm.com/docs/hp-virtual-servers?topic=hp-virtual-servers-overview&locale=ja) と[Hyper Protect DBaaS](https://cloud.ibm.com/catalog/services/hyper-protect-dbaas-for-postgresql)を繋ぐところまで試してみたいと思います。


#Virtual Server と DBaaS

Virtual Serverについては、以下記載があり、クラウドの管理者でもデータにアクセスできないよう保護されています。
>セキュア・サービス・コンテナー内に仮想サーバーをデプロイできます。これにより、仮想サーバーで実行するデータとコードの機密性を確保できます。 お客様のデータへの外部アクセスは、クラウド管理者などの特権ユーザーを含め許可されません
https://cloud.ibm.com/docs/hp-virtual-servers?topic=hp-virtual-servers-overview

>IBM Cloud システム管理者でさえ、お客様のデータにアクセスすることも、使用状況を追跡することもできません。 
https://cloud.ibm.com/docs/hp-virtual-servers?topic=hp-virtual-servers-protect_vs

DBaaSについてもやはり暗号化され、特別に保護されています。
>パーベイシブ暗号化 (全方位型暗号化) と IBM Secure Service Container テクノロジーを活用して、ワークロードを分離し、管理者権限を制限し、保存されたデータと伝送途中のデータを改ざんから保護します。 
https://cloud.ibm.com/docs/hyper-protect-dbaas-for-postgresql?topic=hyper-protect-dbaas-for-postgresql-overview

どちらのHyper Protectサービスも、SSC (Secure Service Container) という区画、テクノロジーを利用してデプロイされ、
SSCは、IBMが提供するBlockchainサービスなどでも利用されている特別にセキュリティを担保した区画のようです。

#5分で完了！ Hyper Protect Virtual Serverの作成


**リージョンと料金プランの選択**

いくつかのリージョンが選べるようですが、今回はデフォルトのダラス10で進めてみます。
現時点（2020年8月）ではまだ東京リージョンにはリリースされていないようです。
（*2021年8月追記：鍵管理を専門に行う「Hyper Protect Crypto Services」は2021年7月末に東京リージョンでリリースされています。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/f848e998-3c0f-9c19-8ada-0c272dc66a9d.png)



無料プランで30日間利用できます。
*クレジットカード未登録の「ライト・アカウント」では無料プランを選択できません。（2020年8月）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/6a5aea48-5127-11bb-950a-a08f20a98154.png)


**鍵の作成とリソースの構成**

使用するLinuxやMacであらかじめ`ssh-keygen`コマンドを実行し鍵のペアを作成しておきます。

```
$ ssh-keygen
```

公開鍵の内容を確認しウィンドウに貼り付けます。

```
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAXXXXXXXX XXXX.com
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/5a1a585f-3503-7adf-a0c7-2f0956934662.png)


**作成実行（プロビジョン）と接続**

作成ボタンを実行すると自動的にリソース・リストの画面に切り替わり、プロビジョンが進みます。私の環境では2-3分後にはアクティブ状態に切り替わっていました。
無事ダラスで稼働しているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/4da24a07-c5bb-da30-5022-cfa2da386334.png)

アクセス方法も丁寧にガイドされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/3b7dfa99-1fb3-1465-a63b-3242e29d9c7f.png)


無事アクセスできました。

```
$ ssh root@169.xx.xx.xx
Ubuntu 18.04.5 LTS
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-99-generic s390x)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 * Are you ready for Kubernetes 1.19? It's nearly here! Try RC3 with
   sudo snap install microk8s --channel=1.19/candidate --classic

   https://microk8s.io/ has docs and details.
Unauthorized access to this machine is prohibited.
You have new mail.
Last login: Fri Aug 21 09:23:00 2020 from 124.xxx.xxx.xx
root@cb47a7fcd8fe:~#
```




#Hyper Protect DBaaSと接続してみた

**DBaaSの起動とアクセス**

[DBaaS for PostgreSQL](https://cloud.ibm.com/catalog/services/hyper-protect-dbaas-for-postgresql)を起動してみたいと思います。

Virtual Serverと同様に、ダラスなどで30日間無料で使えるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/508707ba-24b1-6d24-1517-672d368c1583.png)


こちらの4箇所が入力必須のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/b6187a6e-a6aa-19c9-8ab3-cf1fd816fbde.png)

作成ボタン実行後、5分程度待ったらアクティブになっていました。
CAファイル(cert.pem)と、psqlコマンドのテンプレートが用意されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695023/7ad5b3b2-96b3-ef7c-cc3c-75e6e09b57bf.png)

**Vertual ServerとDBaaSの接続**

先ほどのVirtual Serverから接続してみたいと思います。
CAファイルをwgetまたはcurlでダウンロードします。
（ローカルにダウンロードしてコピペやファイル転送でも良いと思います。）

```
root@cb47a7fcd8fe:~# apt update
root@cb47a7fcd8fe:~# apt install curl
root@cb47a7fcd8fe:~# curl -o cert.pem <CAファイルのURL=https://cloud.ibm.com/hyperp-dbaas/cert.pem?target_crn=crnXXXXXXXXXX>
```

psqlコマンドが使えるようにpostgresをインストールし、用意されていたコマンドテンプレートを修正し接続します。

```
root@cb47a7fcd8fe:~# apt install postgresql
root@34b8f255e6ef:~# psql 'host=dbaas901.hyperp-dbaas.cloud.ibm.com port=28204 sslmode=verify-full sslrootcert=cert.pem user=admin1'
Password:
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

admin1=>
```


無事にPostgresが使用できそうです。

```
admin1=> \l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 admin1    | admin1   | UTF8     | C       | C     | =Tc/admin1           +
           |          |          |         |       | admin1=CTc/admin1
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(4 rows)

admin1=>
```




#感じたこと

IBMメインフレームというと基幹系や勘定系のイメージがありましたが、Linuxがクラウドで利用可能になっていました。
前述のヘルスケアのユースケースの他にも、FinTech、マイナンバー絡みで保険業界のサービスなど、"セキュリティ x 新しいサービス" の分野ではHyper Protect Servicesが使われるようになり、何気なく利用するクラウドサービスもメインフレームが提供している、という状況が出てくるのかも知れません。

#参考文献
>[IBM Cloudで利用できるメインフレーム版Linux(LinuxONE)の仮想サーバーを試してみた](https://qiita.com/testnin2/items/371f345d76f0a1e9f6e8)