コンテンツに移動
データベース

プライベート Cloud SQL インスタンスをプライベート IP VM に接続する方法

2021年8月30日
Google Cloud Japan Team

※この投稿は米国時間 2021 年 8 月 17 日に、Google Cloud blog に投稿されたものの抄訳です。

MySQL データベースに保存された極めて機密性の高いデータを扱っていると想定してください。クレジット カード番号、医療記録、機密テキストといったものです。そのデータには重要なアプリケーション ワークロード用の仮想マシンからアクセスする必要がありますが、トラフィックが公共のインターネットには決して漏洩しないようにしたいと思っています。そのための最も簡単な方法は、外部 IP アドレスを削除することです。

プライベート IP のみのアーキテクチャを利用することには、メリットとデメリットがあります。より安全になることは確実ですが、それらのインスタンスへの接続はより複雑になり、計画にも時間がかかり、クラウド環境において追加の手順が必要になる場合があります。このブログでは、Google Cloud Platform 環境において、プライベート Cloud SQL インスタンスを内部 IP のみを持つ VM へ接続する方法をご紹介します。このソリューションでは、Cloud SQL Auth Proxy を使用しませんが、代わりに Compute Engine インスタンスを Cloud SQL に接続する方法に関する公開ドキュメントの内容をより詳しく解説します。大まかな手順は次のとおりです。


  1. プライベート Cloud SQL インスタンスの作成

  2. プライベート IP VM の作成

  3. mysqlsh クライアントを使用しての接続

  4. 接続のテスト

    プライベート Cloud SQL インスタンスの作成

    注: プライベート IP を使用するためには、ネットワークとアプリケーション環境が特定の要件を満たす必要があります。また、初めてプライベート IP を設定するには、追加の IAM 権限が必要です。こちらに記載されている要件をご覧ください。

    • プライベート IP を持つ Cloud SQL インスタンスを作成する

      • Google Cloud Console で、Cloud SQL の [インスタンス] ページに移動します。
        Cloud SQL の [インスタンス] に移動する

      • [インスタンスを作成] をクリックします。

      • 作成ウィザードの「構成オプション」セクションで、[接続] セクションを開きます。

      • プライベート IP チェックボックスを選択します。
        プルダウン リストにプロジェクトで使用可能な VPC ネットワークが表示されます。プロジェクトが共有 VPC のサービス プロジェクトである場合、ホスト プロジェクトの VPC ネットワークも表示されます。

      • 使用する VPC ネットワークを選択します。

      • プライベート サービス接続は必須」と表示された場合:

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Private_Cloud_SQL.max-600x600.jpg
  •  [接続を設定] をクリックします。

  •  [IP 範囲を割り振る] セクションで、次のいずれかのオプションを選択します。

    • プルダウンから既存の IP 範囲を 1 つ以上選択するか、新しい IP 範囲を作成します。プルダウンには、以前に割り振られた範囲があればそれが含まれます。または、[新しい IP 範囲を割り振る] を選択して、新しい範囲と名前を入力することもできます。

    • ネットワークで自動的に割り振られた IP 範囲を使用します。

  •  [続行] をクリックします。

  •  [接続を作成] をクリックします。

  • ネットワーク VPN_NAME 用のプライベート サービス接続が正常に作成されたことを確認します。

  •  [保存] をクリックします。

プライベート Cloud SQL インスタンスを作成するためには、プライベート サービス接続を作成し、IP 範囲を割り振る必要があることがわかります。プライベート サービス アクセスは、お客様の VPC ネットワークと基盤となる Google Cloud の VPC ネットワーク(Cloud SQL インスタンスが存在するネットワーク)との間の VPC ピアリング接続として実装されます。プライベート接続を使用すると、VPC ネットワーク内の VM インスタンスとアクセスするサービスで、内部 IP アドレスを使用して排他的に通信できるようになります。VM インスタンスは、インターネット アクセスまたは外部 IP アドレスがなくても、プライベート サービス アクセスを介してサービスにアクセスできます。詳しくはこちらをご覧ください。

プライベート IP VM の作成

作成した Cloiud SQL インスタンスと同じネットワークとリージョンに Compute Engine インスタンスを作成します。作成にあたっては次の各点に留意してください。

  • [アクセス スコープ] の下で、[API ごとにアクセス権を設定] をクリックします。VM の作成時に、Cloud SQL API へのアクセスを有効にします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Private_Cloud_SQL.max-1700x1700.jpg
Cloud SQL API へのアクセスの有効化
  • [ネットワーク、ディスク、セキュリティ、管理、単一テナンシー] を展開し、[ネットワーキング] の中で、ネットワーク インターフェースをクリックします。外部 IP に「なし」を指定して、VM に関連付けられる外部 IP を削除します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Private_Cloud_SQL.max-900x900.jpg
  • 問題がなければ、[作成] をクリックして、プライベート IP VM をインスタンス化します。

mysqlsh クライアントを使用しての接続

  • Oracle サイトの MySQL シェル コマンドライン ツールをローカルマシンにダウンロードします。

    • VM が実行されているオペレーティング システムを必ず選択します。この例では、Debian を使用しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_Private_Cloud_SQL.max-2000x2000.jpg

Oracle サイトからの MySQL シェル ダウンロード

  • SSH セッションタブに移動して、ファイルをアップロードするための歯車アイコンをクリックして、.deb ファイルを VM にアップロードします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_Private_Cloud_SQL.max-500x500.jpg
mysql ダウンロードをプライベート VM にアップロードする
  • アップロードが完了したら、コマンド `sudo dpkg -i mysql-shell_8.0.26-1debian10_amd64.deb`を実行して、シェルツールをインストールします。別の OS を使用している場合はその OS 用のパッケージをインストールするコマンドを実行します。

  • コマンド `mysqlsh \connect <INTERNAL_IP> --user=root --password=pass` を実行します。

    • ここで、<INTERNAL_IP> は、Cloud SQL コンソールで見つけられる Cloud SQL インスタンスのプライベート IP アドレスです。

    • インスタンス用のパスワードを作成した場合は、パスワード パラメータを含めます。

    • これで接続できるはずです。

  • コマンド `\sql SHOW DATABASES;` を実行して、内容を確認できるようになりました。

接続のテストとヒント

  • 割り振られた Private Service Connect サービスのルート / IP 範囲を一覧表示するコマンド: gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

  • わかりやすく説明するために、今回はインスタンスを自動のデフォルト ネットワーク構成で作成しました。接続に問題がある場合、CloudSQL インスタンスへのアクセスをブロックする特別なファイアウォール ルールがあるかどうかを確認します。

  • Cloud SQL API アクセスが VM 上で有効になっていることを確認します。

  • Cloud SQL のサポート全般


-戦略クラウド エンジニア Andrew Fleischer


投稿先