Segredos no KMS
O NNumbers Cloud Key Management Service (KMS) funciona como um cofre (Vault) de segredos e pode ser usado, por exemplo, para manter senhas, certificados, etc e pode ser usado em alguns elementos da cloud (e.g. NNumbers Cloud Load Balancer ou Kubernetes como serviço).
Para a criação de um segredo na plataforma NNumbers Cloud é necessário a utilização de APIs disponíveis na plataforma.
Para a utilização de APIs da plataforma é necessário a posse de uma credencial de acesso (e.g. usuário e senha ou credencial de aplicação), e de posse das credenciais é necessário criar um token de acesso (veja Criação de token de acesso à partir de credenciais de aplicação ou Criação de token de acesso à partir de credenciais de usuário).
Os tokens de acesso são válidos apenas por um dia.
Recomendamos que qualquer acesso às APIs sejam feitos por credenciais de aplicação. Nunca distribua suas credenciais de acesso a cloud para aplicativos, principalmente de terceiros ou a terceiros não autorizados.
Para este tutorial utilizaremos o exemplo de um segredo que irá conter um certificado no formato PKCS#12 para ser utilizado pelo serviço balanceador de carga (NNumbers Cloud Load Balancer) com ouvintes do tipo TERMINATED_HTTPS.
Armazenamento do segredo via API
A API de segredos do NNumbers Cloud KMS tem uma propriedade chamada “expiration”. Essa propriedade determina até quando o segredo permanece armazenado/válido. Neste tutorial faremos uso da data do certificado aqui utilizado para extrair a data de expiração. O padrão válido para esta data é o de data e hora da internet, definido pela RFC 3339 — o perfil de ISO 8601 usado em APIs.
EXPIRATION_DATE_TIME=$(date -d "$(openssl x509 -text -noout -in fullchain.pem |grep -i 'Not After :' | awk '{ print $4" "$5" "$6" "$7" "$8 }')" +'%FT%T%:z')
| Nome do Atributo | Tipo | Descrição | Padrã |
|---|---|---|---|
| nome | string | nome do segredo | nenhum |
| expiration | string | É um timestamp UTC em ISO 8601 formato YYYY-MM-DDTHH:MM:SSZ. Se informado, o segredo não estará disponível após esta data/hora | nenhum |
| algorithm | string | Metadado informado pelo usuário ou sistema para propósito informacional. | nenhum |
| bit_length | integer | Metadado informado pelo usuário ou sistema para propósito informacional. Deve ser maior que zero. | nenhum |
| mode | string | Metadado informado pelo usuário ou sistema para propósito informacional. | nenhum |
| payload | string | O dado do segredo para ser armazenado. payload_content_type também deve ser informado se payload for informado. | nenhum |
| payload_content_type | string | O tipo de media para o conteúdo do payload. Para mais informações veja Tipos de Segredo. | nenhum |
| payload_content_encoding | string | O encoding usado para o payload para ser possível incluí-lo na requisição JSON. Correntemente, apenas base64 é suportado. | nenhum |
| secret_type | string | Usado para indicar o tipo de segredo sendo armazenado. Para mais informações veja Tipos de Segredo. | opaque |
Crie um arquivo com o payload.
cat <<EOF> payload.txt
{"name": "meu_site_com_br_tls_secret", "algorithm": "aes", "mode": "cbc", "bit_length": 256, "secret_type": "opaque", "expiration": "${EXPIRATION_DATE_TIME}", "payload": "$(base64 < ${FILE_BASE_NAME}.pfx)", "payload_content_type": "application/octet-stream", "payload_content_encoding": "base64" }
EOF
Execute a chamada para a API utilizando o token de acesso obtido anteriormente.
curl -0 -v -X POST https://cloud.nnumbers.com.br:9311/v1/secrets/ \
-H "Content-Type: application/json" \
-H "X-Auth-Token: ${X_AUTH_TOKEN}" \
-d @payload.txt
Criação de segredos via interface gráfica
No console administrativo, acesso o menu, Secrets em Key Management

Clique no botão Create Secret
|
|
|
Quando o valor | Quando o valor Plain Text (UTF-8) for selecionado no campo Payload Content Type, o campo Payload será exibido para envio do conteúdo. Veja mais em Tipos de Segredo. | Quando o valor Octet Stream for selecionado no campo Payload Content Type, o campo Secret File será exibido para envio de um arquivo (e.g. certificado) que será armazenado no segredo. Veja mais em Tipos de Segredo. |
| Name | Nome do segredo | |
| Secret type | Veja Tipos de Segredo | |
| Expiration Date | Data de expiração | |
| Algorithm | AES, DES, 3DES, TWOFISH, SHA1, RSA, custom | |
| Mode | CBC, CFB, CTR, ECB, OFB, custom | |
| Bit Length | 64, 128, 256, 1024, 2048 | |
Tipos de segredo
Todo segredo no NNumbers Cloud KMS tem um tipo. Tipos de segredo são usados para descrever diferentes tipos de dados de segredo que são armazenados no NNumbers Cloud KMS. O tipo para um segredo particular é listado no atributo de metadado secret_type.
Os tipos de segredo possíveis são:
-
symmetric - O tipo de segredo simétrico é usado para armazenar matrizes de bytes de dados confidenciais, como chaves usadas para criptografia simétrica. O tipo de conteúdo usado com segredos simétricos é “application/octet-stream”. Ao armazenar um segredo simétrico com uma única solicitação POST, os dados devem ser codificados para que possam ser incluídos no corpo JSON da solicitação. Nesse caso, a codificação de conteúdo de base64 pode ser usada.
-
public - O tipo de segredo público é usado para armazenar a chave pública de um par de chaves assimétricas (público/privada). Por exemplo, um segredo público pode ser usado para armazenar a chave pública de um par de chaves RSA. Atualmente, há apenas um formato de arquivo aceito para segredos públicos: uma estrutura SubjectPublicKeyInfo codificada por DER conforme definido por X.509, RFC 5280 que foi codificada em base64 com um cabeçalho e rodapé PEM. Este é o tipo de chave pública gerada pela ferramenta openssl por padrão. O tipo de conteúdo usado com segredos públicos é “application/octet-stream”. Ao armazenar um segredo público com uma única solicitação POST, o conteúdo do arquivo deve ser codificado, pois o JSON não aceita caracteres de nova linha. Nesse caso, o conteúdo do arquivo deve ser codificado em Base64 e a codificação de conteúdo de base64 pode ser usada.
-
private - Usado para armazenar a chave privada de um par de chaves assimétricas (pública/privada).
-
passphrase - Usado para armazenar texto plano de senhas.
-
certificate - Usado para armazenar certificados criptográficos tais como certificados X.509.
-
opaque - Usado para compatibilidade com versões prévias da API sem segredos “tipados”. Novas aplicações são encorajadas a especificar um dos outros tipos de segredo.
Próximos passos
Esta página ajudou?
Reportar um problema nesta páginaNão envie senhas, chaves, tokens ou dados de clientes.


