IBM Cloudで利用できるメインフレーム版Linux(LinuxONE)の仮想サーバーを試してみた

# 1. はじめに
IBM Cloudには、`IBM Cloud Hyper Protect Services`というものが存在し、IBM Zのメインフレーム技術をベースに作られたLinuxONEを使ってConfidential Computingを実現しています。

- IBM Cloud Hyper Protect Crypto Services:
KYOK(Keep Your Own Key)を実現する鍵ソリューションです。専用のhardware security module (HSM)を利用することで、業界最高クラスの`FIPS 140-2 Level 4`を実現します。Level 4まで取得しているHSMをパブリック・クラウドサービスは私の知る限りはIBM Cloud以外は存在しないんじゃないかと思います（もしあったら教えてください！）

- IBM Cloud Hyper Protect DBaaS:
Database as a serviceです。PostgreSQLとMongoDB EEから選択できます。どちらも３つのAZにまたがった高可用構成が取られています。
    - https://cloud.ibm.com/docs/services/hyper-protect-dbaas-for-mongodb?topic=hyper-protect-dbaas-for-mongodb-overview&locale=en-US
    - https://cloud.ibm.com/docs/services/hyper-protect-dbaas-for-postgresql?topic=hyper-protect-dbaas-for-postgresql-overview&locale=en-US

- IBM Cloud Hyper Protect Virtual Servers
仮想サーバーです。本稿のメイントピックです。
    - https://cloud.ibm.com/docs/services/hp-virtual-servers?topic=hp-virtual-servers-overview&locale=en-US
    - https://www.ibm.com/cloud/hyper-protect-virtual-servers

# 2. 注文画面
すごくシンプルです。どのデータセンターに配置するかを選択した後、サーバーのサイズを決めて、SSH公開鍵を設定するだけです。
<img width="1279" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/ec007741-28d8-9a8a-2809-a11feb8e2287.png">

注)本来はDCを選ぶのだから`Select a region`ではなく`Select a zone`とか`Select a DC`とかの方が適切なように思います。このサービスではドキュメントを通して１つのDCをregionと呼んでいることがあるようです。

# 3. 構成画面
こちらもすごくシンプルです。vCPU数とメモリサイズ、Public IPとPrivate IPが載っているだけです。Private IPとしては172.x.x.xが使われていました。
<img width="1279" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/98d51741-b2af-3575-14c6-5ca37d522206.png">

# 4. ログインして環境を覗いてみる
サーバーにログインする際には、SSH公開鍵認証でログインします。S390などのキーワードが出てきてドキドキします。

```txt:
root@zdal101:~# cat /etc/issue
Ubuntu 18.04.3 LTS \n \l

root@zdal101:~# uname -a
Linux zdal101 4.15.0-55-generic #60-Ubuntu SMP Tue Jul 2 18:21:03 UTC 2019 s390x s390x s390x GNU/Linux

# cat /proc/cpuinfo
vendor_id       : IBM/S390
# processors    : 1
bogomips per cpu: 1048.00
max thread id   : 0
features	: esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te vx vxd vxe gs
facilities      : 0 1 2 3 4 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 47 48 49 50 51 52 53 54 57 58 59 60 64 69 71 73 74 75 76 77 78 80 81 82 129 130 131 133 134 135 138 139 146 147 156
cache0          : level=1 type=Data scope=Private size=128K line_size=256 associativity=8
cache1          : level=1 type=Instruction scope=Private size=128K line_size=256 associativity=8
cache2          : level=2 type=Data scope=Private size=4096K line_size=256 associativity=8
cache3          : level=2 type=Instruction scope=Private size=2048K line_size=256 associativity=8
cache4          : level=3 type=Unified scope=Shared size=131072K line_size=256 associativity=32
cache5          : level=4 type=Unified scope=Shared size=688128K line_size=256 associativity=42
processor 0: version = FF,  identification = 0A97E8,  machine = 3907

cpu number      : 0
cpu MHz dynamic : 4504
cpu MHz static  : 4504

```
Firewallなどは構成されていませんので、自分で構成する必要があります。Docsには以下のように記載されています。
https://cloud.ibm.com/docs/services/hp-virtual-servers?topic=hp-virtual-servers-protect_vs&locale=en-US
> Hyper Protect Virtual Server is a service that is used to provide highly secure virtual servers. The difference to common virtual servers from a security perspective is that an instance that is created from this IBM Cloud™ service is running on a secured stack. Even IBM Cloud system administrators cannot access your data nor track your usage. They also do not have insight into the security status of your virtual server. In addition, they are limited in setting up or changing the configuration of your virtual server.
However, the provided virtual server is still a virtual server – which is accessible from the internet. From a security perspective, you need to protect the virtual server instance itself.
For Ubuntu, different System Hardening Guide documents are available. Select the strategy and implementations depending on your companies’ location and policies.

https://cloud.ibm.com/docs/services/hp-virtual-servers?topic=hp-virtual-servers-faqs&locale=en-US#faq11
> Q: How can I adjust the firewall of my virtual server?
A: A newly generated IBM Cloud™ virtual server, which is provided with an Ubuntu Linux operating system, has iptables, the Linux firewall utility," preinstalled. Investigate, what firewall tool you want or need to use in your environment.

# 5. 他のVSIと通信してみる。

```txt:DAL10のVSIからDAL10の別のVSIへping
# ping 172.18.27.114
PING 172.18.27.114 (172.18.27.114) 56(84) bytes of data.
64 bytes from 172.18.27.114: icmp_seq=1 ttl=64 time=0.137 ms
64 bytes from 172.18.27.114: icmp_seq=2 ttl=64 time=0.179 ms
64 bytes from 172.18.27.114: icmp_seq=3 ttl=64 time=0.163 ms
64 bytes from 172.18.27.114: icmp_seq=4 ttl=64 time=0.167 ms
```

```txt:DAL10のVSIからDAL13のVSIへping。2.22msecぐらいなので確かにZone間通信ぐらいの距離からの応答！
# ping 172.18.155.114
PING 172.18.155.114 (172.18.155.114) 56(84) bytes of data.
64 bytes from 172.18.155.114: icmp_seq=1 ttl=55 time=2.22 ms
64 bytes from 172.18.155.114: icmp_seq=2 ttl=55 time=2.24 ms
64 bytes from 172.18.155.114: icmp_seq=3 ttl=55 time=2.24 ms
64 bytes from 172.18.155.114: icmp_seq=4 ttl=55 time=2.22 ms
```

```txt:DAL10のVSIからSYD01のVSIへping。通信できず。
# ping 172.19.23.74
PING 172.19.23.74 (172.19.23.74) 56(84) bytes of data.
^C
--- 172.19.23.74 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3101ms
```

なお、こういう注意書きが書かれていました。
https://cloud.ibm.com/docs/services/hp-virtual-servers?topic=hp-virtual-servers-provision&locale=en-US
> As soon as you create a virtual server instance, a virtual LAN (VLAN) is transparently created or assigned. One VLAN is used within one region for one account. Each VLAN can contain up to five virtual servers per data center. A VLAN is deleted as soon as you delete the last virtual server instance that is assigned to this VLAN.


# 6. その他気がついたこと

サーバー自体はメインフレームの技術で強化かもしれませんが、本格的に採用するには色々な壁がありそうです。

- Firewall ServiceやLoad BalancerやStorageサービスはない。
- バックアップソリューションは用意されていない
- 1データセンターあたりのVSI数は5つまで
https://cloud.ibm.com/docs/services/hp-virtual-servers?topic=hp-virtual-servers-faqs&locale=en-US