Esta página mostra como obter a parte da chave pública de uma versão de chave assimétrica ativada.
Para algoritmos de criptografia pós-quântica (PQC) padronizados pela NIST (Pré-visualização), a obtenção da chave pública só é suportada no formato identificado nas normas PQC da NIST FIPS-203, FIPS-204 e FIPS-205. Para o X-Wing (pré-visualização), a chave pública só pode ser devolvida pelo KMS no formato de bytes não processados especificado pela norma X-Wing. Para todos os outros algoritmos (não PQC), a chave pública é devolvida por predefinição no formato de correio eletrónico otimizado para privacidade (PEM), com suporte também fornecido para o formato de regras de codificação distintas (DER). Para mais informações, consulte as secções da RFC 7468 relativas a Considerações gerais e Codificação textual de informações de chave pública do assunto.
Funções necessárias
Para obter as autorizações de que
precisa para obter uma chave pública,
peça ao seu administrador para lhe conceder a função da IAM
Visualizador de chaves públicas de CryptoKey do Cloud KMS (roles/cloudkms.publicKeyViewer
)
na sua chave ou num recurso principal.
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.
Esta função predefinida contém as autorizações necessárias para obter uma chave pública. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para obter uma chave pública:
-
cloudkms.cryptoKeyVersions.viewPublicKey
-
cloudkms.locations.get
-
cloudkms.locations.list
-
resourcemanager.projects.get
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Obtenha uma chave pública
Pode especificar o formato no qual quer obter a chave pública.
Se o formato for especificado, a chave é devolvida no formato especificado
no campo public_key
da resposta. Caso contrário, é devolvido no campo pem
da resposta.
Para transferir a chave pública de uma versão de chave assimétrica ativada:
Consola
Na Google Cloud consola, aceda à página Gestão de chaves.
Clique no nome do conjunto de chaves que contém a chave assimétrica para a qual quer obter a chave pública.
Clique no nome da chave para a qual quer obter a chave pública.
Na linha correspondente à versão da chave para a qual quer obter a chave pública, clique em Ver mais
.Clique em Obter chave pública.
A chave pública é apresentada no comando. Pode copiar a chave pública para a área de transferência. Para transferir a chave pública, clique em Transferir.
Se não vir a opção Obter chave pública, verifique o seguinte:
- A chave é uma chave assimétrica.
- A versão da chave está ativada.
- Tem a autorização
cloudkms.cryptoKeyVersions.viewPublicKey
.
O nome do ficheiro de uma chave pública transferida a partir da consola tem o seguinte formato: Google Cloud
KEY_RING-KEY_NAME-KEY_VERSION.pub
Cada parte do nome do ficheiro é separada por um hífen. Por exemplo:
ringname-keyname-version.pub
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms keys versions get-public-key KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --public-key-format PUBLIC_KEY_FORMAT \ --output-file OUTPUT_FILE_PATH
Substitua o seguinte:
KEY_VERSION
: o número da versão da chave.KEY_NAME
: o nome da chave.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS do conjunto de chaves.PUBLIC_KEY_FORMAT
: o formato no qual quer exportar a chave pública. Para algoritmos PQC da NIST (pré-visualização), usenist-pqc
e, para o X-Wing (pré-visualização), usexwing-raw-bytes
. Para todas as outras chaves, pode usarpem
,der
ou omitir este parâmetro.OUTPUT_FILE_PATH
: o caminho onde quer guardar o ficheiro de chave pública, por exemplo,public-key.pub
.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Google Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
Obtenha a chave pública chamando o método CryptoKeyVersions.getPublicKey.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION/publicKey?public_key_format=PUBLIC_KEY_FORMAT" \ --request "GET" \ --header "authorization: Bearer TOKEN"
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém o conjunto de chaves.LOCATION
: a localização do Cloud KMS do conjunto de chaves.KEY_RING
: o nome do conjunto de chaves que contém a chave.KEY_NAME
: o nome da chave.KEY_VERSION
: o número da versão da chave.PUBLIC_KEY_FORMAT
: o formato no qual quer exportar a chave pública. Para algoritmos PQC (pré-visualização), useNIST_PQC
. Para todas as outras chaves, pode usarPEM
ou omitir este parâmetro.
Se o formato da chave pública for omitido para uma chave não PQC, o resultado é semelhante ao seguinte:
{ "pem": "-----BEGIN PUBLIC KEY-----\nQ29uZ3JhdHVsYXRpb25zLCB5b3UndmUgZGlzY292ZX JlZCB0aGF0IHRoaXMgaXNuJ3QgYWN0dWFsbHkgYSBwdWJsaWMga2V5ISBIYXZlIGEgbmlj ZSBkYXkgOik=\n-----END PUBLIC KEY-----\n", "algorithm": "ALGORITHM", "pemCrc32c": "2561089887", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }
Para um algoritmo PQC com o formato de chave pública NIST_PQC
, o resultado é semelhante ao seguinte:
{ "publicKeyFormat": "NIST_PQC", "publicKey": { "crc32cChecksum": "1985843562", "data": "kdcOIrFCC5kN8S4i0+R+AoSc9gYIJ9jEQ6zG235ZmCQ=" } "algorithm": "ALGORITHM", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }