Azure Database for MySQL に安全に接続するためにアプリケーションで SSL 接続を構成する

Azure Database for MySQL は、Secure Sockets Layer (SSL) を使用した、クライアント アプリケーションへの Azure Database for MySQL サーバーへの接続をサポートします。 データベース サーバーとクライアント アプリケーション間に SSL 接続を適用すると、サーバーとアプリケーション間のデータ ストリームが暗号化されて、"man in the middle" 攻撃から保護されます。

手順 1: SSL 証明書を取得する

Azure Database for MySQL サーバーで SSL 経由で通信するために必要な証明書を https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem からダウンロードし、その証明書ファイルをローカル ドライブ (このチュートリアルでは c:\ssl を使用) に保存します。 Microsoft Internet Explorer と Microsoft Edge の場合: ダウンロードが完了したら、証明書の名前を BaltimoreCyberTrustRoot.crt.pem に変更します。

手順 2: SSL をバインドする

MySQL Workbench による SSL 経由でのサーバーへの接続

SSL 経由で安全に接続するように MySQL Workbench を構成します。 MySQL Workbench で、[Setup New Connection](新しい接続のセットアップ) ダイアログの [SSL] タブに移動します。[SSL CA File:](SSL CA ファイル:) フィールドに BaltimoreCyberTrustRoot.crt.pem ファイルの場所を入力します。 カスタマイズしたタイルの保存

MySQL CLI による SSL 経由でのサーバーへの接続

MySQL コマンド ライン インターフェイスを使用して、次のコマンドを実行します。

mysql.exe -h mysqlserver4demo.mysql.database.azure.com -u Username@mysqlserver4demo -p --ssl-ca=c:\ssl\BaltimoreCyberTrustRoot.crt.pem

手順 3: Azure で SSL 接続を適用する

Azure ポータルの使用

Azure Portal から Azure Database for MySQL サーバーにアクセスし、[接続のセキュリティ] をクリックします。 トグル ボタンを使用して、[SSL 接続を強制する] 設定を有効または無効にし、[保存] をクリックします。 Microsoft では、セキュリティ強化のため [SSL 接続を強制する] 設定を常に有効にしておくことをお勧めします。 SSL の有効化

Azure CLI の使用

ssl-enforcement パラメーターを有効または無効にするには、Azure CLI でそれぞれ Enabled または Disabled の値を使用します。

az mysql server update --resource-group myresource --name mysqlserver4demo --ssl-enforcement Enabled

手順 4: SSL 接続を確認する

MySQL の status コマンドを実行して、SSL 経由で MySQL サーバーに接続していることを確認します。

mysql> status

接続が暗号化されていることを確認します。そのためには、出力に "SSL: Cipher in use is AES256-SHA" (SSL: 使用中の暗号は AES256-SHA) と表示されていることを確認します。

サンプル コード

PHP

$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/BaltimoreCyberTrustRoot.crt.pem", NULL, NULL) ; 
mysqli_real_connect($conn, 'myserver4demo.mysql.database.azure.com', 'myadmin@myserver4demo', 'yourpassword', 'quickstartdb', 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

Python

try:
conn = mysql.connector.connect(user='myadmin@myserver4demo',password='yourpassword',database='quickstartdb',host='myserver4demo.mysql.database.azure.com',ssl_ca='/var/www/html/BaltimoreCyberTrustRoot.crt.pem')
except mysql.connector.Error as err:
 print(err)

次のステップ

Azure Database for MySQL の接続ライブラリに従って、さまざまなアプリケーション接続オプションを確認する