はじめに
今回の記事は、OCIのHeatWave on AWSのPrivateLinkを利用して、AWSの VPCで、プライベートサブネット内に構築したプライベートIPアドレスのみを持つEC2コンピュート・インスタンスから、OCIのHeatWave My SQL DB Systemに接続できるかどうかを、検証してみます。
本記事の前提条件
- OCI HeatWave on AWSに、HeatWave MySQLを構築している
- AWSのPrivate Subnetに、PrivateIPアドレスのみを持つEC2コンピュート・インスタンスを構築している
- PrivateIPアドレスのみを持つEC2コンピュート・インスタンスに、My SQLクライアントをインストールしている ※本記事は、My SQL versionは、8.4.1を使用
HeatWave MySQLの構築については、Creating a DB Systemからご確認ください。
OCIのHeatWave on AWSでPrivateLinkを作成
HeatWave コンソールから、PrivateIPアドレスを使用して、HeatWave on AWS の HeatWave MySQL DB System に接続するための PrivateLink を作成します。
PrivateLinkを作成するにあたって、以下が必要になります。
-
アクティブ状態の HeatWave MySQL DB System
-
承認されたプリンシパルの ARN
(※承認されたプリンシパルの ARN (Amazon Resource Name) とは、AWS リソースに対するアクセス権を持つエンティティを一意に識別するための識別子)
PrivateLink を作成するには、以下の手順を実行します。
-
HeatWave コンソールで、HeatWave MySQL タブを選択します。
-
「Create PrivateLink」画面で、以下の情報を入力します。
【基本情報】
・ 表示名: PrivateLink の表示名を指定するか、生成されたデフォルト名を使用します。
・ 説明: (任意) PrivateLink の説明を指定します。
・ PrivateLink の種類: PrivateLink の種類を選択します
・ クエリ: PrivateIPアドレスを使用して、顧客アプリケーションから HeatWave on AWS の HeatWave MySQL DB Systemへの接続を提供します。
・ 承認されたプリンシパルの ARN: PrivateLinkへの接続を作成するプリンシパルの ARN を承認します。スペースで区切って複数の ARN を指定できます。
・対象HeatWave MySQL DB System: PrivateLink に関連付ける HeatWave MySQL DB Systemを選択します。
-
「Create」をクリックします。
以下の画像の通り、「PrivateLink」画面に作成したPrivateLinkが表示されます。
AWSアカウントで、エンドポイントを作成
次に、AWS マネジメントコンソールを使用して、HeatWave MySQL DB Systemと同じリージョンおよびアベイラビリティゾーンにエンドポイントを作成します。
本記事では、東京リージョンとしています。
エンドポイントを作成するにあたって、以下が必要になります。
-
AWS マネジメントコンソールへのアクセス
-
OCI HeatWave on AWSで作成したPrivateLink のサービス名
-
HeatWave MySQL DB Systemと同じアベイラビリティゾーンにサブネットを持つ稼働中の仮想プライベートクラウド(VPC)
エンドポイントを作成するには、次の手順を実行します。
-
AWS マネジメントコンソールのホームページで、「サービス」 > 「ネットワーキング & コンテンツ配信」 > 「VPC」をクリックします。
-
コンソールのナビゲーションペインで「仮想プライベートクラウド」の下にある「エンドポイント」をクリックし、「エンドポイントを作成」をクリックします。
-
以下を入力します:
【エンドポイント設定】
・ エンドポイント設定: (任意)エンドポイントの名前を指定します。
・ サービスカテゴリ: 「その他のエンドポイントサービス」を選択します。
【サービス設定】
・ サービス名: PrivateLink のサービス名を指定します。エンドポイントを PrivateLink と同じリージョンで作成するようにしてください。
「サービスを確認」をクリックします。
PrivateLink の権限が正しく構成されている場合、サービス名が正しく確認されます。サービスの確認に失敗した場合、PrivateLink の承認されたプリンシパルフィールドが正しいか、IAM 権限が適切に構成されているかを確認してください。
【VPC】
・ VPC: エンドポイントを作成する VPC を選択します。「追加設定」をクリックします。1・ DNS 名を有効にする: このチェックボックスをオンにすることを推奨します。これにより、VPC がPrivateLink のホスト名をエンドポイントのPrivateLink IP アドレスに解決するように構成されます。 このチェックボックスをオフにした場合、ホスト名を使用して PrivateLink に自動的に接続することはで きず、VPC の DNS を手動で構成する必要があります。
以下の画像の通り、「エンドポイント」画面に作成したエンドポイントが表示されます。
OCIのHeatWave on AWSでPrivateLink を使用して HeatWave MySQL DB Systemに接続する
最後に、作成したPrivateLinkを介して、HeatWave on AWSのHeatWave MySQL DB Systemに接続します。
次の手順を実行して、PrivateLink を使用して HeatWave MySQL DB Systemに接続します。
- EC2コンピュート・インスタンスへSSH接続します。
- MySQL クライアントを使用して 以下のコマンドを入力し、HeatWave MySQL DB Systemにアクセスします。
1mysql --host=XXXXX --user=admin --password=XXXX --protocol=TCP --port=3306 --ssl-mode=VERIFY_IDENTITY --ssl-ca=XXXX
各オプションの説明
1 |
--host=XXXX |
接続先の MySQL サーバーのホスト名を指定します。ここでは、PrivateLink を介した HeatWave MySQL DB Systemのホスト名を指定しています。
1 |
--user=admin |
MySQL サーバーに接続するためのユーザー名を指定します。ここでは、admin ユーザーを使用しています。
1 |
--password=XXX |
MySQL サーバーに接続するためのパスワードを指定します。
1 |
--protocol=TCP |
MySQL サーバーへの接続に使用するプロトコルを指定します。
1 |
--port=3306 |
MySQL サーバーがリッスンしているポート番号を指定します。
1 |
-ssl-mode=VERIFY_IDENTITY |
SSL 接続のモードを指定します。VERIFY_IDENTITY を指定すると、SSL 接続を確立し、サーバーの証明書に基づいてサーバーのアイデンティティを検証します。
1 |
--ssl-ca=XXXX |
サーバー証明書を検証するための CA(証明書機関)バンドルファイルを指定します。ここでは、aws-ap-northeast-1-cabundle.pem というファイルが使用されています。このファイルは AWS が提供する CA 証明書を含むもので、接続の信頼性を保証します。
HeatWave MySQL DB Systemに接続して、試しに、HeatWave MySQL DB System内のユーザーアカウントに関する情報を取得するための SQL クエリを実行します。
HeatWave コンソール上で、"ponsuke"というユーザーを作成しています。
エンドポイントからでも、作成したユーザーが確認できるかどうか、実行してみます。
以下の画像の通り、画面左側は、エンドポイントから接続したユーザー確認画面になり、画面右側はHeatWave コンソール上から確認ができたユーザー画面となります。
まとめ
今回の記事では、AWSのVPC内に構築されたPrivateIPアドレスのみを持つEC2インスタンスから、OCIのHeatWave MySQL DBシステムに接続する方法について検証しています。具体的には、OCIのHeatWave on AWSのPrivateLinkを活用し、インターネットを経由せずに安全に接続できるかどうかを確認します。この記事を通じて、OCIとAWSの連携によるセキュアなデータベース接続の実現可能性について理解を深めていただけるでしょう。