MENU

オンデマンドデータベースとは?さくらのクラウドでTLS接続とWordPress設定を検証

こんにちは、UOZUです!

以前のブログでデータベースアプライアンスにおけるTLS有効化を検証しましたが、続けてエンハンスドデータベース(Lab)/オンデマンドデータベースの検証をしていきます。

目次

エンハンスドデータベース(Lab)/オンデマンドデータベースとは

さくらのクラウドのエンハンスドデータベース(Lab)/オンデマンドデータベースですが、「Labプロダクト」として新機能の動作検証およびフィードバック収集を目的として提供されているサービスとなります。

https://manual.sakura.ad.jp/cloud/lab/about.html#lab

「Labプロダクト」は、新機能の動作検証およびフィードバック収集を目的として、さくらのクラウドにおける開発中サービスを実験的に提供するものです。提供終了(正式サービス化に伴うLabプロダクトとしての提供終了の場合を含みますが、これに限りません。)までの間、限定的なサービスレベルでご利用いただけます。

今回、「【予告】エンハンスドデータベース(Lab)の提供形態の変更および一部提供終了のお知らせ」として、4月23日に提供の形態が変更されるとの予告アナウンスがあった為、せっかくですので機能検証をしてみようと思います。

https://cloud.sakura.ad.jp/news/2026/04/02/enhanced-database-lab-end

サービス名の変更

エンハンスドデータベース(Lab)は、「オンデマンドデータベース」に名称変更します。

CR版への移行と提供終了について

提供中のデータベースシステム「TiDB」および「MariaDB」について、以下の対応を実施します。

TiDB:Lab版からCR版へ移行します。
MariaDB:提供を終了します。

データベースの作成

さくらのクラウドコンソール画面から、「LAB」→「エンハンスドDB」を選択し、「+追加」ボタンで新しいデータベースを作成して行きます。

データベース名、データベース種類、リージョン、パスワードなどを入力していきます。
記事作成ではMariaDBが選択出来ますが、今後はTiDBのみの選択となる様ですので、TiDBでデータベースを作成します。
作成後、「詳細」の画面からアクセス方法が確認出来る様になります。

また原則エンハンスドデータベース(Lab)/オンデマンドデータベースはグローバルIPを持つホスト名での作成となります。
「データベースの変更」画面から、「送信元ネットワーク」は、利用するサーバーや信頼できるIPからのみアクセス可能な状態に変更をしておきましょう。

TLS接続を利用したアクセス確認

TiDBはMySQL互換のデータベースになるので、MySQLクライアントコマンドを用意して接続します。
(※MariaDBクライアントからでも接続可能ですが、「–ssl-mode=VERIFY_IDENTITY」などは利用出来ないので注意してください。)
今回はRocky Linux release 10.1 (Red Quartz)、MySQL8.4.8クライアントで接続を試します。

また、せかっくですので、「証明書の検証あり」の状態でアクセスをしてみます。

[root@uozu-web ~]# mysql --version
mysql Ver 8.4.8 for Linux on x86_64 (Source distribution)
[root@uozu-web ~]# mysql -h xxxxxx.tidb-is1.db.sakurausercontent.com -P 3306 --ssl-mode=VERIFY_IDENTITY --ssl-ca=/etc/pki/tls/certs/ca-bundle.trust.crt -u xxxxxx -D xxxxxx -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3866687745
Server version: 8.0.11-TiDB-v8.5.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 8.0 compatible

Copyright (c) 2000, 2026, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SELECT @@version;
+--------------------+
| @@version |
+--------------------+
| 8.0.11-TiDB-v8.5.0 |
+--------------------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'tls_version';
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| tls_version | TLSv1,TLSv1.1,TLSv1.2 |
+---------------+-----------------------+
1 row in set (0.01 sec)
mysql> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Ssl_cipher | |
+---------------+-------+
1 row in set (0.02 sec)
mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
+---------------+----------+
6 rows in set (0.00 sec)
mysql> \s
--------------
mysql Ver 8.4.8 for Linux on x86_64 (Source distribution)

Connection id: 3866687745
Current database: xxxxxx
Current user: xxxxxx@133.125.237.53
SSL: Cipher in use is TLS_AES_128_GCM_SHA256
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.11-TiDB-v8.5.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 8.0 compatible
Protocol version: 10
Connection: xxxxxx.tidb-is1.db.sakurausercontent.com via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Binary data as: Hexadecimal
Uptime: 138 days 3 hours 53 min 52 sec

Threads: 0 Questions: 0 Slow queries: 0 Opens: 0 Flush tables: 0 Open tables: 0 Queries per second avg: 0.000
--------------

どうやらMySQL互換を謳っているものの、TiDB側の実装に若干の差がありそうです。Ssl_cipherは空欄で返されるものの、\s での確認では、確実にTLS接続でアクセスが出来ていそうです。

[root@uozu-web ~]# openssl s_client -connect xxxxxx.tidb-is1.db.sakurausercontent.com:3306 -starttls mysql
Connecting to xxx.xxx.xxx.xxx
CONNECTED(00000003)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=E7
verify return:1
depth=0 CN=tidb-is1.db.sakurausercontent.com
verify return:1
---
Certificate chain
0 s:CN=tidb-is1.db.sakurausercontent.com
i:C=US, O=Let's Encrypt, CN=E7
a:PKEY: EC, (prime256v1); sigalg: ecdsa-with-SHA384
v:NotBefore: Jan 31 02:31:28 2026 GMT; NotAfter: May 1 02:31:27 2026 GMT
1 s:C=US, O=Let's Encrypt, CN=E7
i:C=US, O=Internet Security Research Group, CN=ISRG Root X1
a:PKEY: EC, (secp384r1); sigalg: sha256WithRSAEncryption
v:NotBefore: Mar 13 00:00:00 2024 GMT; NotAfter: Mar 12 23:59:59 2027 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIID1jCCA1ugAwIBAgISBs0QJ6qmNEtj+VNIc4fgR7UmMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NzAeFw0yNjAxMzEwMjMxMjhaFw0yNjA1MDEwMjMxMjdaMCwxKjAoBgNVBAMTIXRp
ZGItaXMxLmRiLnNha3VyYXVzZXJjb250ZW50LmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABISdrArd1VwipiI9mMT+4D1Jaog0JybLC0op69uhunqyuNX3me4v
IgeI+LvKnQzsDvj8aZnL/rLDYJkfrV4+kASjggJVMIICUTAOBgNVHQ8BAf8EBAMC
B4AwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAw
HQYDVR0OBBYEFPHlGdx0S4THb4kg+QPF8wA92+a+MB8GA1UdIwQYMBaAFK5IntyH
~省略
-----END CERTIFICATE-----
subject=CN=tidb-is1.db.sakurausercontent.com
issuer=C=US, O=Let's Encrypt, CN=E7
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: ecdsa_secp256r1_sha256
Peer Temp Key: X25519, 253 bits
---
SSL handshake has read 2552 bytes and written 1670 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256
Protocol: TLSv1.3
Server public key is 256 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_128_GCM_SHA256
Session-ID: 30A5AFE9F08D69A6AC9306BBBBCDA1BE493DFC881D3227D879709B56593A6043
Session-ID-ctx:
Resumption PSK: 32CC9FFBF2174F768ED683FFE05A9DDA673BA497F1770B7E69A95A891B0C9434
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 604800 (seconds)
TLS session ticket:
0000 - a7 71 31 4b 8e ce 17 7b-9d 7a 4e 61 a1 0b b8 e8 .q1K...{.zNa....
0010 - f7 75 80 cb d9 7e 17 7a-7f 6f 4a ae 15 11 a3 14 .u...~.z.oJ.....
0020 - 04 1c 15 2b 09 53 4f dd-d5 ff c8 bb 71 85 0e 29 ...+.SO.....q..)
0030 - a1 cb 6d 7e 3e 4c 3b 0b-0b 69 eb ae 91 85 d7 8b ..m~>L;..i......
0040 - b4 42 89 84 94 8d f5 b9-43 2f 84 8c 4c 45 ed be .B......C/..LE..
0050 - c2 c7 25 e5 ed 9f c9 26-11 30 92 4a ce 1f 5a 02 ..%....&.0.J..Z.
0060 - ef 2e 1b 67 2f 05 f8 1a-51 ...g/...Q

Start Time: 1775557712
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK

証明書自体はLet’s Encryptのものが出力されている様ですね。

またエンハンスドデータベース(Lab)/オンデマンドデータベースの場合、接続ユーザーは管理者権限を持たず、ユーザー作成やデータベース追加は出来なくなっている点も注意が必要です。

mysql> show grants;
+--------------------------------------------------------------------------------------------------------------------------------------+
| Grants for User |
+--------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON . TO 'xxxxxx'@'%' |
| GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,LOCK TABLES,ALTER,INDEX,CREATE VIEW,SHOW VIEW ON xxxxxx.* TO 'xxxxxx'@'%' |
+--------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

WordPressの接続先データベースとして設定してみる

ではそのままの勢いで、Wordpressで利用するデータベースとして設定をしてみます。

そのままデータベース名、データベースユーザー名、ホスト名を入力する事でインストールまでは簡単に出来ます。

ただしWordpress標準のインストール画面からは、SSL/TLSの有効化の利用は出来なくなっています。
実際にtcpdumpやtsharkで見ると分かりますが、通信内容は傍受可能な状態です。

[root@uozu-web src]# tcpdump -A port 3306

dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes

20:17:29.092750 IP uozu-web.47194 > xxx.xxx.xxx.xxx.mysql: Flags [P.], seq 420:526, ack 403, win 501, options [nop,nop,TS val 3605427310 ecr 3754115376], length 106
E.....@.@....}.5.}.G.Z....@................
..tn..A0f....SELECT option_name, option_value FROM wp_options WHERE autoload IN ( 'yes', 'on', 'auto-on', 'auto' )
20:17:29.093093 IP xxx.xxx.xxx.xxx.mysql > uozu-web.47194: Flags [.], ack 526, win 509, options [nop,nop,TS val 3754115379 ecr 3605427310], length 0
E..4..@.;....}.G.}.5...Z......@.....d......
..A3..tn
~省略
[root@uozu-web ~]# tshark -i eth0 port 3306
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
1 0.000000000 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 74 36568 → 3306 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=3955799525 TSecr=0 WS=128
2 0.000248765 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyy TCP 74 3306 → 36568 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM TSval=4222735676 TSecr=3955799525 WS=128
3 0.000269746 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 66 36568 → 3306 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=3955799525 TSecr=4222735676
4 0.002046106 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyy MySQL 156 Server Greeting proto=10 version=8.0.11-TiDB-v8.5.0
5 0.002055995 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 66 36568 → 3306 [ACK] Seq=1 Ack=91 Win=64256 Len=0 TSval=3955799527 TSecr=4222735678
6 0.002097686 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx MySQL 228 Login Request user=xxxxxx
~省略

WordPressの設定を変更し、TLS接続を有効化する

ではWordpressで設定を調整し、再度通信を確認してみます。

[root@uozu-web src]# cp -ip /var/www/html/wp-config.php /var/www/html/wp-config.php.org
[root@uozu-web src]# vim /var/www/html/wp-config.php
-------------------------------------------------------------
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
define('MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));
-------------------------------------------------------------
[root@uozu-web ~]# tshark -i eth0 port 3306
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
1 0.000000000 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 74 38934 → 3306 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=2210570801 TSecr=0 WS=128
2 0.000257227 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyyTCP 74 3306 → 38934 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM TSval=2449100088 TSecr=2210570801 WS=128
3 0.000293807 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 66 38934 → 3306 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=2210570801 TSecr=2449100088
4 0.001865202 xxx.xxx.xxx.xxx → 133.125.237.53 MySQL 156 Server Greeting proto=10 version=8.0.11-TiDB-v8.5.0
5 0.001884989 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 66 38934 → 3306 [ACK] Seq=1 Ack=91 Win=64256 Len=0 TSval=2210570803 TSecr=2449100089
6 0.001915478 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx MySQL 102 Response: SSL Handshake user=
7 0.002146305 xxx.xxx.xxx.xxx → 133.125.237.53 TCP 66 3306 → 38934 [ACK] Seq=91 Ack=37 Win=65280 Len=0 TSval=2449100090 TSecr=2210570803
8 0.002969082 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TLSv1.2 1629 Client Hello (SNI=xxxxxx.tidb-is1.db.sakurausercontent.com)
9 0.003236208 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyy TCP 66 3306 → 38934 [ACK] Seq=91 Ack=1600 Win=64128 Len=0 TSval=2449100091 TSecr=2210570804
10 0.009000138 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyy TLSv1.3 2671 Server Hello, Change Cipher Spec, Application Data, Application Data, Application Data, Application Data, Application Data
11 0.009018381 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TCP 66 38934 → 3306 [ACK] Seq=1600 Ack=2696 Win=69504 Len=0 TSval=2210570810 TSecr=2449100097
12 0.009682285 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TLSv1.3 130 Change Cipher Spec, Application Data
13 0.009742929 yyy.yyy.yyy.yyy → xxx.xxx.xxx.xxx TLSv1.3 250 Application Data
14 0.009881804 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyy TCP 66 3306 → 38934 [ACK] Seq=2696 Ack=1664 Win=64128 Len=0 TSval=2449100098 TSecr=2210570811
15 0.009993317 xxx.xxx.xxx.xxx → yyy.yyy.yyy.yyy TCP 66 3306 → 38934 [ACK] Seq=2696 Ack=1848 Win=64128 Len=0 TSval=2449100098 TSecr=2210570811
~省略

「SSL Handshake」発生の後、TLSv1.2 → TLSv1.3 と接続が切り替わり、無事通信が暗号化している様に見えますね。

最後に

いかがだったでしょうか。
先の記事ではデータベースアプライアンスのTLS接続を検証しましたが、エンハンスドデータベース(Lab)/オンデマンドデータベースでは、実際にTLS接続を利用してWordpressの設定まで進めてみました。

恐らく今後、エンハンスドデータベース(Lab)/オンデマンドデータベースはCR版→正式なサービスとしてリリースされるとは思いますので、是非参考に活用を考えていただければと思います。

最後までお読みいただき、ありがとうございました!

お問い合わせ

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ネットアシスト運用チームのシニアエンジニア
さくらのクラウド検定ベーシック所持

目次