さくらのクラウド「データベースアプライアンスにおけるTLS有効化」について確認する
こんにちは、UOZUです!
今やWebだけでなくデータベースとの接続経路も暗号化することが「設計の妙」として求められる時代です。
そんな中、さくらのクラウドから「データベースアプライアンスにおいて、原則としてTLSによる通信経路の暗号化が有効な状態で作成されるようになる」というニュースリリースが発表されました。
概要
今後、データベース(アプライアンス)をご利用時の接続に関して、原則() 「自己署名証明書によるTLS1.2, 1.3に対応した通信経路の暗号化が有効」な状態で作成されるようになります。 通信経路の暗号化のみに対応しており、CA証明書による接続先の検証およびクライアント証明書認証には対応しておりません。 証明書の期限は5年間であり、証明書のローテーションには対応しておりません。 () TLS有効化対象の既存アプライアンスは 3月31日時点でサポートされているMariaDB 10.11およびPostgreSQL 14のみです。
4月1日の仕様変更を前に、現時点(2月23日)で「シングル構成」と「冗長化構成」でどのような差があるのか、AlmaLinuxを使って検証環境を構築して確認してみました。
検証環境の用意と確認
検証の為、以下の環境を用意しました。
【検証環境】
• クライアント: AlmaLinux release 10.1 / MariaDB Client 10.11.15 (192.168.0.2)
• DBアプライアンス①: MariaDB 10.11.9(シングル構成 / 192.168.0.3)
• DBアプライアンス②: MariaDB 10.11.9(冗長化構成 / 192.168.0.4
通常のプランでの確認内容(2月23日時点)
まずは通常のデータベースベースアプライアンス(シングル構成)に、mariadbコマンドでTLS接続オプション(–ssl)を付けて接続してみます。
tls_versionが「TLSv1.2,TLSv1.3」と対応している事は確認出来ますが、現時点では、TLS接続自体は有効に出来ません。
[root@uozu-web ~]# mariadb --version
mariadb Ver 15.1 Distrib 10.11.15-MariaDB, for Linux (x86_64) using EditLine wrapper
[root@uozu-web ~]# mariadb -h 192.168.0.3 -P 3306 -u uozu -D uozu -p --ssl
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 39
Server version: 10.11.9-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [uozu]> SELECT @@version;
+-----------------+
| @@version |
+-----------------+
| 10.11.9-MariaDB |
+-----------------+
1 row in set (0.000 sec)
MariaDB [uozu]> SHOW VARIABLES LIKE 'tls_version';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tls_version | TLSv1.2,TLSv1.3 |
+---------------+-----------------+
1 row in set (0.001 sec)
MariaDB [uozu]> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Ssl_cipher | |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [uozu]> SHOW VARIABLES LIKE '%ssl%';
+---------------------+----------------------------------+
| Variable_name | Value |
+---------------------+----------------------------------+
| have_openssl | YES |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | |
| version_ssl_library | OpenSSL 1.1.1k FIPS 25 Mar 2021 |
+---------------------+----------------------------------+
10 rows in set (0.001 sec)
opensslコマンドでも確認しますが、やはり現時点では接続が出来ないようです。
[root@uozu-web ~]# openssl s_client -connect 192.168.0.3:3306 -starttls mysql
Connecting to 192.168.0.3
CONNECTED(00000003)
MySQL server does not support SSL.
---
no peer certificate available
---
No client certificate CA names sent
Negotiated TLS1.3 group: <NULL>
---
SSL handshake has read 93 bytes and written 0 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Protocol: TLSv1.3
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
冗長化オプションが有効な場合での確認内容(2月23日時点)
冗長化オプションが有効な構成の場合はどうでしょうか?
ニュースリリース記載の通り、tls_versionは「TLSv1.2」までとなりますが、2月23日時点でもTLS接続自体は可能な事が確認できます。
[root@uozu-web ~]# mariadb -h 192.168.0.4 -P 3306 -u uozu -D uozu -p --ssl
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.11.13-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [uozu]> SELECT @@version;
+----------------------+
| @@version |
+----------------------+
| 10.11.13-MariaDB-log |
+----------------------+
1 row in set (0.001 sec)
MariaDB [uozu]> SHOW VARIABLES LIKE 'tls_version';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| tls_version | TLSv1.2 |
+---------------+---------+
1 row in set (0.001 sec)
MariaDB [uozu]> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+---------------------------+
| Variable_name | Value |
+---------------+---------------------------+
| Ssl_cipher | DHE-RSA-AES128-GCM-SHA256 |
+---------------+---------------------------+
1 row in set (0.001 sec)
MariaDB [uozu]> SHOW VARIABLES LIKE '%ssl%';
+---------------------+--------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | /etc/pki/tls/certs/mysql.crt |
| ssl_cipher | DHE-RSA-AES128-GCM-SHA256:AES128-SHA |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /etc/pki/tls/private/mysql.key |
| version_ssl_library | OpenSSL 1.1.1k FIPS 25 Mar 2021 |
+---------------------+--------------------------------------+
10 rows in set (0.001 sec)
opensslコマンドでも、TLS1.2で接続が可能な事が確認できます。
[root@uozu-web ~]# openssl s_client -connect 192.168.0.4:3306 -starttls mysql
Connecting to 192.168.0.4
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 CN=localhost
verify error:num=18:self-signed certificate
verify return:1
depth=0 CN=localhost
verify return:1
---
Certificate chain
0 s:CN=localhost
i:CN=localhost
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Feb 23 06:00:59 2026 GMT; NotAfter: Jan 30 06:00:59 2126 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDCzCCAfOgAwIBAgIUQ7eyp21J50fwgxp/S2m8+xp1BwAwDQYJKoZIhvcNAQEL
~省略
-----END CERTIFICATE-----
subject=CN=localhost
issuer=CN=localhost
---
No client certificate CA names sent
Client Certificate Types: RSA sign, ECDSA sign
Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:ed25519:ed448:rsa_pss_pss_sha256:RSA-PSS+SHA256:rsa_pss_pss_sha384:RSA-PSS+SHA384:rsa_pss_pss_sha512:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:RSA+SHA224:UNDEF:UNDEF
Shared Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:ed25519:ed448:rsa_pss_pss_sha256:RSA-PSS+SHA256:rsa_pss_pss_sha384:RSA-PSS+SHA384:rsa_pss_pss_sha512:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:RSA+SHA224
Peer signing digest: SHA256
Peer signature type: rsa_pss_rsae_sha256
Peer Temp Key: DH, 2048 bits
---
SSL handshake has read 2049 bytes and written 1887 bytes
Verification error: self-signed certificate
---
New, TLSv1.2, Cipher is DHE-RSA-AES128-GCM-SHA256
Protocol: TLSv1.2
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : DHE-RSA-AES128-GCM-SHA256
Session-ID: 8BCB8761F4B0D328BE0EDF324908233B2BC1F6E448232575644CD5C2AFEA80EE
Session-ID-ctx:
Master-Key: F687E446E0B13A05A2D856E148C3DF581CD2C79BBC4E9BB4199AC3E75D73CCE01C9084181A07598988EEF28A26D76FA5
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
0000 - 0a 65 e3 df 46 eb aa 1f-0e 16 0e 39 d7 ab d6 9e .e..F......9....
0010 - f0 bc 48 0c ff 0d 10 ad-61 c9 95 ca 27 08 22 0f ..H.....a...'.".
0020 - 73 d9 59 6b 8c b2 31 af-c2 a9 f2 fa df 39 9d c2 s.Yk..1......9..
0030 - 2f c2 4c 7d 7e 95 b2 fd-a6 3e 44 50 59 01 5e d1 /.L}~....>DPY.^.
0040 - ad 2a f8 0e c8 bc 01 02-36 0f 36 d2 8a ad 23 2e .*......6.6...#.
0050 - 56 6f 7c 2b 9f ce fd b3-f6 f8 e6 0b d5 39 33 b5 Vo|+.........93.
0060 - 37 7b 2c 78 93 59 bf c1-3b 6e db 01 cf 86 f9 5b 7{,x.Y..;n.....[
0070 - 50 55 52 49 ab 93 77 85-96 4f 17 1d 5e 54 62 5e PURI..w..O..^Tb^
0080 - a4 b7 df 34 ee 30 62 78-57 e2 33 ee 29 15 e4 17 ...4.0bxW.3.)...
0090 - 11 77 f4 2a f8 15 51 1a-40 78 e7 74 7f 30 17 26 .w.*..Q.@x.t.0.&
00a0 - 68 da 53 ad 51 9a f1 17-3e 89 53 08 8c fc 3d 25 h.S.Q...>.S...=%
Start Time: 1771829235
Timeout : 7200 (sec)
Verify return code: 18 (self-signed certificate)
Extended master secret: yes
---
DONE
ネットワーク設計における「セキュリティ」の考え方
今回のアップデートにより、4月1日以降はより安価な「シングル構成」であっても、PCI DSSやISMSなどの要件で求められる「サービス間通信の暗号化」をクリアできるようになります。
以前、さくらのクラウドのパケットフィルタによるアクセス制限について解説しましたが、パケットフィルタで物理的な「入り口」を絞り、さらにTLSで「中身」を秘匿する。この多層防御こそが、クラウド時代のインフラ設計における「最適解」ではないでしょうか。
おわりに
今回の検証で、冗長化構成であれば現時点でもTLS 1.2が利用可能であり、シングル構成についても4月のアップデートでTLS 1.3を含む最新の暗号化プロトコルが利用可能になる見通しが立ちました。
4月1日以降、実際にTLS 1.3がシングル構成でどのように振る舞うのか、改めて再検証の結果をブログでお届けしようと思います!
「DBの暗号化接続の設定がうまくいかない……」「セキュリティ要件を満たすインフラ構成を相談したい」という方がいらっしゃれば、ぜひネットアシストにご相談ください。
それではまた!



