Hyperdrive は、データベースへの接続をさらに保護する手段を提供します。Hyperdrive は次に対応しています。
- サーバー証明書:
verify-ca/VERIFY_CAやverify-full/VERIFY_IDENTITYなどの TLS(SSL)モードで、セキュリティを高めます。設定すると、Hyperdrive は証明書が想定した認証局(CA)によって署名されていることを検証し、中間者攻撃を防ぎます。 - クライアント証明書: ユーザー名とパスワード以外の認証情報で、Hyperdrive がデータベースに対して自身を認証します。クライアント証明書を正しく使うには、データベース側で、Hyperdrive などのクライアントが提示するクライアント証明書を検証し、アクセスを許可する設定が必要です。
セキュリティ要件とデータベースの設定に応じて、サーバー証明書のみ、クライアント証明書のみ、または両方を使うように Hyperdrive を設定できます。
Hyperdrive は、データベース接続向けの一般的な暗号化 TLS/SSL モードに対応しています。モード名は PostgreSQL と MySQL で異なります。
| PostgreSQL | MySQL | 説明 |
|---|---|---|
require(デフォルト) |
REQUIRED(デフォルト) |
暗号化接続に TLS が必須です。サーバー証明書は(WebPKI に基づいて)検証されます。 |
verify-ca |
VERIFY_CA |
Hyperdrive は、サーバーの証明書が想定したルート認証局または中間認証局によって署名されていることを検証し、データベースサーバーが信頼できるかを確認します。 |
verify-full |
VERIFY_IDENTITY |
verify-ca / VERIFY_CA の確認に加え、データベースのホスト名が証明書の Subject Alternative Name(SAN)または Common Name(CN)と一致することを求めます。 |
デフォルトでは、すべての Hyperdrive 設定は SSL/TLS(require / REQUIRED)で暗号化されます。データベース側でも、SSL/TLS による暗号化接続を受け入れる設定が必要です。
より厳しいセキュリティにする場合は、verify-ca / VERIFY_CA と verify-full / VERIFY_IDENTITY を設定できます。サーバー証明書の追加検証が入り、中間者攻撃の防止に役立ちます。
サーバーの証明書を検証するよう Hyperdrive を設定するには、データベースの証明書に署名したルート認証局(CA)の証明書、または中間証明書を Hyperdrive に渡す必要があります。
Wrangler を使い、ルート認証局(CA)証明書をアップロードできます。
# requires Wrangler 4.9.0 or greater
npx wrangler cert upload certificate-authority --ca-cert \<ROUTE_TO_CA_PEM_FILE\>.pem --name \<CUSTOM_NAME_FOR_CA_CERT\>
---
Uploading CA Certificate tmp-cert...
Success! Uploaded CA Certificate <CUSTOM_NAME_FOR_CA_CERT>
ID: <YOUR_ID_FOR_THE_CA_CERTIFICATE>
...CA 証明書を作成したら、ダッシュボードまたは Wrangler で、その証明書を使った Hyperdrive 設定を作成できます。使う SSL モードも指定してください(PostgreSQL は verify-ca / verify-full、MySQL は VERIFY_CA / VERIFY_IDENTITY)。
Wrangler を使う場合は、次のコマンドをターミナルで実行し、CA 証明書と SSL モードを指定して Hyperdrive 設定を作成します。
# PostgreSQL with verify-full
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --ca-certificate-id <YOUR_CA_CERT_ID> --sslmode verify-full
# MySQL with VERIFY_IDENTITY
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --ca-certificate-id <YOUR_CA_CERT_ID> --sslmode VERIFY_IDENTITYダッシュボードから、サーバー証明書付きの Hyperdrive 設定を作成する手順は次のとおりです。
-
Cloudflare ダッシュボードで Hyperdrive ページを開きます。
Hyperdrive を開く ↗ -
Create configuration を選択します。
-
Server certificates を選択します。
-
SSL モードで Verify CA または Verify full を指定します。
-
以前 Wrangler でアップロードした、データベースの認証局(CA)の SSL 証明書を選択します。
Hyperdrive 設定の作成時、Hyperdrive は渡された認証情報でデータベースへの接続を試みます。コマンドが成功すれば、データベースサーバーが提示する証明書を検証するよう、Hyperdrive 設定が正しくできています。
データベースは、クライアント(ここでは Hyperdrive)が提示する証明書を検証するように設定できます。ユーザー名とパスワードに加え、クライアントを認証する追加の要素になります。詳細は PostgreSQL ↗ または MySQL ↗ のドキュメントを参照してください。
データベースサーバーがクライアント証明書を検証できるようにするには、証明書ファイル(client-cert.pem)と、その証明書の生成に使った秘密鍵(private-key.pem)を Hyperdrive に設定する必要があります。
Wrangler を使い、Hyperdrive が使うクライアント証明書をアップロードします。
# requires Wrangler 4.9.0 or greater
npx wrangler cert upload mtls-certificate --cert client-cert.pem --key client-key.pem --name <CUSTOM_NAME_FOR_CLIENT_CERTIFICATE>
---
Uploading client certificate <CUSTOM_NAME_FOR_CLIENT_CERTIFICATE>...
Success! Uploaded client certificate <CUSTOM_NAME_FOR_CLIENT_CERTIFICATE>
ID: <YOUR_ID_FOR_THE_CLIENT_CERTIFICATE_PAIR>
...作成したクライアント証明書バンドルを使い、ダッシュボードまたは Wrangler で Hyperdrive 設定を作成できます。
Wrangler を使う場合は、次のコマンドをターミナルで実行し、クライアント証明書ペアを指定して Hyperdrive 設定を作成します。
# PostgreSQL
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --mtls-certificate-id <YOUR_CLIENT_CERT_PAIR_ID>
# MySQL
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --mtls-certificate-id <YOUR_CLIENT_CERT_PAIR_ID>ダッシュボードから、クライアント証明書付きの Hyperdrive 設定を作成する手順は次のとおりです。
-
Cloudflare ダッシュボードで Hyperdrive ページを開きます。
Hyperdrive を開く ↗ -
Create configuration を選択します。
-
Client certificates を選択します。
-
データベースサーバーとの接続確立時に Hyperdrive が使う、SSL クライアント証明書と秘密鍵のペアを選択します。
Hyperdrive がデータベースに接続すると、秘密鍵で署名されたクライアント証明書をデータベースサーバーへ提示します。これにより、データベースサーバーは、クライアント(ここでは Hyperdrive)が秘密鍵とクライアント証明書の両方を持っていることを確認できます。クライアント証明書を使うと、Hyperdrive だけが接続できるように、データベースへ認証の層を追加できます。