1. はじめに
IBM CloudのHyper Protect xxx
というサービスは、全てLinuxONE(IBM Z環境)を利用したConfidential Computingのクラウドサービスである。これに加えて、Intel SGXを使ったx86のConfidential ComputingもIBM Cloud上で提供されている。今回、新たにHyper Protect Virtual Server for VPCというConfidential Computingを実現するコンテナの実行環境が最近提供開始されたので試してみた。
参考情報
- https://cloud.ibm.com/docs/vpc?topic=vpc-about-se
- https://cloud.ibm.com/docs/vpc?topic=vpc-about-attestation
- https://cloud.ibm.com/docs/vpc?topic=vpc-about-contract_se
- https://cloud.ibm.com/docs/vpc?topic=vpc-cert_validate
- https://mediacenter.ibm.com/media/IBM+Cloud+Hyper+Protect+Virtual+Server+for+VPC/1_mj9ksaob
- https://mediacenter.ibm.com/media/Confidential+Computing+for+a+financial+transaction+using+Hyper+Protect+Virtual+Server+for+VPC/1_vv3j2oo6
- https://www.imagazine.co.jp/tec-j-confidential-computing2023/
2. Confidential Computingとは(概略)
-
data at rest
(ストレージなどへの保管中のデータ) -
data in transit
(ストレージからコンピューターへの転送中のデータ。もしくはコンピューター間の転送中のデータ)
のそれぞれに対して暗号化する手段は一般的に確立されている。一方で、
-
data in use
(処理中のデータ)
はコンピューター上のメモリ上に展開されており、一般的に暗号化されていない。そのため、例えば
- ソフトウエア脆弱性による権限昇格攻撃
- OSやハイパーバイザーによるメモリダンプ
- コールドブート攻撃
- システム管理者によるメモリ内容の取得
などに対する脆弱性が考えられるため、この「処理中のデータ」に対してもメモリを暗号化するとか、何かしらのメモリ保護機能を提供することで安全性を確保しようというのがConfidential Computingである。
Confidential Computing Consortiumによる定義は以下の通り。
Confidential Computing protects data in use by performing computation in a hardware-based Trusted Execution Environment. These secure and isolated environments prevent unauthorized access or modification of applications and data while in use, thereby increasing the security assurances for organizations that manage sensitive and regulated data.
Today, data is often encrypted at rest in storage and in transit across the network, but not while in use in memory. Additionally, the ability to protect data and code while it is in use is limited in conventional computing infrastructure. Organizations that handle sensitive data such as Personally Identifiable Information (PII), financial data, or health information need to mitigate threats that target the confidentiality and integrity of either the application or the data in system memory.
Confidential Computingは、一般的にはHW機能でメモリ上にTEE(Trusted Execution Environment)
とかSecure Encrave
と呼ばれる隔離された環境を作成することで実現される。ただ、TEE/Secure Encraveは隔離された環境を提供するだけであり、この隔離された環境をどうやって保護するか?(例えば鍵をどこにどうやって保管するのか?署名はどうするか?どうやってホストを信頼する仕組みを作るのか?)なども、色々やり方がありプラットフォームによって異なる。LinuxONE(IBM Z環境)ではIBM Secure Execution for Linuxというメモリ保護機構が使われており、Ultravisor
というコンポーネントがKVMの代わりにsensitiveな作業を実施している。例えばメモリ上のpageのswap outをする時にはHypervisorがそのpageにアクセスする前に、Ultravisor
がそのハッシュ値を記録して暗号化を実施しており、再度そのpageがメモリ上に読み込まれる際には復号処理と改ざんがされていないかどうかをハッシュ値と突き合わせて検証する、などの作業を行なっている。そのため、Hypervisorは暗号化されたpageにしかアクセスできないことが保証される。
https://www.ibm.com/docs/en/linux-on-systems?topic=linux-components
なお、以下の記事は実際にメモリ上のデータを覗き見たりを試してみており、管理者であればこんなに簡単にメモリ上のデータを読み取れるのだということがわかるので、Confidential Computing採用の動機を理解する上で、一読をお勧めする。
体験 Confidential Computing -1 - ビットコイン・ウォレット を乗っ取って Confidential Computing の必要性を体験する
3. Hyper Protect Virutual Server for VPCとは
以下に主な特徴や注意点を記す。
- LinuxONE(IBM Z環境)のIBM Secure Execution for Linuxの技術を利用してConfidential Computingを実現している。
- VPC上のVSIを注文する際に、
Hyper Protect Container Runtime Image
と呼ばれるOSイメージを利用する。このOSイメージを使ったVSIがHyper Protect Virtual Server(HPVS) for VPC
である。HPVS for VPCは、LinuxONE上のKVM guestであり、VPCの各種機能(security groupとかLoad BalancerとかSnapshotとか)の恩恵を受けることができる。元となるイメージの名称がHyper Protect Container Runtime Image
であることから分かるように、HPVS for VPCはコンテナのランタイム環境を提供するVSIであり、このVSI上でアプリケーションコンテナを実行する。 - HPVS for VPCにはSSHでログインすることはできない。よって注文時にSSH Keyを指定する必要はない(指定しても意味がない)。HPVS for VPCではSSHは使えないし、cloud-initによって提供されたSSH keyがあっても利用されない(無視される)。
- x86環境のVSI for VPCでも、カスタムスクリプトを実行するために
User data
という入力画面があったが、HPVS for VPCでもここにContract
と呼ばれるyamlを必ず指定する。このContract
に起動するべきコンテナー情報などを含める。逆にHPVS for VPCの肝は、このContract
をどのように構成するかに依存すると言って良い。Contractについてはサンプル込みで後述するが、逆にUser data
に何も設定しなかったり(つまりContract
が空だったり)、その内容が不適切だった場合(例えば文法エラーとか認証に失敗したとか署名の検証に失敗したとか)は、HPVS for VPCはプロビジョニング後に自動的に停止する。 - ログは、serial consoleと
IBM Cloud Log Analysis with LogDNA
から確認できる。-
IBM Cloud Log Analysis with LogDNA
は必ず事前に購入しておく必要がある。Contract
の中に、IBM Cloud Log Analysis with LogDNA
へのendpoint情報を含める必要があり、IBM Cloud Log Analysis with LogDNA
への接続に失敗するとHPVS for VPCはしばらく経つと自動的に停止してしまう。 - HPVS for VPCのログやアプリケーション・コンテナの標準出力・エラー出力は
IBM Cloud Log Analysis with LogDNA
に出力される。 -
IBM Cloud Log Analysis with LogDNA
自体の構成に失敗した時は、そもそもログ転送されないので、serial consoleを確認する必要がある。
-
- rootファイルシステムはLUKSで暗号化される。data volumeを付けた時は、ユーザーの指定したseedでdata volumeもLUKSで暗号化される。
4. Contractの構成
https://cloud.ibm.com/docs/vpc?topic=vpc-about-contract_se に記載がある。このyamlファイルを、VSI注文時のUser data
に入力する。
-
IBM Cloud Log Analysis with LogDNA
などの設定を実行するenv
セクションと、実際にアプリケーションコンテナー情報を含めるworkload
セクションが必須である。 - アプリケーションのワークロードは、Docker Composeの書式に従って記載し、
docker-compose.yml
もしくはdocker-compose.yaml
に記述する。このyamlファイルを、tgzにアーカイブしてbase64でエンコードしたものをworkload
セクションのcompose.archive
に記述する。
$ tar -czf - docker-compose.yml |base64 -w0
-
Contract
はplain textのままUser data
に入力もできるが、Contract
に暗号化したり署名をすることでよりセキュリティーを高めるオプションも提供されている。
以下に、docker-compose.yml
を作成する際の注意点を記載する。
- Imageはdigestで指定するか、digest利用しない場合はDCT(Docker Content Trust)を
images
サブセクションに設定する必要がある。 - (docsにはまだ明示的に記載はされていないが、)DockerFileを指定してイメージをbuildすることはできない。
- Macでtarコマンドを実施するとリソースフォークファイル(
._
で始まるファイル)を作成してしまい、それをz/Linuxで展開する際に、そのyamlファイルを最初に読み込んでエラーになってしまう。MacはデフォルトでBSD方式のtarを使っているのもその一因なのだが、z/Linux上でこのtgzが展開されることを考えると、一番無難なのは(x86上でもいいので)Linux上でアーカイブすることだと思われる。 - 永続データを保管するために、VPCではboot volume以外に1つだけdata volumeを作成してアタッチすることができる。
- data volumeを作るときは、envセクションおよびworkloadセクションでそれぞれseedの指定が必須。(envセクションとworkloadセクションはそれぞれ別のペルソナを想定しているためだと思われる)
- data volume上のファイルシステムも、ここで指定したseedを利用してLUKSで暗号化される。
5. docker-compose.ymlとContractのサンプル
-
IBM Cloud Log Analysis with LogDNA
のIngestionKeyは、API Keys
の画面から確認できる。 -
IBM Cloud Log Analysis with LogDNA
のendpoint情報は以下で確認できる。public networkを使う理由はないだろうから、syslog-a.private.jp-tok.logging.cloud.ibm.com
のようなprivate endpointを利用した方が良いだろう。
https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-endpoints
5-1 Nginx
services:
nginx:
image: docker.io/library/nginx@sha256:cbb7f985ed5ce8920c0c36e5724239cfaebeaafb68d611ca32047442364f1cfa
ports:
- 80:80
- 443:443
env: |
type: env
logging:
logDNA:
hostname: syslog-a.private.jp-tok.logging.cloud.ibm.com
ingestionKey: xxxxxxxxxxxxxxxxxxxxxx
port: 6514
workload: |
type: workload
compose:
archive: H4sIAJ64DWMAA+3SwW7CMAwG4J55irwA4CRO0vbEq6Rp2lWjFCUwrW9PKdym3RDb4f+kyI5syVaUdgqfMW3DNJ6nHHfzeCxejhaW+R6lM7TeSfEjrqkuJCvnWErjdEGSiU0h6PWr/HTNF5+EKPLs87X1v/b1foz5HQu9V47pawgx1xshTv1w+r4nQgyj72Mt2vV37IZpfxya5NO8X3sO+cMrY+vQNK6rShNbE2JZKQoUtI3GKVa6Cp2PTfS+a2zZWimD14rY8VKz3MmlvI46T+mSH1O3oqS6pGfOrOvlbP76iQAAAAAAAAAAAAAAAAAAAAAAAP6lG3N/95kAKAAA
5-2 Wordpress
2023/03/15 注: 複数コンテナーを記述しても稼働はするようだが、IBM Cloudとしてはenclaveで単一コンテナーのみを稼働させることを推奨しているとのこと(docsも修正予定)。
このプロビジョニングの際には、data volumeが必要なので、注文時にdata volumeも追加しておくこと。
services:
db:
image: docker.io/library/mariadb@sha256:12097ab474fe2ee789b394e1e8a6b489f2ca4ce5ebc8904a14cfddeedb17b8e5
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- /mnt/data/var/lib/mysql:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: docker.io/library/wordpress@sha256:d305e2070c27ad875d51b21ffa5841f64c88720ca7864714b0ed8730f182b159
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
env: |
type: env
logging:
logDNA:
hostname: syslog-a.private.jp-tok.logging.cloud.ibm.com
ingestionKey: xxxxxxxxxxxxxxxxxxxxxx
port: 6514
volumes:
data1:
seed: envseed
workload: |
type: workload
compose:
archive: H4sIALetDmMAA+3Tz2+bMBQH8Jz7V3DriWKDAYMUaakSaYd16UKmaafoGT9SNH5kGNLlvx9QNW3WRdWkqru8zwFk88V+2EbX6Q9s7LQud7XBq0NZTN4c6wVCDHce+mxsM1c83Ps+4XmT/sI83w3GHBdMeBOLvX0pL3WmhcayJuYAptNwNreFEs17FPS+DDb7PEUTX1iWVsPVsvISthhbejwaV3ntFLlqoDk4JTQ5aPXB3IHrBzF3WRSCEqHI0EUMZaS8SCBHCYESMsrcFESKPqpURkwAF2mmNaJWPFQS/XGy/uSVUOnYurRtjRl0RWtD195h1eYptHld2bui2+bVtDyYn8Wm6vv2uNmBMfd1oy/HQfZ10ZUPHzGwLaesWkdDC84emqF+Z3w7Pm2O8QaHE9DGFhT3cDBjH1b7vKmrsi/iacyb78mXT5vVcrne3M6S5NtyNZ+ausShjF0/ivkjOZ+tZ9ezZDE9F/iaLFZnHx6nOA3gr+E/fSrK81hw0mB96/jKK/t5zD3uqPaYjy4LWeqGoGXoa58rl2cZ+FLwLBCplKHLUghlIEIuFMM+5bGMS1dxPxqn29VN+2wrJIsl+7eVHr77drVIks38evNxmaynWv394ZklPMmcWckXuc+zm+d7dfG/f01CCCGEEEIIIYQQQgghhBBCCCGEEEJe9RsnhEeOACgAAA==
volumes:
data1:
filesystem: ext4
mount: /mnt/data
seed: worloadseed
5-3 /var/hyperprotectを参照するbashコンテナー
services:
myscript:
image: docker.io/library/bash@sha256:c24849c84b5500606cea237ab6614c09688aaddf27fb74f84747ad3366fbdad7
volumes:
- /var/hyperprotect:/var/hyperprotect
- /boot/root.tar.gz:/boot/root.tar.gz
command: >
sh -c '
ls -lR /var/hyperprotect
find /var/hyperprotect -type f -exec sh -c "echo ------------; sha256sum {} ; base64 -w0 {} ; echo ; cat {}" \;
sha256sum /boot/root.tar.gz
'
env: |
type: env
logging:
logDNA:
hostname: syslog-a.private.jp-tok.logging.cloud.ibm.com
ingestionKey: xxxxxxxxxxxxxxxxxxxxxx
port: 6514
workload: |
type: workload
compose:
archive: H4sIANrTBWMAA+3SwW6jMBAGYM59ilEvPREMGEyJtOoz9LwXY5uAFurIJmlpte++Dskqldi9Venl/w6YsWYYY1tb9cu4WNlxb73ZzOMQfTkWlJyfxlQUbIlZxs9jIFIRpTxnaZqKvBARSznjWUTs65eydvCTdESRn6U/aPnfvJ0cjb/Fgm7LG3fslfH1HdE4e+X6/XR6J+pHuTM16eWCbHqbDH3jpJuTRvruyXcyK8paZbzij6riTVGEQ2alMjLLhWzKMuWKPZZVJaXWbSbaRvC24oILqfO8LNtGSy2WTkc7HMbzEk5iSo7SJd28N27v7GTUVK9mrrmNtVPiwmMTDnKze69XM0tuuOGjfNE1/biU+o5iRQ+XKBg8xcPzujldU9r+Rf8jIZ5CRC3F5s2oy4fvjeosxZ9s6bxp/jDSx2/aUthIU3KKX9k5Xiq2pOQU4vvQ7uf2U+9r8eoH/2Y93H33dQIAAAAAAAAAAAAAAAAAAAAAgBv6A6Yt4RwAKAAA
6. HPVS for VPCをプロビジョニングする
以下の例はwordpressの場合。コンテナーイメージはdocker.ioに存在するので、インターネットアクセスができるように、プロビジョニング先のsubnetは事前にpublic gatewayに紐づけておく。
- Architectureとして
IBM Z, LinuxONE
を選択し、Confidential Computing
を有効にする
- Imageとして
Hyper Protect
を選択する。SSH Keysは何も選択しなくて良い。 -
User data
フィールドに、Contract情報を入力する。今回は、5-2で例示したwordpressのContract情報を入力した。 - 永続ストレージが必要なので、data volumeを追加。また、networkは(docker imageを入手するために)public gatewayに紐づいているsubnetを選択。
- 結果、無事プロビジョニングされた。HPVS for VPCのIPアドレスにアクセスすると、確かにwordpressが起動している。
- Serial Consoleへのログ出力。
-
IBM Cloud Log Analysis with LogDNA
へのログ出力。出力されたログを一部記載しておく。
Aug 31 09:51:58 syasuda-hpvs46 kernel notice Linux version 5.4.0-113-generic (buildd@bos02-s390x-015) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #127-Ubuntu SMP Wed May 18 14:30:54 UTC 2022 (Ubuntu 5.4.0-113.127-generic 5.4.181)
Aug 31 09:51:58 syasuda-hpvs46 kernel info setup.289988: Linux is running under KVM in 64-bit mode
(途中略)
Aug 31 09:51:58 syasuda-hpvs46 systemd info systemd 245.4-4ubuntu3.17 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid)
Aug 31 09:51:58 syasuda-hpvs46 systemd info Detected virtualization kvm.
Aug 31 09:51:58 syasuda-hpvs46 systemd info Detected architecture s390x.
Aug 31 09:51:58 syasuda-hpvs46 systemd info Set hostname to <syasuda-hpvs46>.
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Mounting volumes ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Version [1.0.29]
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug MountVolumes input=[/var/hyperprotect/user-data.decrypted]
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug ParseContract ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug ValidateContract ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug MergeVolumes ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug Mounting volumes ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug listBlockdevices ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug ParseBlockdevices ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug Mounting volume [data1] from [/dev/vdb] to [/mnt/data] ...
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount debug LuksMounter device=[/dev/vdb]
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('lsblk', '-d', '--path', '--noheadings', '--output', 'NAME')
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Return value: 0
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info stdout: /dev/vda
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info /dev/vdb
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info /dev/vdc
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info /dev/vdd
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('lsblk', '--noheadings', '/dev/mapper/vdb_luks', '--output', 'FSTYPE')
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Return value: 32
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info lsblk: /dev/mapper/vdb_luks: not a block device
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Disk not yet mapped to LUKS layer. Could not read the FileSystem
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Successfully created Encryptor object
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('cryptsetup', 'isLuks', '/dev/vdb')
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Return value: 1
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Data Volume /dev/vdb is not Encrypted
Aug 31 09:51:58 syasuda-hpvs46 hpcr-disk-mount info Format started for /dev/vdb
Aug 31 09:52:10 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('cryptsetup', '--batch-mode', '--type', 'luks2', 'luksFormat', '/dev/vdb')
Aug 31 09:52:10 syasuda-hpvs46 hpcr-disk-mount info Return value: 0
Aug 31 09:52:10 syasuda-hpvs46 hpcr-disk-mount info Format successful for /dev/vdb
Aug 31 09:52:10 syasuda-hpvs46 hpcr-disk-mount info Open started for /dev/vdb
Aug 31 09:52:13 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('cryptsetup', 'luksOpen', '/dev/vdb', 'vdb_luks')
Aug 31 09:52:13 syasuda-hpvs46 hpcr-disk-mount info Return value: 0
Aug 31 09:52:13 syasuda-hpvs46 hpcr-disk-mount info Open successful for /dev/vdb
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('mkfs.ext4', '-b', '4096', '-F', '/dev/mapper/vdb_luks')
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Return value: 0
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info stdout: Creating filesystem with 2617344 4k blocks and 655360 inodes
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Filesystem UUID: 186297ce-b959-49ea-adf5-0f000f76653a
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Superblock backups stored on blocks:
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info #01132768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Allocating group tables: 0/80#010#010#010#010#010 #010#010#010#010#010done
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Writing inode tables: 0/80#010#010#010#010#010 #010#010#010#010#010done
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Creating journal (16384 blocks): done
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Writing superblocks and filesystem accounting information: 0/80#010#010#010#010#010 #010#010#010#010#010done
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info mke2fs 1.45.5 (07-Jan-2020)
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info checking if LUKS device is mounted ...
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('lsblk', '/dev/mapper/vdb_luks', '--noheadings', '--output', 'MOUNTPOINT')
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Return value: 0
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info LUKs device /dev/mapper/vdb_luks Mounted already - False
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('mountpoint', '/mnt/data')
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Return value: 1
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info mountpoint: /mnt/data: No such file or directory
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Executed cmd: ('mount', '/dev/mapper/vdb_luks', '/mnt/data')
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Return value: 0
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Mounting a device at /mnt/data is successful
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Encryption completed successfully!!
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Encryption successful!!
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount debug Validating full permissions on [/mnt/data]
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount debug File mode for [/mnt/data] is [drwxrwxrwx].
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount debug File mode for [/mnt/data] is [drwxrwxrwx].
Aug 31 09:52:17 syasuda-hpvs46 hpcr-disk-mount info Mounting volumes done
(途中略)
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info 7458611c3efe Extracting [==================================================>] 3.493kB/3.493kB
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info 7458611c3efe Pull complete
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info dcf3286637af Extracting [==================================================>] 6.699kB/6.699kB
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info dcf3286637af Extracting [==================================================>] 6.699kB/6.699kB
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info dcf3286637af Pull complete
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info db Pulled
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Network compose_default Creating
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Network compose_default Created
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-db-1 Creating
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-wordpress-1 Creating
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-wordpress-1 Created
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-db-1 Created
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-db-1 Starting
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-wordpress-1 Starting
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-db-1 Started
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info Container compose-wordpress-1 Started
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container debug Docker compose result:
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info b41abefa36c5 wordpress "docker-entrypoint.s…" 6 seconds ago Up Less than a second 0.0.0.0:80->80/tcp, :::80->80/tcp compose-wordpress-1
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container info 5ad5a3880e6f mariadb "docker-entrypoint.s…" 6 seconds ago Up Less than a second 3306/tcp, 33060/tcp compose-db-1
Aug 31 09:52:52 syasuda-hpvs46 hpcr-container debug Container service completed successfully
Aug 31 09:52:52 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.8.3+maria~jammy started.
Aug 31 09:52:52 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Switching to dedicated user 'mysql'
Aug 31 09:52:52 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.8.3+maria~jammy started.
Aug 31 09:52:52 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Initializing database files
Aug 31 09:52:52 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:52 0 [Warning] mariadbd: io_uring_queue_init() failed with ENOMEM: try larger memory locked limit, ulimit -l, or https://mariadb.com/kb/en/systemd/#configuring-limitmemlock under systemd (262144 bytes required)
Aug 31 09:52:53 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:52 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
Aug 31 09:52:53 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:53 0 [Warning] 'default-authentication-plugin' is MySQL 5.6 / 5.7 compatible option. To be implemented in later versions.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info To do so, start the server, then issue the following command:
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info '/usr/bin/mysql_secure_installation'
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info which will also give you the option of removing the test
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info databases and anonymous user created by default. This is
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info strongly recommended for production servers.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info See the MariaDB Knowledgebase at https://mariadb.com/kb
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info Please report any problems at https://mariadb.org/jira
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info The latest information about MariaDB is available at https://mariadb.org/.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info Consider joining MariaDB's strong and vibrant community:
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info https://mariadb.org/get-involved/
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Database files initialized
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Starting temporary server
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Waiting for server startup
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] mariadbd (server 10.8.3-MariaDB-1:10.8.3+maria~jammy) starting as process 93 ...
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Using transactional memory
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Number of transaction pools: 1
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Using generic crc32 instructions
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] mariadbd: O_TMPFILE is not supported on /tmp (disabling future attempts)
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Warning] mariadbd: io_uring_queue_init() failed with ENOMEM: try larger memory locked limit, ulimit -l, or https://mariadb.com/kb/en/systemd/#configuring-limitmemlock under systemd (262144 bytes required)
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Completed initialization of buffer pool
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: 128 rollback segments are active.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] InnoDB: log sequence number 46643; transaction id 14
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] Plugin 'FEEDBACK' is disabled.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Warning] 'default-authentication-plugin' is MySQL 5.6 / 5.7 compatible option. To be implemented in later versions.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Warning] 'user' entry 'root@5ad5a3880e6f' ignored in --skip-name-resolve mode.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Warning] 'proxies_priv' entry '@% root@5ad5a3880e6f' ignored in --skip-name-resolve mode.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:55 0 [Note] mariadbd: ready for connections.
Aug 31 09:52:55 syasuda-hpvs46 compose-db-1 err Version: '10.8.3-MariaDB-1:10.8.3+maria~jammy' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
Aug 31 09:52:56 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Temporary server started.
Aug 31 09:52:56 syasuda-hpvs46 compose-db-1 err Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
Aug 31 09:52:56 syasuda-hpvs46 compose-db-1 err Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Aug 31 09:52:57 syasuda-hpvs46 compose-db-1 err Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Creating database wordpress
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Creating user wordpress
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Giving user wordpress access to schema wordpress
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Stopping temporary server
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] mariadbd (initiated by: root[root] @ localhost []): Normal shutdown
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] InnoDB: FTS optimize thread exiting.
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] InnoDB: Starting shutdown...
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] InnoDB: Buffer pool(s) dump completed at 220831 0:52:58
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] InnoDB: Shutdown completed; log sequence number 46643; transaction id 15
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:58 0 [Note] mariadbd: Shutdown complete
Aug 31 09:52:58 syasuda-hpvs46 compose-db-1 err
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: Temporary server stopped
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 info [Note] [Entrypoint]: MariaDB init process done. Ready for start up.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 info
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] mariadbd (server 10.8.3-MariaDB-1:10.8.3+maria~jammy) starting as process 1 ...
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Using transactional memory
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Number of transaction pools: 1
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Using generic crc32 instructions
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] mariadbd: O_TMPFILE is not supported on /tmp (disabling future attempts)
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Warning] mariadbd: io_uring_queue_init() failed with ENOMEM: try larger memory locked limit, ulimit -l, or https://mariadb.com/kb/en/systemd/#configuring-limitmemlock under systemd (262144 bytes required)
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Completed initialization of buffer pool
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: 128 rollback segments are active.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: log sequence number 46643; transaction id 14
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] Plugin 'FEEDBACK' is disabled.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Warning] 'default-authentication-plugin' is MySQL 5.6 / 5.7 compatible option. To be implemented in later versions.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Warning] You need to use --log-bin to make --expire-logs-days or --binlog-expire-logs-seconds work.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] Server socket created on IP: '0.0.0.0'.
Aug 31 09:52:59 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:52:59 0 [Note] Server socket created on IP: '::'.
Aug 31 09:53:00 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:53:00 0 [Note] mariadbd: ready for connections.
Aug 31 09:53:00 syasuda-hpvs46 compose-db-1 err Version: '10.8.3-MariaDB-1:10.8.3+maria~jammy' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
Aug 31 09:53:00 syasuda-hpvs46 compose-db-1 err 2022-08-31 0:53:00 0 [Note] InnoDB: Buffer pool(s) load completed at 220831 0:53:00