Vom Kunden verwaltete Zertifizierungsstelle verwenden

Auf dieser Seite wird beschrieben, wie Sie die vom Kunden verwaltete Zertifizierungsstelle als Server-CA-Modus für Ihre Cloud SQL-Instanz verwenden.

Übersicht

Bei der Option „Kundenverwaltete Zertifizierungsstelle“ richten Sie Ihren eigenen CA-Pool und Ihre eigene CA im Certificate Authority Service (CA Service) ein. Wenn Sie die Option „Vom Kunden verwaltete Zertifizierungsstelle“ auswählen, richten Sie die Zertifizierungsstellenhierarchie ein und verwalten die Rotation von Zertifizierungsstellenzertifikaten für Ihre Cloud SQL-Instanzen.

Bevor Sie eine Cloud SQL-Instanz mit der Option „Kundenverwaltete Zertifizierungsstelle“ erstellen können, müssen Sie mit CA Service einen CA-Pool in derselben Region wie Ihre Instanz und mindestens eine Zertifizierungsstelle in diesem Pool erstellen. Die Zertifizierungsstelle kann eine Stamm-CA oder eine untergeordnete CA sein. Sie haben auch die Möglichkeit, eine untergeordnete Zertifizierungsstelle im CA-Dienst zu erstellen und sie dann mit einer externen Stamm-CA zu verknüpfen. Geben Sie den CA-Pool an, wenn Sie die Instanz erstellen. Ihre Anfrage wird an ein projektspezifisches Dienstkonto delegiert, das die Berechtigung zur Verwendung des CA-Pools hat. Das Dienstkonto fordert eine Zertifizierungsstelle aus dem Pool an und Cloud SQL verwendet diese Zertifizierungsstelle, um das Serverzertifikat für die Instanz zu signieren.

Für den Server-CA-Modus Ihrer Instanz in Cloud SQL haben Sie folgende drei Möglichkeiten:

  • Interne Zertifizierungsstelle pro Instanz
  • Von Google verwaltete gemeinsame Zertifizierungsstelle
  • vom Kunden verwaltete Zertifizierungsstelle

Sie können die Option „Vom Kunden verwaltete Zertifizierungsstelle“ auswählen, wenn Sie aus Compliance-Gründen Ihre eigene Zertifizierungsstelle verwalten müssen. Weitere Informationen zur Verwendung der anderen Optionen finden Sie unter Mit SSL/TLS-Zertifikaten autorisieren.

Workflow

So verwenden Sie die Option „Vom Kunden verwaltete Zertifizierungsstelle“:

  1. Erstellen Sie ein Dienstkonto für Ihr Cloud SQL-Projekt.
  2. Erstellen Sie einen CA-Pool im CA-Dienst.
  3. Erstellen Sie eine Zertifizierungsstelle im CA-Dienst.
  4. Erstellen Sie eine Cloud SQL-Instanz, die die Zertifizierungsstelle verwendet. Wenn Sie die Instanz erstellen, delegieren Sie dem Dienstkonto die Berechtigung, das Serverzertifikat mit dem von Ihnen erstellten CA-Pool zu signieren.

Hinweise

Bevor Sie die Option „Kundenverwaltete Zertifizierungsstelle“ verwenden, müssen Sie die folgenden Anforderungen erfüllen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen für jedes einzelne Projekt die IAM-Rolle Service Account Creator (roles/iam.serviceAccountCreator) zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Cloud SQL-spezifischen Dienstkontos benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „CA Service Operation Manager“ (roles/privateca.caManager) für CA Service zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines CA-Pools und einer Zertifizierungsstelle benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Projektspezifisches Dienstkonto erstellen

Erstellen Sie in dem Projekt, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten, ein spezielles Dienstkonto, das die Anfrage zum Erstellen und Signieren der Serverzertifikate für Ihre Cloud SQL-Instanzen verarbeitet.

gcloud

Führen Sie den folgenden Befehl aus, um ein Dienstkonto für Ihr Cloud SQL-Projekt zu erstellen:

gcloud beta services identity create \
  --service=sqladmin.googleapis.com \
  --project=PROJECT_ID

Ersetzen Sie PROJECT_ID durch die ID des Projekts, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten.

Mit dem Befehl wird im Projekt ein Dienstkonto mit dem Namen service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com erstellt. Notieren Sie sich den Namen des Dienstkontos vom Typ CA Service-Zertifikatsanfragesteller.

CA-Pool erstellen

Erstellen Sie einen CA-Pool im CA-Dienst.

Sie können einen CA-Pool im selben Projekt erstellen, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten, oder in einem anderen Projekt. Wenn Sie den CA-Pool jedoch in einem anderen Projekt erstellen, wird Ihnen je nach Organisationsrichtlinie möglicherweise durch VPC Service Controls das Erstellen von Cloud SQL-Instanzen untersagt. Um das Problem zu beheben, müssen das Projekt, in dem der CA-Pool und die Zertifizierungsstelle gehostet werden, und das Projekt, in dem Cloud SQL gehostet wird, zum selben Dienstperimeter gehören. Weitere Informationen finden Sie unter Dienstperimeter und Dienstperimeter verwalten.

Folgen Sie der Anleitung unter CA-Pool erstellen, um einen CA-Pool zu erstellen. Sie können die Standardwerte für den CA-Pool mit den folgenden erforderlichen Konfigurationseinstellungen akzeptieren:

  • Erstellen Sie den CA-Pool in der gleichen Region, in der Sie Ihre Cloud SQL-Instanz erstellen möchten. Eine Liste der von Cloud SQL unterstützten Regionen finden Sie unter Regionen.
  • Konfigurationsbasierte Zertifikatsanfragen zulassen
  • DNS-Namen in alternativen Antragstellernamen (Subject Alternative Names, SANs) zulassen Wenn Sie die Identitätseinschränkungen des CA-Pools konfigurieren, sollten Sie keine Einschränkungen für das Format der DNS-Namen festlegen, die mit den von Cloud SQL dem SAN hinzugefügten Namen in Konflikt stehen könnten.

Dienstkonto Zugriff auf den CA-Pool gewähren

Damit das Dienstkonto Zertifikate für Ihre Cloud SQL-Instanzen anfordern und signieren kann, gewähren Sie ihm die folgende Rolle für den von Ihnen erstellten CA-Pool:

  • roles/privateca.certificateRequester

gcloud

Führen Sie den Befehl gcloud privateca pools aus, um dem Dienstkonto Zugriff auf den CA-Pool zu gewähren:

gcloud privateca pools add-iam-policy-binding CA_POOL_ID \
  --project=PROJECT_ID \
  --location=REGION \
  --member serviceAccount:SERVICE_ACCOUNT_NAME \
  --role=roles/privateca.certificateRequester

Ersetzen Sie die folgenden Werte:

  • CA_POOL_ID durch die ID des von Ihnen erstellten CA-Pools.
  • PROJECT_ID durch die ID des Projekts, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten.
  • REGION durch die Region, in der Sie den CA-Pool erstellt haben.
  • SERVICE_ACCOUNT_NAME durch den Namen des CA Service Certificate Requester-Dienstkontos, das Sie für das Projekt zuvor erstellt haben.

CA im CA-Pool erstellen

Erstellen Sie mindestens eine Zertifizierungsstelle im von Ihnen erstellten CA-Pool.

Sie können eine Stamm-CA oder eine untergeordnete CA erstellen.

Folgen Sie der Anleitung unter Stamm-CA erstellen, um eine Stamm-CA zu erstellen. Sie können die Standardwerte für die Zertifizierungsstelle akzeptieren. Achten Sie aber darauf, dass Sie die Zertifizierungsstelle im Status Aktiviert erstellen.

Wenn Sie die Größe und den Algorithmus der CA-Schlüssel konfigurieren, können Sie eine beliebige Schlüsselgröße und einen beliebigen Algorithmus auswählen. Cloud SQL generiert seine Serverzertifikate mit EC P-384 (SHA-384)-Ebenenkurvenschlüsseln. Ihre kryptografischen Zertifizierungsstellenschlüssel müssen jedoch nicht übereinstimmen.

Wenn Sie eine untergeordnete Zertifizierungsstelle erstellen, müssen Sie zuerst die Stamm-CA erstellen und konfigurieren.

Cloud SQL-Instanz erstellen

So erstellen Sie eine Cloud SQL-Instanz mit der Option für die vom Kunden verwaltete Zertifizierungsstelle:

Console

In der Vorabversion können Sie mit der Google Cloud Console keine Instanzen erstellen, für die die Option „Kundenverwaltete Zertifizierungsstelle“ verwendet wird.

Verwenden Sie stattdessen den Befehl gcloud beta sql instances create.

gcloud

gcloud beta sql instances create "INSTANCE_NAME" \
  --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

Ersetzen Sie die folgenden Werte:

  • INSTANCE_NAME durch den Namen der Cloud SQL-Instanz, die Sie erstellen möchten.
  • PROJECT_ID durch die ID des Projekts, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten.
  • PROJECT_ID_CAS durch die ID des Projekts, in dem Sie Ihre CA_POOL_ID erstellt haben. Dieses Projekt kann mit dem Projekt übereinstimmen, in dem Sie die Cloud SQL-Instanz erstellen möchten, oder sich davon unterscheiden.
  • REGION durch die Region, in der Sie den CA-Pool erstellt haben. Sie müssen Ihre Instanz in derselben Region wie den CA-Pool erstellen.
  • CA_POOL_ID durch die ID des von Ihnen erstellten CA-Pools.

REST

Wenn Sie eine Cloud SQL-Instanz mit der Option „Kundenverwaltete Zertifizierungsstelle“ erstellen möchten, verwenden Sie die Methode instances.insert und geben Sie die folgenden Eigenschaften an:

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID die ID des Projekts, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten.
  • PROJECT_ID_CAS: die ID des Projekts, in dem Sie CA_POOL_ID erstellt haben. Dieses Projekt kann mit dem Projekt übereinstimmen, in dem Sie die Cloud SQL-Instanz erstellen möchten, oder sich davon unterscheiden.
  • INSTANCE_ID ist der Name der Cloud SQL-Instanz, die Sie erstellen möchten.
  • REGION die Region, in der Sie den CA-Pool erstellt haben. Sie müssen Ihre Instanz in derselben Region wie den CA-Pool erstellen.
  • CA_POOL_ID durch die ID des von Ihnen erstellten CA-Pools.

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

JSON-Text anfordern:

{
  "name":"INSTANCE_ID",
  "region":"REGION",
  "databaseVersion": "DATABASE_VERSION",
  "settings":{
     "ipConfiguration":
      {
         "serverCaPool": "projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID",
         "serverCaMode": "CUSTOMER_MANAGED_CAS_CA"
      }
   }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2025-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID_CSQL/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Fehlerbehebung

Problem Fehlerbehebung

Sie erhalten die folgende Fehlermeldung:

PERMISSION_DENIED: Permission privateca.certificates.create denied on CA_POOL_ID.
Achten Sie darauf, dass Sie dem Dienstkonto, das Sie für Ihr Cloud SQL-Projekt erstellt haben, die Rolle roles/privateca.certificateRequester zugewiesen haben. Weitere Informationen finden Sie unter Dem Dienstkonto Zugriff auf den CA-Pool gewähren.

Sie erhalten die folgende Fehlermeldung:

PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
Konfigurieren Sie VPC Service Controls so, dass das Projekt, in dem der CA-Pool und die Zertifizierungsstelle des CA-Dienstes gehostet werden, und das Projekt, in dem Cloud SQL gehostet wird, zum selben Dienstperimeter gehören. Weitere Informationen finden Sie unter Dienstperimeter und Dienstperimeter verwalten.

Sie erhalten eine der folgenden INVALID ARGUMENT-Fehlermeldungen:

  • Public key algorithm is not permitted by the CaPool's issuance policy.
  • This CaPool's issuance policy does not permit passthrough subjects and/or subject alternative names, and thus can only be used with the REFLECTED_SPIFFE subject mode.
  • Config issuance mode is not permitted by the CaPool's issuance policy.

Prüfen Sie die Konfigurationseinstellungen Ihres CA-Pools und Ihrer Zertifizierungsstelle. Prüfen Sie, ob Sie alle unter CA-Pool erstellen und CA im CA-Pool erstellen aufgeführten Anforderungen erfüllen.

Sie erhalten die folgende Fehlermeldung:

RESOURCE_EXHAUSTED

Dies weist auf Kontingentprobleme mit dem Zertifizierungsstellendienst hin. Prüfen Sie das Kontingent für den CA-Dienst in Ihrem Projekt. Prüfen Sie, ob Sie möglicherweise Anfragen in Ihrem CA-Pool außerhalb von Cloud SQL verwenden. Weitere Informationen finden Sie unter Kontingente und Limits.

Sie erhalten die folgende Fehlermeldung:

NOT FOUND: parent resource CA_POOL_ID not found.
Prüfen Sie die Projekt-ID, den Speicherort und den Namen des CA-Pools, den Sie beim Erstellen der Cloud SQL-Instanz angegeben haben. Achten Sie darauf, dass Sie keine Tippfehler gemacht haben.

Sie erhalten die folgende Fehlermeldung:

FAILED_PRECONDITION: There are no enabled CAs in the CaPool. Please ensure that there is at least one enabled Certificate Authority to issue a certificate.
Achten Sie darauf, dass Sie mindestens eine Zertifizierungsstelle im CA-Pool erstellt haben, den Sie beim Erstellen Ihrer Cloud SQL-Instanz angegeben haben, und dass die Zertifizierungsstelle aktiviert ist.

Sie erhalten die folgende Fehlermeldung:

FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
Sie müssen das Dienstkonto für Ihr Cloud SQL-Projekt erstellt haben. Weitere Informationen finden Sie unter Projektspezifisches Dienstkonto erstellen.

Sie erhalten die folgende Fehlermeldung:

INVALID ARGUMENT: Invalid format for server CA pool.

Achten Sie darauf, dass Sie den CA-Pool im richtigen Format angegeben haben:

projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID

Sie erhalten die folgende Fehlermeldung:

INVALID ARGUMENT: The instance's server CA pool must be in the same region as the instance.

Der CA-Pool muss sich in derselben Region wie die Cloud SQL-Instanz befinden, die Sie erstellen möchten.