SSL / TLS 証明書を構成する

このページでは、すべての接続が暗号化されるようにインスタンスに SSL / TLS 暗号化を適用する方法について説明します。また、Cloud SQL でセルフマネージド SSL / TLS 証明書を使用して Cloud SQL インスタンスに安全に接続する方法についても説明します。

概要

Cloud SQL では、お客様がインスタンスを作成した時点で、サーバー証明書が自動的に作成されます。すべての接続で SSL / TLS を使用することをおすすめします。

SSL / TLS 証明書を使用してクライアント / サーバーの ID を検証するには、クライアント証明書を作成し、MySQL クライアント ホストマシンにダウンロードする必要があります。

インスタンスに SSL を適用する場合、インスタンスの再起動が必要になります。 SSL/TLS 証明書を変更した後に再起動が必要になることもあります。再起動が必要になると、Cloud SQL はインスタンスを自動的に再起動します。インスタンスを再起動するとダウンタイムが発生する可能性があります。

SSL / TLS 暗号化を適用する

SSL モードの設定を使用して、次の方法で SSL 暗号化を適用できます。

  • 非 SSL / 非 TLS 接続と SSL / TLS 接続の両方を許可します。 クライアント証明書は SSL / TLS 接続では検証されません。これがデフォルトです。

  • SSL / TLS で暗号化された接続のみを許可します。 クライアント証明書は SSL 接続では検証されません。

  • SSL / TLS で暗号化され、有効なクライアント証明書を有する接続のみを許可します。

Cloud SQL インスタンスで [非 SSL / 非 TLS 接続と SSL / TLS 接続を許可する] を選択すると、SSL / TLS 接続に加えて、暗号化されていない安全性の低い接続も承認されます。 すべての接続で SSL / TLS を必須としていない場合は、暗号化されていない接続が許可されます。このため、パブリック IP を使用してインスタンスにアクセスする場合は、すべての接続に SSL を適用することを強くおすすめします。

SSL / TLS 証明書を使用してインスタンスに直接接続することも、Cloud SQL Auth Proxy または Cloud SQL コネクタを使用して接続することもできます。 Cloud SQL Auth Proxy または Cloud SQL コネクタを使用して接続する場合、接続は SSL / TLS で自動的に暗号化されます。Cloud SQL Auth Proxy と Cloud SQL コネクタでは、SSL モードの設定に関係なく、クライアント ID とサーバー ID も自動的に検証されます。

SSL/TLS の要求を有効にするには、次の操作を行います。

コンソール

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] をクリックします。
  4. [セキュリティ] タブを選択します。
  5. 次のいずれかを選択します。
    • 暗号化されていないネットワーク トラフィックを許可する(非推奨)
    • SSL 接続のみを許可する。このオプションは、SSL / TLS 暗号化を使用する接続のみを許可します。証明書は検証されません。
    • 信頼できるクライアント証明書を必須にする。このオプションは、有効なクライアント証明書を使用し、SSL で暗号化されたクライアントからの接続のみを許可します。

gcloud

   gcloud sql instances patch INSTANCE_NAME \
   --ssl-mode=SSL_ENFORCEMENT_MODE
  

SSL_ENFORCEMENT_MODE は、次のいずれかのオプションに置き換えます。

  • ALLOW_UNENCRYPTED_AND_ENCRYPTED は、非 SSL / 非 TLS 接続と SSL / TLS 接続を許可します。SSL 接続の場合、クライアント証明書は検証されません。これはデフォルト値です。
  • ENCRYPTED_ONLY は、SSL / TLS で暗号化された接続のみを許可します。クライアント証明書は SSL 接続では検証されません。
  • TRUSTED_CLIENT_CERTIFICATE_REQUIRED は、SSL/TLS と有効なクライアント証明書で暗号化された接続のみを許可します。
  • 詳細については、 Cloud SQL for MySQL の設定
をご覧ください。

Terraform

SSL / TLS 暗号化を適用するには、Terraform リソースを使用します。

resource "google_sql_database_instance" "mysql_instance" {
  name             = "mysql-instance"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    ip_configuration {
      # The following SSL enforcement options only allow connections encrypted with SSL/TLS and with
      # valid client certificates. Please check the API reference for other SSL enforcement options:
      # https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1beta4/instances#ipconfiguration
      ssl_mode = "TRUSTED_CLIENT_CERTIFICATE_REQUIRED"
    }
  }
  # 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. 次のコマンドを実行します。プロンプトで「yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。

    terraform destroy

REST v1

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

    • PROJECT_ID: プロジェクト ID
    • SSL_ENFORCEMENT_MODE: 以下のいずれかの方法を選択します。
      • ALLOW_UNENCRYPTED_AND_ENCRYPTED: 非 SSL / 非 TLS 接続と SSL / TLS 接続を許可します。 SSL 接続の場合、クライアント証明書は検証されません。これはデフォルト値です。
      • ENCRYPTED_ONLY: SSL / TLS で暗号化された接続のみを許可します。
      • TRUSTED_CLIENT_CERTIFICATE_REQUIRED: SSL/TLS と有効なクライアント証明書で暗号化された接続のみを許可します。
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

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

    
    {
      "settings": {
        "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"}
      }
    }
    

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

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

REST v1beta4

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

    • PROJECT_ID: プロジェクト ID
    • SSL_ENFORCEMENT_MODE: 以下のいずれかの方法を選択します。
      • ALLOW_UNENCRYPTED_AND_ENCRYPTED: 非 SSL / 非 TLS 接続と SSL / TLS 接続を許可します。SSL 接続の場合、クライアント証明書は検証されません。これはデフォルト値です。
      • ENCRYPTED_ONLY: SSL/TLS で暗号化された接続のみを許可します。
      • TRUSTED_CLIENT_CERTIFICATE_REQUIRED: SSL/TLS と有効なクライアント証明書で暗号化された接続のみを許可します。
    • INSTANCE_ID: インスタンス ID

    HTTP メソッドと URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

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

    {
      "settings": {
        "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"}
      }
    }
    

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

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

サーバー証明書

Cloud SQL では、お客様がインスタンスを作成した時点で、サーバー証明書が自動的に作成されます。サーバー証明書が有効である限り、お客様が積極的にサーバー証明書を管理する必要はありません。Cloud SQL では、2 つの異なる認証局(CA)階層から選択できます。選択した CA 階層が、インスタンスのサーバー CA モードになります。インスタンスのサーバー CA モードとしてインスタンスごとの CA を使用している場合、サーバー証明書の有効期限は 10 年です。インスタンスのサーバー CA モードとして共有 CA を使用している場合(プレビュー)、サーバー証明書の有効期限は 1 年です。有効期限が切れると、サーバー証明書は無効になり、クライアントはその証明書を使用してインスタンスに安全な接続を確立できなくなります。クライアントが CA の検証またはサーバー証明書のホスト名の検証を構成している場合、期限切れのサーバー証明書を持つ Cloud SQL インスタンスへのクライアントの接続は失敗します。クライアント接続の中断を防ぐため、証明書の有効期限が切れる前にサーバー証明書をローテーションします。サーバー証明書の有効期限が近づくと、繰り返し通知されます。通知は、有効期限の 90 日前、30 日前、10 日前、2 日前、前日に送信されます。

サーバー証明書に関する情報(作成日時や有効期限など)を取得できます。有効期限が切れる前に、新しい証明書を手動で作成できます。

コンソール

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] をクリックします。
  4. [セキュリティ] タブを選択します。
  5. [サーバー証明書の管理] セクションに移動します。

    サーバー証明書の有効期限はテーブルに表示されています。

gcloud

自己署名サーバー証明書を使用するインスタンス(インスタンスごとの CA)の場合:

  1. サーバー証明書に関する情報を取得するには、sql ssl server-ca-certs list コマンドを使用します。
    gcloud sql ssl server-ca-certs list \
    --instance=INSTANCE_NAME
  2. サーバー証明書を作成するには、sql ssl server-ca-certs create コマンドを使用します。
    gcloud sql ssl server-ca-certs create \
    --instance=INSTANCE_NAME
  3. ローカル PEM ファイルに証明書情報をダウンロードします。
    gcloud sql ssl server-ca-certs list \
    --format="value(cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/FILE_NAME.pem
  4. ダウンロードしたファイルをクライアント ホストマシンにコピーすることにより既存の server-ca.pem ファイルを置き換え、すべてのクライアントが新しい情報を使用するように更新します。

共有 CA によって発行されたサーバー証明書を使用するインスタンスの場合プレビュー):

  1. サーバー証明書に関する情報を取得するには、beta sql ssl server-certs list コマンドを使用します。
    gcloud beta sql ssl server-certs list \
       --instance=INSTANCE_NAME
  2. サーバー証明書を作成するには、beta sql ssl server-certs create コマンドを使用します。
    gcloud beta sql ssl server-certs create \
       --instance=INSTANCE_NAME
  3. ローカル PEM ファイルに証明書情報をダウンロードします。
    gcloud beta sql ssl server-certs list \
       --format="value(ca_cert.cert)" \
       --instance=INSTANCE_NAME > \
       FILE_PATH/FILE_NAME.pem
  4. ダウンロードしたファイルをクライアント ホストマシンにコピーすることにより既存の server-ca.pem ファイルを置き換え、すべてのクライアントが新しい情報を使用するように更新します。

Terraform

サーバー証明書の情報を出力として指定するには、Terraform データソースを使用します。

  1. Terraform 構成ファイルに以下を追加します。
       data "google_sql_ca_certs" "ca_certs" {
         instance = google_sql_database_instance.default.name
       }
    
       locals {
         furthest_expiration_time = reverse(sort([for k, v in data.google_sql_ca_certs.ca_certs.certs : v.expiration_time]))[0]
         latest_ca_cert           = [for v in data.google_sql_ca_certs.ca_certs.certs : v.cert if v.expiration_time == local.furthest_expiration_time]
       }
    
       output "db_latest_ca_cert" {
         description = "Latest CA certificate used by the primary database server"
         value       = local.latest_ca_cert
         sensitive   = true
       }
       
  2. server-ca.pem ファイルを作成するには、次のコマンドを実行します。
       terraform output db_latest_ca_cert > server-ca.pem
       

クライアント証明書

新しいクライアント証明書を作成する

クライアント証明書は、インスタンスごとに 10 件まで作成できます。クライアント証明書を作成するには、Cloud SQL Admin IAM ロールが必要です。

クライアント証明書について、次の点にご留意ください。

  • 証明書の秘密鍵を紛失した場合、その秘密鍵は復元できないため、新たに秘密鍵を作成する必要があります。
  • デフォルトでは、クライアント証明書の有効期限は 10 年間です。
  • クライアント証明書の有効期限が近づいても、通知されません。
  • SSL 証明書を作成するには、Cloud SQL インスタンスが実行中の状態である必要があります。

コンソール

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

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

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [接続] をクリックします。
  4. [セキュリティ] タブを選択します。
  5. [クライアント証明書を作成] をクリックします。
  6. [クライアント証明書を作成] ダイアログ ボックスで、一意の名前を追加します。
  7. [作成] をクリックします。
  8. [新しい SSL 証明書を作成しました] ダイアログの最初のセクションで [client-key.pem をダウンロード] をクリックして、秘密鍵を client-key.pem というファイルにダウンロードします。
  9. 2 番目のセクションで、[client-cert.pem をダウンロード] をクリックして、クライアント証明書を client-cert.pem というファイルにダウンロードします。
  10. 3 番目のセクションで [server-ca.pem をダウンロード] をクリックして、サーバー証明書を server-ca.pem というファイルにダウンロードします。
  11. [閉じる] をクリックします。

gcloud

  1. ssl client-certs create コマンドを使用して、クライアント証明書を作成します。

    gcloud sql ssl client-certs create CERT_NAME client-key.pem \
    --instance=INSTANCE_NAME
  2. 作成した証明書の公開鍵を取得し、ssl client-certs describe コマンドを使用して client-cert.pem ファイルにコピーします。

    gcloud sql ssl client-certs describe CERT_NAME \
    --instance=INSTANCE_NAME \
    --format="value(cert)" > client-cert.pem
  3. instances describe コマンドを使用して、サーバー証明書を server-ca.pem ファイルにコピーします。

    gcloud sql instances describe INSTANCE_NAME \
    --format="value(serverCaCert.cert)" > server-ca.pem

Terraform

クライアント証明書を作成するには、Terraform リソースを使用します。

resource "google_sql_ssl_cert" "mysql_client_cert" {
  common_name = "mysql_common_name"
  instance    = google_sql_database_instance.mysql_instance.name
}

REST v1

  1. SSL / TLS 証明書を作成したうえで、このインスタンスにとって一意となる名前をその証明書に対して指定します。

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

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • client-cert-name: クライアント証明書名

    HTTP メソッドと URL:

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

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

    {
      "commonName" : "client-cert-name"
    }
    

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

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

  2. 以下のようにして、レスポンスのうち引用符で囲まれた証明書の内容全体(引用符そのものは除く)をローカル ファイルにコピーします。
    1. serverCaCert.certserver-ca.pem にコピーします。
    2. clientCert.certclient-cert.pem にコピーします。
    3. certPrivateKeyclient-key.pem にコピーします。
  3. リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • activation-policy: アクティベーション ポリシーは ALWAYS または NEVER です

    HTTP メソッドと URL:

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

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

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

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

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

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

REST v1beta4

  1. SSL / TLS 証明書を作成したうえで、このインスタンスにとって一意となる名前をその証明書に対して指定します。

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

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • client-cert-name: クライアント証明書名

    HTTP メソッドと URL:

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

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

    {
      "commonName" : "client-cert-name"
    }
    

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

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

  2. 以下のようにして、レスポンスのうち引用符で囲まれた証明書の内容全体(引用符そのものは除く)をローカル ファイルにコピーします。
    1. serverCaCert.certserver-ca.pem にコピーします。
    2. clientCert.certclient-cert.pem にコピーします。
    3. certPrivateKeyclient-key.pem にコピーします。
  3. リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • activation-policy: アクティベーション ポリシーは ALWAYS または NEVER です

    HTTP メソッドと URL:

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

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

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

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

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

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

この時点でお客様が保持している証明書は以下のとおりです。

  • server-ca.pem という名前で保存されたサーバー証明書。
  • client-cert.pem という名前で保存されたクライアントの公開鍵証明書。
  • client-key.pem という名前で保存されたクライアント秘密鍵。

接続に使用するツールにより、これら 3 つのアイテムの指定方法が異なります。たとえば、MySQL クライアントを使用して接続するときは、これら 3 つのファイルをそれぞれ --ssl-ca--ssl-cert--ssl-key コマンド オプションの値として指定します。MySQL クライアントと SSL / TLS を使用した接続の例については、MySQL クライアントとの接続をご覧ください。

サーバー ID の検証について

サーバー ID の検証は、Cloud SQL インスタンスのサーバー認証局(CA)階層の構成によって異なります。

インスタンスがインスタンスごとの CA を使用するように構成されている場合、それぞれのインスタンスに一意の CA があるため、CA を確認するとサーバー ID の検証も行われます。

インスタンスが共有 CA(プレビュー)を使用するように構成されている場合、サーバー CA はインスタンス間で共有されるため、サーバー ID の検証には CA とホスト名の確認が必要です。

インスタンスごとの CA がある場合、Private Service Connect インスタンスに対してのみ DNS 名に基づくサーバー ID の検証を行えます。

共有 CA(プレビュー)がある場合は、Private Service Connectプライベート サービス アクセス、パブリック IP インスタンスなど、すべてのタイプのインスタンスに対して DNS 名に基づくサーバー ID の検証を行えます。

インスタンスの詳細を表示すると、Cloud SQL インスタンスに構成されている CA 階層を確認できます。

詳細については、インスタンスの情報を表示する、または次のセクションのサーバー ID の検証を有効にするをご覧ください。

サーバー ID の検証を有効にする

Cloud SQL インスタンスのサーバー CA モードとして共有 CA を選択する場合(プレビュー)は、サーバー ID の検証も有効にすることをおすすめします。サーバー CA モードとして共有 CA を使用するインスタンスには、サーバー証明書のサブジェクト代替名(SAN)フィールドにインスタンスの DNS 名が含まれています。この DNS 名は、インスタンス ルックアップ API を使用して取得し、そのレスポンスをサーバー ID の検証用のホスト名として使用します。DNS 名の DNS 解決を設定する必要があります。

サーバー ID の検証を有効にするには、次の手順を実施します。

  1. DNS 名を取得します。

    1. Cloud SQL インスタンスの概要情報(インスタンスの DNS 名など)を表示するには、gcloud sql instances describe コマンドを使用します。

      gcloud sql instances describe INSTANCE_NAME \
        --project=PROJECT_ID

      次のように置き換えます。

      • INSTANCE_NAME: Cloud SQL インスタンスの名前
      • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
    2. レスポンスに DNS 名が表示されていることを確認します。この名前には、次のようなパターンがあります。

      INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
      

      例:

      1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.

  2. DNS ゾーンに DNS レコードを作成します。非公開で接続する場合は、対応する Virtual Private Cloud(VPC)ネットワークの限定公開 DNS ゾーンに DNS レコードを作成します。

  3. Cloud SQL for MySQL インスタンスに接続する場合は、DNS 名をホスト名として設定します。次に、クライアントでサーバー ID の検証を有効にします。

    たとえば、MySQL クライアントを使用する場合は、フラグ --ssl-mode=VERIFY_IDENTITY を指定します。他の MySQL クライアント ドライバにも同様の構成フラグがあります。

次のステップ