Use uma autoridade de certificação (AC) gerida pelo cliente

Esta página descreve como usar a opção de autoridade de certificação (AC) gerida pelo cliente como o modo de AC do servidor para a sua instância do Cloud SQL.

Vista geral

Com a opção de AC gerida pelo cliente, configura o seu próprio conjunto de ACs e AC no serviço de autoridade de certificação (serviço de AC). Quando seleciona a opção de AC gerida pelo cliente, configura a hierarquia da AC e gere a rotação dos certificados da AC para as suas instâncias do Cloud SQL.

Antes de poder criar uma instância do Cloud SQL com a opção de AC gerida pelo cliente, cria um conjunto de ACs na mesma região que a sua instância e, pelo menos, uma AC nesse conjunto através do serviço de AC. A AC pode ser uma AC raiz ou uma AC subordinada. Também tem a opção de criar uma AC subordinada no serviço de AC e, em seguida, encadear a AC subordinada a uma AC raiz externa. Quando cria a instância, especifica o conjunto de ACs. O seu pedido é delegado a uma conta de serviço específica do projeto, que tem autorização para usar o conjunto de ACs. A conta de serviço pede uma AC ao conjunto e o Cloud SQL usa essa AC para assinar o certificado do servidor para a instância.

Para o modo de AC do servidor da sua instância no Cloud SQL, pode escolher entre as seguintes três opções:

  • AC por instância interna
  • AC partilhada gerida pela Google
  • AC gerida pelo cliente

Pode escolher a opção de AC gerida pelo cliente se precisar de gerir a sua própria AC por motivos de conformidade. Para mais informações sobre a utilização das outras opções, consulte o artigo Autorize com certificados SSL/TLS.

Fluxo de trabalho

Para usar a opção de AC gerida pelo cliente, o fluxo de trabalho é o seguinte:

  1. Crie uma conta de serviço para o seu projeto do Cloud SQL.
  2. Crie um conjunto de ACs no serviço de AC.
  3. Crie uma AC no serviço de AC.
  4. Crie uma instância do Cloud SQL que use a AC. Quando cria a instância, delega a autorização na conta de serviço para assinar o certificado do servidor com o conjunto de AC que criou.

Antes de começar

Antes de usar a opção de AC gerida pelo cliente, certifique-se de que cumpre os seguintes requisitos.

Funções necessárias

Para obter as autorizações de que precisa para criar uma conta de serviço específica do Cloud SQL, peça ao seu administrador para lhe conceder a função do IAM criador da conta de serviço (roles/iam.serviceAccountCreator) em cada projeto individual. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Para receber as autorizações de que precisa para criar um conjunto de ACs e uma AC, peça ao seu administrador para lhe conceder a função IAM de gestor de operações do serviço de AC(roles/privateca.caManager) no serviço de AC. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Crie uma conta de serviço específica do projeto

No projeto onde planeia criar as suas instâncias do Cloud SQL, crie uma conta de serviço dedicada que irá processar o pedido de criação e assinar os certificados do servidor para as suas instâncias do Cloud SQL.

gcloud

Execute o seguinte comando para criar uma conta de serviço para o seu projeto do Cloud SQL:

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

Substitua PROJECT_ID pelo ID do projeto onde planeia criar as suas instâncias do Cloud SQL.

O comando cria uma conta de serviço com o nome service-PROJECT_ID@gcp-sa-cloud-sql.s3ns-system.iam.gserviceaccount.com no projeto. Tome nota do nome da conta de serviço do requisitante de certificados do serviço de AC.

Crie um grupo de ACs

Crie um conjunto de ACs no serviço de AC.

Pode criar um conjunto de ACs no mesmo projeto onde planeia criar as suas instâncias do Cloud SQL ou pode criar o conjunto de ACs num projeto diferente. No entanto, se criar o conjunto de ACs num projeto diferente, os VPC Service Controls podem impedir a criação de instâncias do Cloud SQL, consoante a política da organização. Para corrigir o problema, certifique-se de que o projeto que aloja o conjunto de ACs e a AC, e o projeto que aloja o Cloud SQL pertencem ao mesmo perímetro de serviço. Para mais informações, consulte os artigos Perímetros de serviço e Faça a gestão dos perímetros de serviço.

Para criar um conjunto de CA, siga as instruções em Crie um conjunto de CA. Pode aceitar os valores predefinidos para o conjunto de CA com as seguintes definições de configuração obrigatórias:

  • Crie o conjunto de ACs na mesma região onde planeia criar a instância do Cloud SQL. Para ver uma lista das regiões suportadas pelo Cloud SQL, consulte o artigo Regiões.
  • Permitir pedidos de certificados baseados na configuração.
  • Permita nomes DNS em nomes alternativos de assunto (SAN). Quando configurar as restrições de identidade do conjunto de ACs, não defina restrições no formato para os nomes de DNS que possam entrar em conflito com o que o Cloud SQL possa adicionar ao SAN.

Conceda à conta de serviço acesso ao conjunto de ACs

Para se certificar de que a conta de serviço tem as autorizações para pedir e assinar certificados para as suas instâncias do Cloud SQL, conceda a seguinte função à conta de serviço para o conjunto de ACs que criou:

  • roles/privateca.certificateRequester

gcloud

Execute o comando gcloud privateca pools para conceder à conta de serviço acesso ao conjunto de ACs:

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

Faça as seguintes substituições:

  • CA_POOL_ID com o ID do conjunto de ACs que criou.
  • PROJECT_ID com o ID do projeto onde planeia criar as suas instâncias do Cloud SQL.
  • REGION com a região onde criou o grupo de CA.
  • SERVICE_ACCOUNT_NAME com o nome da conta de serviço do requisitante do certificado do serviço de AC que criou anteriormente para o projeto.

Crie uma CA no grupo de CAs

Crie, pelo menos, uma CA no conjunto de CAs que criou.

Pode criar uma AC raiz ou uma AC subordinada.

Para criar uma AC raiz, siga as instruções em Crie uma AC raiz. Pode aceitar os valores predefinidos para a AC, mas certifique-se de que cria a AC no estado Ativado.

Quando configura o tamanho e o algoritmo da chave da AC, pode selecionar qualquer tamanho e algoritmo da chave. O Cloud SQL gera os respetivos certificados de servidor através de chaves de curva elíptica EC P-384 (SHA-384), mas as chaves criptográficas da AC não têm de corresponder.

Se criar uma CA subordinada, tem de criar e configurar primeiro a CA de raiz.

Crie uma instância do Cloud SQL

Para criar uma instância do Cloud SQL que use a opção de AC gerida pelo cliente, faça o seguinte.

Consola

Não pode usar a Trusted Cloud consola para criar instâncias que usem a opção de AC gerida pelo cliente. Se criar uma instância através da consolaTrusted Cloud , a predefinição é o modo de AC partilhada.

Para selecionar um modo de AC de servidor diferente, use o comando 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

Faça as seguintes substituições:

  • INSTANCE_NAME com o nome da instância do Cloud SQL que quer criar.
  • DATABASE_VERSION com o enum da versão da instância do Cloud SQL que quer criar.
  • PROJECT_ID com o ID do projeto onde planeia criar as suas instâncias do Cloud SQL.
  • PROJECT_ID_CAS com o ID do projeto onde criou o seu CA_POOL_ID. Este projeto pode ser igual ou diferente do local onde quer criar a sua instância do Cloud SQL.
  • REGION com a região onde criou o grupo de CA. Tem de criar a instância na mesma região que o conjunto de ACs.
  • CA_POOL_ID com o ID do conjunto de ACs que criou.

REST

Para criar uma instância do Cloud SQL que use a opção de AC gerida pelo cliente, use o método instances.insert e especifique as seguintes propriedades:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID o ID do projeto onde planeia criar as suas instâncias do Cloud SQL.
  • PROJECT_ID_CAS o ID do projeto onde criou o seu CA_POOL_ID. Este projeto pode ser igual ou diferente do local onde quer criar a sua instância do Cloud SQL.
  • INSTANCE_ID o nome da instância do Cloud SQL que quer criar.
  • REGION a região onde criou o conjunto de ACs. Tem de criar a instância na mesma região que o conjunto de ACs.
  • CA_POOL_ID com o ID do conjunto de ACs que criou.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "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"
      }
   }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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"
}

Resolver problemas

Problema Resolução de problemas

Recebe a seguinte mensagem de erro:

PERMISSION_DENIED: Permission privateca.certificates.create denied on CA_POOL_ID.
Certifique-se de que concedeu a função roles/privateca.certificateRequester à conta de serviço que criou para o seu projeto do Cloud SQL. Para mais informações, consulte o artigo Conceda à conta de serviço acesso ao conjunto de ACs.

Recebe a seguinte mensagem de erro:

PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
Certifique-se de que configura os VPC Service Controls para que o projeto que aloja o conjunto de ACs e a AC do CA Service, e o projeto que aloja o Cloud SQL pertençam ao mesmo perímetro de serviço. Para mais informações, consulte os artigos Perímetros de serviço e Faça a gestão dos perímetros de serviço.

Recebe uma das seguintes mensagens de erro INVALID ARGUMENT:

  • 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.

Verifique as definições de configuração do conjunto de ACs e da AC. Certifique-se de que cumpre todos os requisitos indicados em Crie um grupo de CA e Crie uma CA no grupo de CA.

Recebe a seguinte mensagem de erro:

RESOURCE_EXHAUSTED

Isto representa problemas de quota com o serviço de AC. Verifique a quota do serviço de CA no seu projeto. Verifique se pode estar a usar pedidos no seu conjunto de ACs fora do Cloud SQL. Para mais informações, consulte o artigo Quotas e limites.

Recebe a seguinte mensagem de erro:

NOT FOUND: parent resource CA_POOL_ID not found.
Verifique o ID do projeto, a localização e o nome do conjunto de AC que especificou quando criou a instância do Cloud SQL. Certifique-se de que não cometeu erros ortográficos.

Recebe a seguinte mensagem de erro:

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.
Certifique-se de que criou, pelo menos, uma AC no conjunto de ACs que especificou quando criou a instância do Cloud SQL e que a AC está no estado ativado.

Recebe a seguinte mensagem de erro:

FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
Certifique-se de que criou a conta de serviço para o seu projeto do Cloud SQL. Para mais informações, consulte o artigo Crie uma conta de serviço específica do projeto.

Recebe a seguinte mensagem de erro:

INVALID ARGUMENT: Invalid format for server CA pool.

Certifique-se de que especificou o conjunto de AC no formato correto:

projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID

Recebe a seguinte mensagem de erro:

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

Certifique-se de que o conjunto de ACs está na mesma região que a instância do Cloud SQL que quer criar.