Azure Database for MariaDB のルート CA の変更について
重要
Azure Database for MariaDB は、提供終了予定です。 Azure Database for MySQL に移行することを強くお勧めします。 Azure Database for MySQL への移行の詳細については、「Azure Database for MariaDB の現状」を参照してください
標準のメンテナンスとセキュリティのベスト プラクティスの一環として、Azure Database for MariaDB では、ルート証明書の変更が 2023 年 3 月以降に完了します。 この記事では、変更、影響を受けるリソース、アプリケーションでデータベース サーバーへの接続を確実に維持するために必要な手順について、詳しく説明します。
Note
この記事には、Microsoft が使用しなくなった "スレーブ" という用語への言及が含まれています。 ソフトウェアからこの用語が削除された時点で、この記事から削除します。
ルート証明書の更新が必要な理由
Azure Database for MariaDB ユーザーが MariaDB サーバーに接続するには、こちらにある定義済みの証明書を使用するしかありません。 ただし、証明機関 (CA) ブラウザー フォーラムから最近、CA ベンダーによって発行された複数の証明書が準拠していないことを示すレポートが公開されました。
業界のコンプライアンス要件に従い、CA ベンダーは準拠していない CA の CA 証明書の取り消しを始めており、サーバーでは、準拠している CA で発行され、それらの準拠している CA からの CA 証明書によって署名された証明書が使用される必要があります。 Azure Database for MariaDB にはこれらの準拠していない証明書の 1 つが使用されていたため、MySQL サーバーへの潜在的な脅威を最小限に抑えるために、証明書を準拠バージョンにローテーションする必要がありました。
接続を維持するためにクライアントに変更を加える必要はありますか?
以下の「結合された CA 証明書を作成する」の手順に従った場合、結合された CA 証明書から BaltimoreCyberTrustRoot 証明書が削除されない限り、接続を継続できます。 接続を維持するために、追加の通知があるまでは、結合された CA 証明書に BaltimoreCyberTrustRoot を保持することをお勧めします。
結合された CA 証明書を作成する
以下のリンクから、BaltimoreCyberTrustRoot と DigiCertGlobalRootG2 のルート CA をダウンロードします。
BaltimoreCyberTrustRoot と DigiCertGlobalRootG2 の両方の証明書が含まれる、結合された CA 証明書ストアを生成します。
Java (MariaDB Connector/J) ユーザーの場合、以下を実行します。
keytool -importcert -alias MariaDBServerCACert -file D:\BaltimoreCyberTrustRoot.crt.pem -keystore truststore -storepass password -noprompt
keytool -importcert -alias MariaDBServerCACert2 -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt
次に、元のキーストア ファイルを、新しく生成されたものに置き換えます。
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
System.setProperty("javax.net.ssl.trustStorePassword","password");
.NET (MariaDB Connector/NET、MariaDBConnector) ユーザーの場合は、BaltimoreCyberTrustRoot と DigiCertGlobalRootG2 の両方が Windows 証明書ストアの信頼されたルート証明機関に存在することを確認します。 いずれかの証明書が存在しない場合は、不足している証明書をインポートします。
SSL_CERT_DIR を使用する Linux 上の .NET ユーザーの場合は、BaltimoreCyberTrustRoot と DigiCertGlobalRootG2 の両方が SSL_CERT_DIR によって示されるディレクトリに存在することを確認します。 いずれかの証明書が存在しない場合は、不足している証明書ファイルを作成します。
その他の (MariaDB Client、MariaDB Workbench、C、C++、Go、Python、Ruby、PHP、NodeJS、Perl、Swift) ユーザーの場合は、次の形式のような 2 つの CA 証明書ファイルをマージできます
-----BEGIN CERTIFICATE----- (Root CA1: BaltimoreCyberTrustRoot.crt.pem) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root CA2: DigiCertGlobalRootG2.crt.pem) -----END CERTIFICATE-----
元のルート CA pem ファイルを、結合されたルート CA ファイルに置き換えて、アプリケーションやクライアントを再起動します。
将来的に、サーバー側に新しい証明書がデプロイされた後は、CA pem ファイルを DigiCertGlobalRootG2.crt.pem に変更することができます。
SSL/TLS を使用していない場合でも、ルート CA を更新する必要がありますか?
SSL/TLS を使用していない場合は、何も行う必要は必要ありません。
BaltimoreCyberTrustRoot 証明書を削除した場合はどうなりますか?
Azure Database for MariaDB サーバーへの接続時に、接続エラーが発生し始めます。 接続を維持するには、BaltimoreCyberTrustRoot 証明書を使用してもう一度 SSL を構成する必要があります。
よく寄せられる質問
1.SSL/TLS を使用していない場合でも、ルート CA を更新する必要がありますか?
SSL/TLS を使用していない場合は、何も行う必要は必要ありません。
2.SSL/TLS を使用している場合、ルート CA を更新するには、データベース サーバーを再起動する必要がありますか?
いいえ。新しい証明書を使い始めるために、データベース サーバーを再起動する必要はありません。 証明書の更新はクライアント側の変更であり、確実にデータベース サーバーに接続できるよう、受信クライアント接続で新しい証明書を使用する必要があります。
3.ルート証明書の検証で SSL/TLS を使用しているかどうかはどうすればわかりますか?
お使いの接続で、接続文字列を確認するとルート証明書が検証されているかどうかを、確認することができます。
- 接続文字列に
sslmode=verify-ca
またはsslmode=verify-identity
が含まれている場合は、証明書を更新する必要があります。 - 接続文字列に
sslmode=disable
、sslmode=allow
、sslmode=prefer
、またはsslmode=require
が含まれている場合は、証明書を更新する必要はありません。 - 接続文字列で sslmode が指定されていない場合は、証明書を更新する必要はありません。
接続文字列が抽象化されるクライアントを使用している場合、証明書が検証されているかどうかを確認するには、クライアントのドキュメントを参照してください。
4.Azure Database for MariaDB で App Service を使用している場合、どのような影響がありますか?
Azure Database for MariaDB へ接続している Azure App Service では、次の 2 つのシナリオが考えられ、それはアプリケーションで SSL をどのように使用しているかによって異なります。
- この新しい証明書は、プラットフォーム レベルで App Service に追加されています。 App Service プラットフォームに含まれる SSL 証明書をアプリケーションで使用している場合は、何もする必要はありません。 これは最も一般的なシナリオです。
- SSL 証明書ファイルへのパスをコードに明示的に含めている場合は、新しい証明書をダウンロードし、新しい証明書を使用するようにコードを更新する必要があります。このシナリオの良い例は、App Service ドキュメントで共有されているように、App Service でカスタム コンテナーを使用する場合です。 このシナリオは一般的ではありませんが、使用しているユーザーもいます。
5.Azure Database for MariaDB で Azure Kubernetes Services (AKS) を使用している場合、どのような影響がありますか?
Azure Kubernetes Services (AKS) を使用して Azure Database for MariaDB に接続しようとしている場合は、専用の顧客ホスト環境からのアクセスに似ています。 こちらの手順を参照してください。
6.Azure Data Factory を使用して Azure Database for MariaDB に接続している場合、どのような影響がありますか?
Azure Integration Runtime を使用しているコネクタでは、Azure でホストされる環境内の Windows 証明書ストアの証明書が利用されています。 これらの証明書は、新しく適用される証明書と既に互換性があるため、何もする必要はありません。
接続文字列に SSL 証明書ファイルへのパスを明示的に含めるセルフホステッド統合ランタイムを使用しているコネクタでは、新しい証明書をダウンロードし、それを使用するように接続文字列を更新する必要があります。
7.この変更では、データベース サーバーのメンテナンス ダウンタイムを計画する必要がありますか?
不正解です。 ここでの変更は、データベース サーバーに接続するためにクライアント側でのみ行うものなので、この変更のためにデータベース サーバーでメンテナンス ダウンタイムは必要ありません。
8.Microsoft はどのくらいの頻度で証明書を更新しますか、または有効期限ポリシーはどのようなものですか?
Azure Database for MariaDB によって使用されるこれらの証明書は、信頼された証明機関 (CA) によって提供されます。 そのため、これらの証明書のサポートは、CA によるこれらの証明書のサポートに関連付けられています。 BaltimoreCyberTrustRoot 証明書は 2025 年に有効期限が切れる予定であるため、Microsoft は有効期限が切れる前に証明書の変更を実行する必要があります。
9.読み取りレプリカを使用している場合、この更新を行う必要があるのはソース サーバーだけですか? または、読み取りレプリカでも必要ですか?
この更新はクライアント側の変更であるため、レプリカ サーバーからデータを読み取るためにクライアントを使用している場合は、それらのクライアントにも変更を適用する必要があります。
10.データイン レプリケーションを使用している場合は、何かアクションを実行する必要がありますか?
仮想マシン (オンプレミスまたは Azure 仮想マシン) から Azure Database for MySQL へのデータ レプリケーションの場合は、レプリカを作成するために SSL が使用されているかどうかを確認する必要があります。 SHOW SLAVE STATUS を実行し、次の設定を確認します。
Master_SSL_Allowed : Yes Master_SSL_CA_File : ~\azure_mysqlservice.pem Master_SSL_CA_Path : Master_SSL_Cert : ~\azure_mysqlclient_cert.pem Master_SSL_Cipher : Master_SSL_Key : ~\azure_mysqlclient_key.pem
データイン レプリケーションを使用して Azure Database for MySQL に接続している場合は、次の 2 つの点を考慮する必要があります。
仮想マシン (オンプレミスまたは Azure 仮想マシン) から Azure Database for MySQL へのデータ レプリケーションの場合は、レプリカを作成するために SSL が使用されているかどうかを確認する必要があります。 SHOW SLAVE STATUS を実行し、次の設定を確認します。
Master_SSL_Allowed : Yes Master_SSL_CA_File : ~\azure_mysqlservice.pem Master_SSL_CA_Path : Master_SSL_Cert : ~\azure_mysqlclient_cert.pem Master_SSL_Cipher : Master_SSL_Key : ~\azure_mysqlclient_key.pem
CA_file、SSL_Cert、SSL_Key に対して証明書が提供されていることがわかった場合は、新しい証明書を追加してファイルを更新し、結合された証明書ファイルを作成する必要があります。
2 つの Azure Database for MySQL 間のデータ レプリケーションの場合は、CALL mysql.az_replication_change_master を実行し、最後のパラメーター master_ssl_ca として新しいデュアル ルート証明書を指定することによってレプリカをリセットする必要があります。
11.SSL が使用されているかどうかを確認するためのサーバー側クエリはありますか?
サーバーへの接続に SSL 接続を使用しているかどうかを確認するには、SSL の検証に関する記事を参照してください。
12.証明書ファイルに DigiCertGlobalRootG2 が既に含まれている場合、必要なアクションはありますか?
いいえ。 証明書ファイルに DigiCertGlobalRootG2 が既に含まれている場合、必要なアクションはありません。
13.さらに質問がある場合はどうすればよいですか?
質問がある場合は、Microsoft Q&A でコミュニティの専門家から回答を得ることができます。 サポート プランに加入していて技術的な支援が必要な場合は、お問い合わせください。