このページでは、Cloud SQL インスタンスにカスタム ドメイン名システム(DNS)名を設定する方法について説明します。
概要
組織で管理されているカスタム DNS 名を使用してアプリケーションが接続できるように、Cloud SQL インスタンスを構成できます。IP アドレスではなくカスタム DNS 名を使用して Cloud SQL インスタンスに接続する場合は、カスタム サブジェクト代替名(SAN)を構成します。カスタム SAN は、インスタンスの作成時または更新時に構成できます。
カスタム DNS 名をカスタム SAN 構成としてインスタンスに追加すると、Cloud SQL はカスタム DNS 名をインスタンスのサーバー証明書の SAN フィールドに挿入します。このカスタマイズにより、ホスト名の検証でカスタム DNS 名を安全に使用できます。カスタム SAN 構成には、最大 3 つのカスタム DNS 名をカンマ区切りで追加できます。セキュリティ上の理由から、カスタム SAN 構成は、サーバー CA モードとして CUSTOMER_MANAGED_CAS_CA
で構成したインスタンスでのみ使用できます。
インスタンスのカスタム DNS 名を構成したら、そのカスタム DNS 名を使用して、Cloud SQL 言語コネクタや Cloud SQL Auth Proxy などのデータベース クライアントまたはアプリケーションに接続できます。
ワークフロー
インスタンスのカスタム DNS 名を設定する手順は次のとおりです。
- 顧客管理 CA で構成されたインスタンスを作成します。
- インスタンスにカスタム SAN 値を追加します。カスタム SAN 値は、インスタンスのサーバー証明書の SAN フィールドに挿入されます。
- インスタンスの IP アドレスを確認します。
- インスタンスのカスタム DNS レコードを作成します。
- カスタム DNS 名を使用してインスタンスに接続します。
始める前に
インスタンスのカスタム DNS 名を設定する前に、必要なロールと権限があることを確認してください。
新しい Cloud SQL インスタンスを作成する場合、カスタム SAN を使用するには、インスタンスでサーバー CA モードに顧客管理の認証局(CA)も使用する必要があります。
カスタム SAN 値を使用してインスタンスを作成する
カスタム SAN 値を使用してインスタンスを作成するには、次の gcloud sql instances create
コマンドを使用します。
gcloud
gcloud sql instances create "INSTANCE_NAME" \ --database-version=DATABASE_VERSION \ --project=PROJECT_ID \ --region=REGION \ --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \ --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID --custom-subject-alternative-names=CUSTOM_DNS_NAME
次のように置き換えます。
INSTANCE_NAME
は、作成する Cloud SQL インスタンスの名前に置き換えます。DATABASE_VERSION
は、作成する Cloud SQL インスタンスのバージョンのenum
に置き換えます。PROJECT_ID
は、Cloud SQL インスタンスを作成するプロジェクトの ID に置き換えます。PROJECT_ID_CAS
は、CA_POOL_ID を作成したプロジェクトの ID に置き換えます。このプロジェクトは、Cloud SQL インスタンスを作成するプロジェクトと同じ場合も異なる場合もあります。REGION
は、CA プールを作成したリージョンに置き換えます。インスタンスは CA プールと同じリージョンに作成する必要があります。CA_POOL_ID
は、作成した CA プールの ID に置き換えます。CUSTOM_DNS_NAME
: 最大 3 つのカスタム DNS 名をカンマ区切りで指定します。値の間にスペースを入れないでください。例:develop.example.com,test.example.com,production.example.com
インスタンスのカスタム SAN 値を追加または更新する
既存のインスタンスのカスタム SAN 値を追加または更新するには、次の操作を行います。
gcloud
gcloud sql instances patch INSTANCE_NAME \ --custom-subject-alternative-names=CUSTOM_DNS_NAME
次のように置き換えます。
INSTANCE_NAME
は、更新する Cloud SQL インスタンスの名前に置き換えます。CUSTOM_DNS_NAME
: 最大 3 つのカスタム DNS 名をカンマ区切りで指定します。値の間にスペースを入れないでください。例:develop.example.com,new-test.example.com,production.example.com
。
インスタンスからすべてのカスタム SAN 値を消去する
インスタンスからすべてのカスタム SAN 値を消去するには、次の操作を行います。
gcloud
gcloud sql instances patch INSTANCE_NAME \ --clear-custom-subject-alternative-names
INSTANCE_NAME
は、更新する Cloud SQL インスタンスの名前に置き換えます。
カスタム DNS レコードを作成する
クライアントとアプリケーションでカスタム DNS 名を使用してインスタンスに接続する前に、DNS 名と IP アドレスのマッピングを設定します。このマッピングは DNS 解決と呼ばれます。非公開で接続する場合は、対応する Virtual Private Cloud(VPC)ネットワークの限定公開 DNS ゾーンに DNS レコードを作成します。
インスタンスのカスタム DNS レコードを作成するには、次の操作を行います。
インスタンスの IP アドレスを取得します。次のコマンドを実行します。
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
次のように置き換えます。
- INSTANCE_NAME: Cloud SQL インスタンスの名前
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
レスポンスで
ipAddresses:
フィールドを探します。次に例を示します。
ipAddresses: - ipAddress: 192.0.2.4 type: PRIVATE
プライベート サービス アクセス、Private Service Connect、またはその両方用に構成されたインスタンスのプライベート IP アドレスを取得できます。
アプリケーションで使用される DNS ゾーンに 2 つの DNS レコードを追加します。自分で管理する DNS サーバーまたはアプリケーションで使用される Cloud DNS プライベート ゾーンを使用できます。
- インスタンスの IP アドレスの
A
レコードを作成する - インスタンス接続名を含む
TXT
レコードを作成します。
標準のデータベース クライアントは、
A
レコードを使用して IP アドレスを検索し、接続を行います。Cloud SQL 言語コネクタと Cloud SQL Auth Proxy は、TXT
レコードを使用してインスタンス接続名を検索します。たとえば、インスタンスの接続文字列は
my-project:region:my-instance
ですが、DNS 名prod-db.mycompany.example.com
を使用して接続する場合などです。会社のネットワーク上のインスタンスの IP アドレスが192.0.2.4
の場合は、次の DNS レコードを作成します。Record type: A Name: prod-db.mycompany.example.com Value: 192.0.2.4 TTL: 600 Record type: TXT Name: prod-db.mycompany.example.com Value: my-project:region:my-instance TTL: 600
- インスタンスの IP アドレスの
カスタム DNS 名を使用してインスタンスに接続する
Cloud SQL for PostgreSQL インスタンスに接続する場合は、カスタム DNS 名をホスト名として構成し、クライアントでサーバー ID の検証を有効にします。たとえば、psql
クライアントを使用する場合は、フラグ sslmode=verify-full
外部ネットワークからプライベート Cloud SQL インスタンスに接続する場合は、外部接続を許可し、Cloud DNS がオンプレミス システムと通信できるように、Cloud SQL インスタンスとその Virtual Private Cloud(VPC)ネットワークを構成する必要があります。この構成の詳細については、外部ソースから接続するとオンプレミス システムの DNS を構成するをご覧ください。
制限事項
- Cloud SQL インスタンスのサーバー証明書に、カスタム SAN 値として 3 つを超える DNS 名を追加することはできません。
- インスタンスのカスタム SAN 値として証明書に追加できる DNS 名の最大長は 253 文字です。
- インスタンスの証明書に追加する DNS 名には、ワイルドカード文字(
*
)や末尾のドットを含めることはできません。たとえば、test.example.com.
は許可されません。 - DNS 名は、RFC 1034 で規定されている有効な名前である必要があります。
- カスタム SAN 値は
CUSTOMER_MANAGED_CAS_CA
インスタンスでのみ指定できます。
次のステップ
- Cloud SQL インスタンスで SSL / TLS を管理する。
- Google Cloudでの暗号化の処理方法について詳細を確認する。
- SSL / TLS 証明書を使用して Cloud SQL インスタンスに接続する。
- PostgreSQL で SSL / TLS を使用する方法について詳細を確認する