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“:
- Erstellen Sie ein Dienstkonto für Ihr Cloud SQL-Projekt.
- Erstellen Sie einen CA-Pool im CA-Dienst.
- Erstellen Sie eine Zertifizierungsstelle im CA-Dienst.
- 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.
- Wenn Sie die Identitätseinschränkungen für den CA-Pool konfigurieren, müssen Sie IP-Adressen als Format in der SAN zulassen.
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 mithilfe von EC P-256 (SHA 256)-Elliptische-Kurven-Schlüsseln. Ihre kryptografischen CA-Schlüssel müssen jedoch nicht übereinstimmen.Wenn Sie eine untergeordnete Zertifizierungsstelle erstellen, müssen Sie zuerst die Stamm-CA erstellen und konfigurieren.
Folgen Sie der Anleitung unter Untergeordnete CA erstellen, um eine untergeordnete CA in CA Service zu erstellen.
Folgen Sie der Anleitung unter Untergeordnete Zertifizierungsstelle von einer externen Stamm-CA erstellen, um eine untergeordnete Zertifizierungsstelle von einer externen Stamm-CA zu erstellen.
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 .
|
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
|
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:
|
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. |