Kubernetes Secrets Management

Kubernetes Secrets Management
O ambiente Kubernetes, como muitos outros sistemas de computação, requer o uso de dados sensíveis. Segredos relacionados aos dados sensíveis de um grupo (como senhas, chaves SSH e tokens de segurança). Veremos as capacidades dos Kubernetes e outros sistemas de gestão secreta nesta postagem e como criar e gerenciar segredos em seu ambiente de Kubernetes.

O que são segredos em Kubernetes?

Um segredo é uma peça de informação privada, como uma senha, chave ou token. Essas informações também podem ser dispostas em uma imagem de contêiner ou em uma especificação de pod. Se você emprega um segredo, não precisa incluir dados secretos no seu código de aplicativo.

Como os segredos podem ser instalados independentemente das vagens que os usam, pode haver muito menos ameaça de que o segredo (e suas informações) seja descoberto no fluxo de trabalho de gerar, examinar e alterar os pods. Kubernetes e os aplicativos que são executados para o seu cluster também usam segredos e técnicas para tomar maiores precauções, incluindo a escrita de informações confidenciais para armazenamento não volátil.

Tipos de segredos

Kubernetes fornece muitos tipos internos para alguns cenários de uso comum. As validações realizadas e as restrições aplicadas através de Kubernetes diferem entre essas categorias.

Segredos opacos

O tipo secreto padrão é usado quando não há arquivo de configuração secreta. Ao criar um segredo da Kubectl, use o subcomando genérico para especificar este tipo.

Segredos de token da conta de serviço

Este secreto armazena um token com uma conta de serviço. Você precisa definir os kubernetes.IO/conta de serviço.Nome Anotação para um nome de conta de serviço atual durante o uso deste tipo secreto.

Secretes de configuração do Docker

Este tipo é para armazenar um serializado /.Arquivo Dockercfg. É o formato tradicional para configurar a linha de comando do Docker. Primeiro, verifique se o campo dos dados secretos tem um.Chave do dockercfg, e seu valor é o conteúdo do a /.Arquivo Dockercfg codificado no formato Base64 ao utilizar este tipo secreto.

Autenticação básica segredo

Este tipo é usado para armazenar credenciais fundamentais de autenticação. Ao utilizar esse tipo secreto, uma das duas chaves (nome de usuário e senha) deve estar presente no campo de dados do secreto:

Os valores dessas chaves são strings codificados Base64. Você pode usar o StringData para geração secreta se quiser fornecer conteúdo de texto claro.

Segredos de autenticação SSH

Isso é usado para lidar com os dados de autenticação da SSH. A credencial SSH precisa ser aceita como um par de valores-chave SSH-PrivateKe.

Segredos TLS

Kubernetes tem um tipo secreto embutido Kubernetes.io/tls que podem armazenar um certificado e sua chave correspondente, que é comumente usada para TLS. Esta informação é utilizada com o término do TLS. Mas também pode ser empregado com ativos diferentes ou sem demora através de uma carga de trabalho. Ao impor esse tipo de segredo, o TLS.chave e tls.As chaves CRT devem ser fornecidas na área de dados (ou stringdata) da configuração secreta, mesmo que o servidor da API agora não apenas examine mais os valores para cada chave.

Segredos de Bootstrap Token

Esta forma de segredo pode ser criada indo para o bootstrap.Kubernetes.io/token e escolhendo o tipo secreto. Este tipo de segredo visa armazenar tokens. Esses tokens são usados ​​principalmente durante o procedimento de bootstrap de nó. Ele mantém o controle dos tokens de assinatura para configurações conhecidas.

Um token de bootstrap segredos é frequentemente criado sob o espaço para nome do sistema Kube e chamado Bootstrap-Token-Id>, onde o token-id> é uma sequência de seis caracteres que representa o ID do token.

Como criar um segredo em Kubernetes?

Um segredo pode ser usado para manter credenciais do usuário. As vagens usam essas credenciais para acessar um banco de dados. Um ID (nome de usuário) Plus Senha, por exemplo, invente uma string de conexão de banco de dados. Você pode salvar o nome de usuário em./nome de usuário.txt e a senha em./senha.txt no seu PC local.

$ echo -n 'Alex'> ./nome de usuário.TXT
$ echo -n '01trfg02'> ./senha.TXT

A parte abaixo do código mostra como você pode criar um segredo com o comando CREATE.

$ KUBECTL Crie Mbps secretos de secreções genéricas \
--From-file =./nome de usuário.TXT \
--From-file =./senha.TXT

Abaixo, o segredo (chamado Secret-MBPS) é criado com sucesso abaixo.

Como mencionado acima, o parâmetro -n nos comandos garante que não haja um caractere de nova linha extra no final do conteúdo nos arquivos de saída. Isso é significativo porque o caractere de nova linha extra é codificado quando Kubectl lê um arquivo e o converte em uma string base64.

Como editar um segredo?

O comando a seguir é usado para fazer alterações em um segredo existente:

$ kubectl editar segredos secretos-mbps

Isso abrirá o editor com a configuração padrão. Isso permitirá que você ajuste os valores secretos codificados do campo de dados: os valores secretos codificados:

Como verificar se existe um segredo?

Para verificar um segredo, digite o comando Get Secret.

$ kubectl Get Secrets

A captura de tela em anexo mostra os detalhes do segredo especificado.

Como decodificar o segredo?

Para decodificar o segredo, você pode usar o comando abaixo mencionado.

$ KUBECTL Get Secret -Mbps -o JsonPath = '.dados'

Abaixo você pode ver a captura de tela de saída.

Agora você pode decodificar os dados de senha da seguinte forma:

$ echo 'mwyyzdflmmu2n2rm' | base64 -Decodo

Aqui está o resultado.

Você pode usar o comando (como pode ver abaixo) se quiser não deseja armazenar um valor codificado secreto no histórico do seu shell:

$ KUBECTL Get Secret -Mbps -o JsonPath = '.dados.Senha '| base64 -Decode

Este comando produzirá os mesmos resultados que o anterior.

Como excluir o segredo?

Para excluir o segredo, você pode usar o comando delete e mencionar o nome preciso do segredo.

$ KUBECTL Exclua Mbps secretos secretos

Aqui você pode observar que o segredo especificado é excluído com sucesso.

Conclusão:

Segredos são identidades digitais que permitem aos usuários verificar suas identidades e acessar contas, aplicativos e serviços privilegiados, autenticando suas identidades. Mencionamos o gerenciamento de segredos de Kubernetes em detalhes neste artigo.