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:
- Crie uma conta de serviço para o seu projeto do Cloud SQL.
- Crie um conjunto 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. 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.
Para criar uma AC subordinada no serviço de AC, siga as instruções em Crie uma AC subordinada.
Para criar uma CA subordinada a partir de uma CA de raiz externa, siga as instruções em Crie uma CA subordinada a partir de uma CA de raiz externa.
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 oenum
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 .
|
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
|
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:
|
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. |