承認済みネットワークを使用して承認する

このページでは、IP アドレスを使用する Cloud SQL インスタンスへの接続に承認済みネットワーク設定を使用する方法について説明します。

承認済みネットワークを構成する

クライアント アプリケーションの IP アドレスまたはアドレス範囲は、次の場合に authorized networks として構成する必要があります。

  • クライアント アプリケーションが、パブリック IP アドレスで Cloud SQL インスタンスに直接接続している。
  • クライアント アプリケーションが、プライベート IP アドレスで Cloud SQL インスタンスに直接接続していて、クライアントの IP アドレスが RFC 1918 以外のアドレスになっている。

IP アドレスは、単一のエンドポイントにすることも、CIDR 表記の範囲にすることもできます。

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] を選択します。
  4. [Network] タブをクリックします。
  5. [パブリック IP] チェックボックスをオンにします。
  6. [ネットワークを追加] をクリックします。
  7. [名前] フィールドに、新しいネットワークの名前を入力します。
  8. [ネットワーク] フィールドに、接続を許可するパブリック IPv4 アドレスまたはアドレス範囲を入力します。

    アドレス範囲には、有効な CIDR 表記(例: 10.10.10.0/24)を使用する必要があります。

  9. [完了] をクリックします。
  10. [保存] をクリックします。

gcloud

承認済みネットワークを構成すると、既存の承認済みネットワークのリストが置き換えられます。

gcloud sql instances patch INSTANCE_ID \
--authorized-networks=NETWORK_RANGE_1,NETWORK_RANGE_2...
    

Terraform

承認済みネットワークを構成するには、Terraform リソースを使用します。

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-with-authorized-network"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    ip_configuration {
      authorized_networks {
        name            = "Network Name"
        value           = "192.0.2.0/24"
        expiration_time = "3021-11-15T16:19:00.094Z"
      }
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

変更を適用する

Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
    terraform init

    必要に応じて、最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行し、プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

変更を削除する

変更を削除するには、次の手順を行います。

  1. 削除の保護を無効にするには、Terraform 構成ファイルで deletion_protection 引数を false に設定します。
    deletion_protection =  "false"
  2. 次のコマンドを実行し、プロンプトで「yes」と入力して、更新された Terraform 構成を適用します。
    terraform apply
  1. 以前に Terraform 構成で適用されたリソースを削除するには、次のコマンドを実行して、プロンプトに「yes」と入力します。

    terraform destroy

REST v1

承認済みネットワークを構成すると、既存の承認済みネットワークのリストが置き換えられます。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • network_range_1: 認可済みの IP アドレスまたは範囲
  • network_range_2: 別の認可済み IP アドレスまたは範囲

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

リクエストの本文(JSON):

{
  "settings":
  {
    "ipConfiguration":
    {
      "authorizedNetworks":
        [{"value": "network_range_1"}, {"value": "network_range_2"}]
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

承認済みネットワークを構成すると、既存の承認済みネットワークのリストが置き換えられます。

リクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID
  • network_range_1: 認可済みの IP アドレスまたは範囲
  • network_range_2: 別の認可済み IP アドレスまたは範囲

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

リクエストの本文(JSON):

{
  "settings":
  {
    "ipConfiguration":
    {
      "authorizedNetworks":
        [{"value": "network_range_1"}, {"value": "network_range_2"}]
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

制限事項

一部の IP アドレス範囲は、承認済みネットワークとして追加できません。

アドレス範囲 メモ
10.0.0.0/8 RFC 1918 アドレス範囲。これらは、Cloud SQL によって承認済みネットワークに自動的かつ暗黙的に含まれます。
172.16.0.0/12 RFC 1918 アドレス範囲。これらは、Cloud SQL によって承認済みネットワークに自動的かつ暗黙的に含まれます。
192.168.0.0/16 RFC 1918 アドレス範囲。これらは、Cloud SQL によって承認済みネットワークに自動的かつ暗黙的に含まれます。

次のステップ