Quando cria um cluster de bases de dados, é gerado e configurado um certificado de servidor assinado pela AC da GDC predefinida para utilização pelo servidor de bases de dados. Para assinar e carregar um certificado para a sua base de dados emitido pela sua própria PKI, siga o procedimento abaixo. O emissor predefinido da sua organização tem de estar no modo de certificado BYO para usar esta funcionalidade.
API
Depois de criar o cluster de bases de dados e este estar pronto, guarde o pedido de assinatura de certificado gerado como um ficheiro.
kubectl get certificate.pki.security.gdc.goog \ dbs-pg-cert-request-DBCLUSTER_NAME \ -n USER_PROJECT -o jsonpath='{.status.byoCertStatus.csrStatus.csr}' \ | base64 -d > DBCLUSTER_NAME.csrCrie um ficheiro de extensões de CSR que contenha os SANs do cluster de bases de dados.
export SAN=$(openssl req -in DBCLUSTER_NAME.csr -noout -text | grep 'DNS:' | sed -s 's/^[ ]*//')echo "keyUsage=digitalSignature,keyEncipherment extendedKeyUsage=serverAuth,clientAuth subjectAltName=${SAN:?}" > DBCLUSTER_NAME-csr.extCom o CSR e o ficheiro de extensões, gere o certificado assinado pela sua CA. O exemplo de código usa o
openssl, mas este passo pode ser concluído com outras ferramentas.openssl x509 -req -in DBCLUSTER_NAME.csr -days 365 \ -CA CA_CERTIFICATE_FILE -CAkey CA_PRIVATE_KEY_FILE \ -CAcreateserial -extfile DBCLUSTER_NAME-csr.ext \ -out DBCLUSTER_NAME-signed.crtAtualize o recurso de certificado com o certificado assinado e o certificado da CA.
echo "spec: byoCertificate: certificate: $(base64 -w0 DBCLUSTER_NAME-signed.crt) ca: $(base64 -w0 CA_CERTIFICATE_FILE)" > patch.txtkubectl patch certificate.pki.security.gdc.goog \ dbs-pg-cert-request-DBCLUSTER_NAME \ -n USER_PROJECT --patch-file patch.txt --type='merge'Valide se o certificado atingiu o estado pronto após o carregamento.
kubectl get certificate.pki.security.gdc.goog \ dbs-pg-cert-request-DBCLUSTER_NAME \ -n USER_PROJECT -o json | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'A saída deve ser semelhante à seguinte:
{ "lastTransitionTime": "2024-05-03T08:42:10Z", "message": "Certificate is issued", "observedGeneration": 2, "reason": "Issued", "status": "True", "type": "Ready" }
Substitua o seguinte:
DBCLUSTER_NAME: o nome do cluster de bases de dados.USER_PROJECT: o nome do projeto do utilizador onde o cluster de bases de dados foi criado.CA_CERTIFICATE_FILE: o caminho para o ficheiro de certificado da CA da base de dados.CA_PRIVATE_KEY_FILE: o caminho para o ficheiro de chave privada da CA da base de dados.