Nesta página, descrevemos como usar a opção de autoridade certificadora (AC) gerenciada pelo cliente como o modo de AC do servidor para sua instância do Cloud SQL.
Visão geral
Com a opção de AC gerenciada pelo cliente, você configura seu próprio pool e AC no Certificate Authority Service (serviço de AC). Ao selecionar a opção de AC gerenciada pelo cliente, você configura a hierarquia de ACs e gerencia a rotação dos certificados de ACs para suas instâncias do Cloud SQL.
Antes de criar uma instância do Cloud SQL com a opção de AC gerenciada pelo cliente, crie um pool de ACs na mesma região da instância e pelo menos uma AC nesse pool usando o serviço de AC. A AC pode ser uma AC raiz ou uma AC subordinada. Você também pode criar uma AC subordinada no serviço de AC e encadeá-la a uma AC raiz externa. Ao criar a instância, você especifica o pool de ACs. Sua solicitação é delegada a uma conta de serviço específica do projeto, que tem permissão para usar o pool de ACs. A conta de serviço solicita uma AC do pool, e o Cloud SQL usa essa AC para assinar o certificado do servidor da instância.
Para o modo de AC do servidor da sua instância no Cloud SQL, é possível escolher entre as três opções a seguir:
- AC interna por instância
- AC compartilhada gerenciada pelo Google
- AC gerenciada pelo cliente
Você pode escolher a opção de AC gerenciada pelo cliente se precisar gerenciar sua própria AC por motivos de compliance. Para mais informações sobre como usar as outras opções, consulte Autorizar com certificados SSL/TLS.
Fluxo de trabalho
Para usar a opção de AC gerenciada pelo cliente, o fluxo de trabalho é o seguinte:
- Crie uma conta de serviço para seu projeto do Cloud SQL.
- Crie um pool de ACs no serviço de AC.
- Crie uma AC no serviço de AC.
- Crie uma instância do Cloud SQL que use a AC. Ao criar a instância, você delega à conta de serviço a permissão para assinar o certificado do servidor com o pool de ACs que criou.
Antes de começar
Antes de usar a opção de AC gerenciada pelo cliente, verifique se você atende aos requisitos a seguir.
Papéis exigidos
Para receber as permissões necessárias para criar uma conta de serviço específica do Cloud SQL,
peça ao administrador para conceder a você o papel do IAM de
Criador de contas de serviço (roles/iam.serviceAccountCreator
)
em cada projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Para receber as permissões necessárias para criar um pool e uma AC,
peça ao administrador para conceder a você o papel do IAM de
Gerente de operações do serviço de AC (roles/privateca.caManager
)
no serviço de AC.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Criar uma conta de serviço específica do projeto
No projeto em que você planeja criar as instâncias do Cloud SQL, crie uma conta de serviço dedicada que vai processar a solicitação para criar e assinar os certificados do servidor para as instâncias do Cloud SQL.
gcloud
Execute o seguinte comando para criar uma conta de serviço para seu projeto do Cloud SQL:
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=PROJECT_ID
Substitua PROJECT_ID
pelo ID do projeto em que você planeja criar as instâncias do Cloud SQL.
O comando cria uma conta de serviço chamada
service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com
no projeto. Anote o nome da conta de serviço do Solicitante de certificado do serviço de AC.
Criar um pool de ACs
Crie um pool de ACs no serviço de AC.
É possível criar um pool de ACs no mesmo projeto em que você planeja criar as instâncias do Cloud SQL ou em um projeto diferente. No entanto, se você criar o pool de ACs em um projeto diferente, o VPC Service Controls poderá impedir a criação de instâncias do Cloud SQL, dependendo da política da organização. Para corrigir o problema, verifique se o projeto que hospeda o pool e a autoridade de certificação (AC) e o projeto que hospeda o Cloud SQL pertencem ao mesmo perímetro de serviço. Para mais informações, consulte Perímetros de serviço e Gerenciar perímetros de serviço.
Para criar um pool de ACs, siga as instruções em Criar um pool de ACs. É possível aceitar os valores padrão para o pool de ACs com as seguintes configurações obrigatórias:
- Crie o pool de ACs na mesma região em que você planeja criar a instância do Cloud SQL. Para uma lista de regiões compatíveis com o Cloud SQL, consulte Regiões.
- Permita solicitações de certificados com base em configuração.
- Permita nomes DNS em nomes alternativos do assunto (SANs). Ao configurar as restrições de identidade do pool de ACs, não defina restrições no formato dos nomes DNS que possam entrar em conflito com o que o Cloud SQL pode adicionar ao SAN.
Conceder à conta de serviço acesso ao pool de ACs
Para garantir que a conta de serviço tenha as permissões necessárias para solicitar e assinar certificados para suas instâncias do Cloud SQL, conceda o seguinte papel à conta de serviço para o pool de ACs que você criou:
roles/privateca.certificateRequester
gcloud
Execute o comando
gcloud privateca pools
para conceder à conta de serviço acesso ao pool 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
pelo ID do pool de ACs que você criou.PROJECT_ID
pelo ID do projeto em que você planeja criar as instâncias do Cloud SQL.REGION
pela região em que você criou o pool de ACs.SERVICE_ACCOUNT_NAME
pelo nome da conta de serviço do Solicitante de certificado do serviço de AC que você criou para o projeto.
Criar uma AC no pool de CAs
Crie pelo menos uma AC no pool que você criou.
É possível criar uma AC raiz ou subordinada.
Para criar uma AC raiz, siga as instruções em Criar uma AC raiz. É possível aceitar os valores padrão para a AC, mas crie a AC no estado Ativado.
Ao configurar o tamanho e o algoritmo da chave da AC, você pode selecionar qualquer tamanho e algoritmo de chave. O Cloud SQL gera certificados de servidor usando chaves de curva elíptica EC P-384 (SHA-384), mas as chaves criptográficas da CA não precisam corresponder.Se você criar uma AC subordinada, primeiro crie e configure a AC raiz.
Para criar uma AC subordinada no serviço de AC, siga as instruções em Criar uma AC subordinada.
Para criar uma AC subordinada de uma AC raiz externa, siga as instruções em Criar uma AC subordinada de uma AC raiz externa.
Criar uma instância do Cloud SQL
Para criar uma instância do Cloud SQL que usa a opção de AC gerenciada pelo cliente, faça o seguinte:
Console
Não é possível usar o console Google Cloud para criar instâncias que usam a opção de AC gerenciada pelo cliente. Se você criar uma instância usando o consoleGoogle Cloud , o padrão será o modo de AC compartilhada.
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
pelo nome da instância do Cloud SQL que você quer criar.DATABASE_VERSION
peloenum
da versão da instância do Cloud SQL que você quer criar. A opção de CA gerenciada pelo cliente é compatível apenas com o MySQL 8.0.30 e versões mais recentes.PROJECT_ID
pelo ID do projeto em que você planeja criar as instâncias do Cloud SQL.PROJECT_ID_CAS
pelo ID do projeto em que você criou seu CA_POOL_ID. Esse projeto pode ser igual ou diferente de onde você quer criar a instância do Cloud SQL.REGION
pela região em que você criou o pool de ACs. É preciso criar a instância na mesma região do pool de ACs.CA_POOL_ID
pelo ID do pool de ACs que você criou.
REST
Para criar uma instância do Cloud SQL que use a opção de AC gerenciada pelo cliente,
use o método instances.insert
e especifique as seguintes propriedades:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
pelo ID do projeto em que você planeja criar as instâncias do Cloud SQL.PROJECT_ID_CAS
pelo ID do projeto em que você criou seu CA_POOL_ID. Esse projeto pode ser igual ou diferente de onde você quer criar a instância do Cloud SQL.INSTANCE_ID
pelo nome da instância do Cloud SQL que você quer criar.REGION
pela região em que você criou o pool de ACs. É preciso criar a instância na mesma região do pool de ACs.CA_POOL_ID
pelo ID do pool de ACs que você criou.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON da solicitação:
{
"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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 | Solução |
---|---|
Você recebe a seguinte mensagem de erro: PERMISSION_DENIED: Permission .
|
Verifique se você concedeu o papel roles/privateca.certificateRequester
à conta de serviço criada para o projeto do Cloud SQL.
Para mais informações, consulte Conceder à conta de serviço acesso ao pool de ACs.
|
Você recebe a seguinte mensagem de erro: PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
|
Configure o VPC Service Controls para que o projeto que hospeda o pool de ACs e a AC do serviço de AC e o projeto que hospeda o Cloud SQL pertençam ao mesmo perímetro de serviço. Para mais informações, consulte Perímetros de serviço e Gerenciar perímetros de serviço. |
Você recebe uma das seguintes mensagens de erro
|
Verifique as configurações do pool e da ACs. Verifique se você atende a todos os requisitos listados em Criar um pool de ACs e Criar uma AC no pool de ACs. |
Você recebe a seguinte mensagem de erro:
|
Isso representa problemas de cota com o serviço de AC. Verifique a cota do serviço de AC no seu projeto. Verifique se você está usando solicitações no pool de ACs fora do Cloud SQL. Para mais informações, consulte Cotas e limites. |
Você 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 pool de ACs especificado ao criar a instância do Cloud SQL. Verifique se não há erros de digitação. |
Você 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.
|
Verifique se você criou pelo menos uma AC no pool especificado ao criar a instância do Cloud SQL e se ela está ativada. |
Você 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.
|
Verifique se você criou a conta de serviço para seu projeto do Cloud SQL. Para mais informações, consulte Criar uma conta de serviço específica do projeto. |
Você recebe a seguinte mensagem de erro: INVALID ARGUMENT: Invalid format for server CA pool.
|
Verifique se você especificou o pool de ACs no formato correto: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID
|
Você recebe a seguinte mensagem de erro: INVALID ARGUMENT: The instance's server CA pool must be in the same region as the instance.
|
Verifique se o pool de ACs está na mesma região da instância do Cloud SQL que você quer criar. |