MySQL authentication_ociプラグインで、MDSへ接続してみる

この記事は最終更新から2年以上経過しています。内容が古くなっている可能性があります。

先日(11/19)に MySQL Database authorization with IAM and IAM Identity Domains がリリースされ、MDSへの接続にIAM認証が追加されました
そこで、本記事ではauthentication_ociプラグインを用いてMDSへ接続する手順を簡単に確認してみたいと思います

前提条件

  • IAMユーザにauthentication_ociプラグインで使用するためのAPIキーを登録する
  • 構成ファイルを作成する
  • ポリシーを設定する

ドキュメントには記載されておりませんが、authentication_ociプラグインが8.0.27以降でなければ含まれていないようですので、8.0.27のパッケージを用意します
筆者は Oracle Linux 7 を使用しましたので、mysql-community-client-plugins-8.0.27-1.el7.x86_64.rpm のパッケージに authentication_oci_client.so が含まれていることを確認しています

他にも、ドキュメント には制限事項なども記載されておりますので、一度は目を通していただければと思います

それでは、authentication_ociプラグインを使用しての接続方法を紹介したいと思います
※前提条件のIAMユーザへのAPIキーの登録や構成ファイルの準備、ポリシーの設定などは完了しているものとします

IAMユーザーへのMySQLユーザーのマッピング

以下のようなクエリを管理者ユーザにて実行します

authentication_ociプラグインで指定している、各オプションは以下となります

  • tenancy:ユーザーが作成されたテナンシのOCID
  • user: MySQLユーザーUser001のマッピング先となるIAMユーザーのOCID

MySQL への接続確認

目次

1.マップ済ユーザーを使用したDBシステムへの接続(MySQL クライアント)

構成ファイルがプラットフォームのデフォルトの場所にない場合は、 --oci-config-file オプションで構成ファイルの場所を指定する必要があります

2.マップ済ユーザーを使用したDBシステムへの接続(MySQL Shell)

MySQL Shellでは、デフォルトのCLI構成のみが使用可能です

3.マップ済ユーザーを使用したDBシステムへの接続(MySQL Connector/Python)

下記のような簡単なPythonコードを用意しました

実行してみます

構成ファイルがプラットフォームのデフォルトの場所にない場合は、 mysql.connector.connect() のオプション( oci_config_file ) で構成ファイルの場所を指定する必要があります

まとめ

すでに、OCI CLIを利用している場合は、MySQLクライアントやMySQL Shellからの接続に関しては、ポリシーの設定以外に特別な準備などは必要がないため、とても簡単に利用できるのではないでしょうか
また、authentication_ociプラグインを使用すれば、アプリケーション・コードからパスワードを排除することが可能になるなど、セキュアなコードの一助になるのでは無いでしょうか
※CLI構成ファイルには鍵ファイルの場所などが含まれているため、構成ファイルの管理は非常に重要になります

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃OCIのサポート業務に従事している有資格者で構成された技術サポートチームがOCIに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次