Esta página descreve como usar a opção de autoridade certificadora (CA) gerenciada pelo cliente como o modo de CA 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 de ACs e ACs no Certificate Authority Service (serviço de AC). Ao selecionar a opção de AC gerenciada pelo cliente, você configura a hierarquia de AC e gerencia a rotação de certificados de AC 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 sua instância e pelo menos uma AC nesse pool usando o serviço de AC. A AC pode ser raiz ou subordinada. Você também tem a opção de criar uma AC subordinada no serviço de AC e encadear a AC subordinada a uma AC raiz externa. Ao criar a instância, você especifica o pool de AC. Sua solicitação é delegada a uma conta de serviço específica do projeto, que tem permissão para usar o pool de AC. 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, escolha uma das três opções a seguir:
- AC interno por instância
- AC compartilhada gerenciada pelo Google
- AC gerenciado pelo cliente
Escolha a opção de AC gerenciada pelo cliente se você precisar gerenciar sua própria AC por motivos de conformidade. Para mais informações sobre o uso das 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 sua instância, você delega a permissão à conta de serviço para assinar o certificado do servidor com o pool de AC que você criou.
Antes de começar
Antes de usar a opção de CA gerenciada pelo cliente, verifique se você atende aos requisitos a seguir.
Funções exigidas
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 conta 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 por meio de papéis personalizados ou de outros papéis predefinidos.
Para receber as permissões necessárias para criar um pool de ACs e uma AC,
peça ao administrador para conceder a você o
papel do IAM de gerente de operação de serviço da AC(roles/privateca.caManager
)
no serviço da 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 por meio de papéis personalizados ou de outros papéis predefinidos.
Criar uma conta de serviço específica para o projeto
No projeto em que você planeja criar as instâncias do Cloud SQL, crie uma conta de serviço dedicada que processará a solicitação para criar e assinar os certificados do servidor das 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 CA Service.
Criar um pool de CA
Crie um pool de ACs no serviço de AC.
É possível criar um pool de AC no mesmo projeto em que você planeja criar suas 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 de ACs e 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. Aceite os valores padrão do pool de AC com as seguintes configurações:
- Crie o pool de ACs na mesma região em que você planeja criar a instância do Cloud SQL. Para conferir uma lista de regiões com suporte do Cloud SQL, consulte Regiões.
- Permitir solicitações de certificado com base em configuração.
- Permitir nomes DNS em nomes alternativos de assunto (SAN). Ao configurar as restrições de identidade do pool de AC, 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.
Fornecer à conta de serviço acesso ao pool de AC
Para garantir que a conta de serviço tenha as permissões para solicitar e assinar certificados para suas instâncias do Cloud SQL, conceda o seguinte papel à conta de serviço para o pool de AC criado:
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
com o 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
com o nome da conta de serviço Solicitante de certificado de serviço de AC que você criou anteriormente para o projeto.
Criar uma AC no pool de ACs
Crie pelo menos uma AC no pool de ACs 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. Você pode 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 CA, você pode selecionar qualquer tamanho e algoritmo de chave. O Cloud SQL gera certificados do servidor usando chaves de curva elíptica EC P-384 (SHA-384), mas suas chaves criptográficas de AC não precisam corresponder.Se você criar uma CA subordinada, primeiro precisa criar e configurar a CA 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 a partir de uma AC raiz externa, siga as instruções em Criar uma AC subordinada a partir de uma AC raiz externa.
crie 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 do Google Cloud para criar instâncias que usam a opção de AC gerenciada pelo cliente durante a Visualização.
Use o comando 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
Faça as seguintes substituições:
INSTANCE_NAME
pelo nome da instância do Cloud SQL que você quer criar.PROJECT_ID
com o 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 o CA_POOL_ID. Esse projeto pode ser o mesmo 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. É necessário 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
o ID do projeto em que você planeja criar suas instâncias do Cloud SQL.PROJECT_ID_CAS
é o ID do projeto em que você criou o CA_POOL_ID. Esse projeto pode ser o mesmo ou diferente de onde você quer criar a instância do Cloud SQL.INSTANCE_ID
o nome da instância do Cloud SQL que você quer criar.REGION
é a região em que você criou o pool de ACs. É necessário 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 de problemas |
---|---|
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 Fornecer à conta de serviço acesso ao pool de AC.
|
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 o AC do CA Service 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 de ACs e da AC. Verifique se você atende a todos os requisitos listados em Criar um pool de AC e Criar uma AC no pool de AC. |
Você recebe a seguinte mensagem de erro:
|
Isso representa problemas de cota com o serviço de AC. Verifique a cota do CA Service no seu projeto. Verifique se você está usando solicitações no pool de AC 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, o local e o nome do pool de AC especificados 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 de ACs 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. |