Este documento descreve os passos para criar uma autoridade de certificação (CA) de raiz no Google Distributed Cloud (GDC) air-gapped.
Uma CA de raiz, que se encontra no topo da hierarquia da infraestrutura de chave pública (PKI), estabelece a âncora de confiança para a PKI. Para usar certificados numa PKI, os dispositivos, o software e os componentes têm de confiar na CA de raiz. Esta configuração garante a confiança em todos os certificados emitidos pela CA de raiz, permitindo assim a confiança na própria PKI.
Este documento destina-se a públicos-alvo no grupo de operadores de aplicações, como programadores de aplicações ou cientistas de dados, que gerem os ciclos de vida dos certificados nos respetivos projetos. Para mais informações, consulte o artigo Públicos-alvo para a documentação do GDC air-gapped.
Antes de começar
Antes de poder criar uma autoridade de certificação de raiz, tem de pedir as autorizações necessárias e preparar o seu ambiente.
Peça funções de IAM
Para criar, atualizar e eliminar uma autoridade de certificação de raiz, contacte o administrador de IAM da organização para pedir a função Administrador do Certificate Authority Service (certificate-authority-service-admin).
Prepare o seu ambiente
Transfira e instale a CLI gdcloud, se ainda não o tiver feito.
Gere um ficheiro kubeconfig para configurar o acesso
kubectl.
Crie uma autoridade de certificação de raiz
Para criar uma CA de raiz, aplique um recurso personalizado à sua instância do Distributed Cloud air-gapped.
Crie um recurso
CertificateAuthoritye guarde-o como um ficheiro YAML denominadoroot-ca.yaml:apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLEDSubstitua as seguintes variáveis:
Variável Descrição ROOT_CA_NAME O nome da CA de raiz. USER_PROJECT_NAMESPACE O nome do espaço de nomes onde reside o projeto do utilizador. COMMON_NAME O nome comum do certificado da CA. DURATION O tempo de vida útil pedido do certificado da CA. Especifique como uma duração em horas (por exemplo, 1000h). Não são suportadas unidades como dias (d) ou anos (y).SECRET_NAME O nome do segredo do Kubernetes que contém a chave privada e o certificado da CA assinado. As seguintes variáveis são valores opcionais:
Variável Descrição RENEW_BEFORE O tempo de rotação antes de o certificado da CA expirar. ORGANIZATION Organização a usar no certificado. ORGANIZATIONAL_UNITS Unidades organizacionais a usar no certificado. COUNTRIES Países a usar no certificado. LOCALITIES Cidades a usar no certificado. PROVINCES Estados ou províncias a usar no certificado. STREET_ADDRESSES Moradas a usar no certificado. POSTAL_CODES Códigos postais a usar no certificado. EXTENDED_KEY_USAGE A utilização da chave alargada para o certificado. Se for fornecida, os valores permitidos são serverAutheclientAuth.KEY_ALGORITHYM O algoritmo de chave privada usado para este certificado. Os valores permitidos são RSA,Ed25519ouECDSA. Se o tamanho não for fornecido, a predefinição é 256 paraECDSAe 2048 paraRSA. O tamanho da chave é ignorado paraEd25519.KEY_SIZE O tamanho, em bits, da chave privada para este certificado depende de o algoritmo. RSApermite 2048, 3072, 4096 ou 8192 (predefinição 2048).ECDSApermite 256, 384 ou 521 (predefinição 256).Ed25519ignora o tamanho.ACME_ENABLED Se estiver definido como true, a CA é executada no modo ACME e apresenta o URL do servidor ACME. Em seguida, pode usar o cliente e o protocolo ACME para gerir certificados.Aplique o recurso personalizado à sua instância do Distributed Cloud:
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGSubstitua
MANAGEMENT_API_SERVER_KUBECONFIGpelo caminho para o ficheiro kubeconfig do servidor da API de gestão.Valide a prontidão da CA de raiz. Normalmente, a CA demora cerca de 40 minutos a ficar pronta:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))O resultado é semelhante ao seguinte:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
Liste as CAs
Para listar todos os recursos do Certificate Authority Service na sua instância do Distributed Cloud air-gapped, faça o seguinte:
Use o parâmetro certificateauthorities para listar todos os recursos CertificateAuthority:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
O resultado é semelhante ao seguinte:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m