CData Software Blog

クラウド連携のCData Software の技術ブログです。

CData MySQL DriversでCloud SQL for MySQLにSSL接続する方法

こんにちは。CData Software Japanエンジニアの浦邊です。

今回はCData MySQL DriversでCloud SQL for MySQLSSL接続する方法を紹介します。

Cloud SQL

Google Cloud PlatformのPaaSデータベースサービスで、リレーショナルデータベースの設定、メンテナンス、運用、管理のフルマネージドサービスを提供します。 データベース製品としてMySQLPostgreSQLSQL Serverを使うことができます。

cloud.google.com

CData MySQL Drivers

MySQL互換データベースにアクセスするためのドライバで、ODBCドライバ, JDBCドライバ, Power BIコネクタ, Excel Add-Inなどのラインナップがあります。 例えばMySQL Power BI Connectorを利用すればCloud SQL for MySQLのデータをPower BIで可視化することができます。

www.cdata.com

通常の接続

はじめにSSLを使わない接続方法を紹介します。 ドライバの設定内容は通常のMySQLへの接続と変わりません。

サービスの設定

外部から接続する場合は外部IPからのアクセスを有効にします。

SQL Cloudの[Connetions]から接続画面を開き、[Connectivity][Public IP]をチェックします。 続いて[Add Network]をクリックして接続を許可するIPアドレスを指定します。 下図のように「0.0.0.0」を指定するとすべてのIPアドレスからの接続が許可されます。

f:id:urabe_shintaro:20200806173324p:plain

ドライバの設定

接続プロパティにMySQLの接続情報を設定します。

プロパティ名
User MySQLのユーザ名
Password MySQLのパスワード
Database MySQLのDB名
Server CloudSQLインスタンスのアドレス
Port MySQLのポート(3306)

例えば筆者環境では、JDBCドライバを使用する際には以下のような接続文字列を設定します。

jdbc:mysql:User=root;Password=root;Database=test;Server=xx.xx.xx.xx;Port=3306;

これで接続設定は完了です。 DBVisualizerで表示すると、以下のようにSQL CloudのMySQLのデータにアクセスできます。

f:id:urabe_shintaro:20200806173403p:plain

SSL接続

SSLによる接続ではインスタンスから証明書を取得し、それらの証明書を接続時に指定することで接続可能になります。

サービスの設定

インスタンスから証明書を取得します。 メニューの[Connection]から接続設定画面を開き、[Create a client certificate]をクリックするとクライアント証明書作成ダイアログが表示されます。 証明書の名前を適当に入力し、[Create]をクリックしてください。

f:id:urabe_shintaro:20200806180006p:plain

クライアントの秘密鍵と証明書、サーバ証明書が作成されますので、それぞれダウンロードしてください。

f:id:urabe_shintaro:20200806173533p:plain

ドライバの設定

前のセクションでダウンロードした証明書として、下の3つのファイルが存在することを確認してください。

ファイル名 内容
server-ca.pem サーバー証明書
client-cert.pem クライアントの公開鍵証明書
client-key.pem クライアント秘密鍵

PFXファイルの作成

OpenSSLなどのツールを使ってクライアントの秘密鍵と公開鍵証明書からPFXファイルを作成します。 OpenSSLでPFXを作成する場合は下記のコマンドを実行してください。 このコマンドを実行すると証明書のパスワードが求められますので適当なパスワードを設定してください。

> openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -out cloudsql-test.pfx -name "cloudsql-test"

接続プロパティの設定

接続プロパティに、MySQLの接続情報に加えて証明書ファイルへのファイルパスとパスワードを設定します。

プロパティ名
User MySQLのユーザ名
Password MySQLのパスワード
Database MySQLのDB名
Server CloudSQLインスタンスのアドレス
Port MySQLのポート(3306)
SSLServerCert server-ca.pemへのファイルパス
SSLClientCertType "PFXFILE"
SSLClientCert 作成したPFXファイルへのファイルパス
SSLClientCertPassword PFXファイル作成時に設定したパスワード

例えば筆者環境では、JDBCドライバを使用する際には以下のような接続文字列を設定します。

jdbc:mysql:User=root;Password=root;Database=test;Server=xx.xx.xx.xx;Port=3306;SSLServerCert="C:\Cert\server-ca.pem";SSLClientCertType=PFXFILE;SSLClientCert="C:\Cert\cloudsql-test.pfx";SSLClientCertPassword=password;

これで接続設定は完了です。

上記接続プロパティの設定で接続できない場合、以下のサーバ証明書のインポートをお試しください。

サーバ証明書のインポート

[スタートメニュー]の[Windowsシステムツール]から[ファイル名を指定して実行]を起動してください。 ファイル名に「mmc」と入力し[OK]を押下すると管理コンソールが起動します。 メニューの[ファイル]から[スナップインの追加と削除]をクリックし、スナップインの追加と削除ダイアログを開きます。 [利用できるスナップイン]から[証明書]を選択し、[追加]をクリックして[選択されたスナップイン]に追加し[OK]をクリックします。

f:id:urabe_shintaro:20200806173659p:plain

適当なフォルダ上で右クリックし、[すべてのタスク]から[インポート]を選択して[証明書のインポートウィザード]を開きます。

f:id:urabe_shintaro:20200806173621p:plain

server-ca.pemファイルを選択し、[次へ]をクリックします。

f:id:urabe_shintaro:20200806173633p:plain

[証明書の種類に基づいて、自動的に証明書ストアを選択する]をチェックし[次へ]をクリックしてインポートを完了します。

f:id:urabe_shintaro:20200806173648p:plain

これでSSLによる接続が可能になります。

おわりに

本記事ではCData MySQL DriversからCloud SQL for MySQLSSLで接続する方法を紹介しました。 CData MySQL Driversは30日間の評価版を無料でご利用頂けます。 Cloud SQL for MySQLとのデータ連携をご検討の方はぜひお試しください。