Sites

Armazenar Segredos da Aplicação Para um Site

The Secrets tab is an encrypted store for the sensitive configuration values a Node.js app needs, such as API keys, signing secrets and third-party tokens, kept per environment so your production…

A aba Segredos é um armazenamento encriptado para os valores de configuração sensíveis que uma aplicação Node.js necessita, como chaves de API, segredos de assinatura e tokens de terceiros, mantidos por ambiente para que as suas credenciais de produção e as suas credenciais de pré-visualização nunca se misturem.

Onde Vivem os Segredos

Abra Websites, clique no site, abra o menu Advanced na barra de abas do site e escolha Secrets. A aba é intitulada Secrets.

A aba aparece apenas em sites Node.js. Sites WordPress, PHP e estáticos não a mostram, porque a sua configuração vive em ficheiros no disco em vez disso: wp-config.php para WordPress, e seja qual for a que a sua framework lê para uma aplicação PHP simples.

Aba Secrets para um site Node.js em KPanel

Como os Valores São Protegidos

Cada valor é encriptado antes de tocar a base de dados. Nada é armazenado como texto legível, e a vista de lista nunca mostra um valor completo: mostra uma máscara com apenas os últimos quatro caracteres, para que possa distinguir duas chaves semelhantes sem expor nenhuma delas.

Cada linha tem um distintivo Encrypted como um lembrete disso. Ler um valor de volta é uma ação separada e deliberada em vez de algo que aconteça apenas por abrir a página.

Definir, revelar e eliminar um segredo exigem todos a permissão sites:write. Um membro da equipa apenas de leitura pode ver quais as chaves que existem e as suas máscaras, mas não os seus valores.

Os Dois Ambientes

Um controlo segmentado no topo da página alterna entre production e preview. São conjuntos de chaves completamente separados. Definir STRIPE_SECRET_KEY em produção não o cria em pré-visualização, e eliminá-lo da pré-visualização não toca em produção.

Essa separação é o ponto da funcionalidade. Os builds de pré-visualização são ambientes descartáveis que qualquer pessoa com acesso ao repositório pode ativar, portanto devem conter credenciais de teste, não credenciais ativas. Consulte Preview Deploys For Pull Requests para saber como são criados ambientes de pré-visualização.

Adicionar ou Atualizar um Segredo

  1. Escolha o ambiente com o controlo segmentado.
  2. Digite o nome no campo KEY_NAME. O campo força maiúsculas à medida que escreve.
  3. Coloque o valor no segundo campo. É mascarado à medida que escreve.
  4. Clique em Set.

Definir uma chave que já existe substitui-a. Não existe nenhuma ação de edição separada e nenhum passo de confirmação para uma substituição, portanto verifique a aba do ambiente antes de clicar em Set.

Regras de Nome de Chave

Uma chave deve começar com uma letra maiúscula e pode depois conter letras maiúsculas, dígitos e sublinhados, até 128 caracteres. DATABASE_URL, API_KEY_V2 e SENTRY_DSN são todos válidos. Qualquer outra coisa é rejeitada com a mensagem Key must be UPPER_SNAKE_CASE letters/numbers/underscore.

Existem mais dois limites que vale a pena conhecer:

  • Um valor não pode estar vazio. Submeter um valor em branco retorna value required.
  • Um valor não pode exceder 16 KB. Isso é generoso para um token mas não é suficiente para, digamos, uma cadeia de certificados completa, que pertence a um ficheiro em vez de um segredo.

Ler um Valor de Volta

Clique em Copy na linha. KPanel desencripta o valor no servidor e coloca-o diretamente na sua área de transferência, com uma confirmação Value copied to clipboard. O valor não é impresso no ecrã, portanto uma partilha de ecrã ou alguém por trás do seu ombro não o apanha.

Cada revelação é escrita no registo de auditoria do site, junto com quem o fez e qual chave, e aparece no Site Activity Log.

Se precisar de verificar que um valor está correto sem expô-lo, compare a máscara em vez disso. Os últimos quatro caracteres são suficientes para confirmar que tem o token correto, e já estão no ecrã.

Usar um Segredo na Sua Aplicação

Copie o valor para onde quer que a sua aplicação leia a sua configuração no servidor. Para uma aplicação Node.js, isso é normalmente uma variável de ambiente definida pelo seu gestor de processos, ou um ficheiro .env na raiz da aplicação que o seu código carrega no arranque.

Não faça commit desse ficheiro no seu repositório. Adicione .env a .gitignore antes de o criar. Um segredo que foi enviado para um remoto git tem de ser tratado como vazado e rotacionado no fornecedor, porque permanece no histórico mesmo depois de eliminar o ficheiro.

A aba Segredos é o seu registo do que o valor é, mantido encriptado e auditado, em vez de uma nota num gestor de palavras-passe ou uma conversa numa thread. Mantenha-o como a fonte de verdade: quando rotaciona uma chave no fornecedor, atualize-a aqui ao mesmo tempo, para que a próxima pessoa a fazer deploy tenha o valor atual.

Eliminar um Segredo

Clique em Delete na linha. KPanel pede-lhe para confirmar com Delete {KEY}? e avisa que a aplicação perderá acesso a este valor no seu próximo reinício. Não há desfazer e nenhuma cópia mantida, portanto se poderá precisar do valor novamente, copie-o primeiro.

Elimine um segredo quando a credencial subjacente foi revogada no fornecedor, ou quando o código que a utilizava foi removido. Deixar chaves antigas por aí torna mais difícil dizer, mais tarde, quais delas realmente importam.

Rodar uma Credencial com Segurança

A ordem segura é sempre: criar a nova credencial no fornecedor, atualizá-la aqui, fazer deploy, confirmar que a aplicação funciona, depois revogar a credencial antiga no fornecedor.

Fazer isto ao contrário, revogando primeiro, dá-lhe uma janela onde a aplicação em execução está a manter uma credencial morta e cada pedido que a necessita falha. Se a mudança é arriscada, faça uma cópia de segurança primeiro para que possa regressar a um estado conhecido e bom: consulte Taking a Backup.

Resolução de Problemas

A aba Segredos não está no menu. O site não é um site Node.js. Verifique o distintivo de stack junto ao nome do site no topo da página.

O botão Set não faz nada. Ambos os campos são obrigatórios. O botão comunica Key + value required se algum estiver vazio.

A chave foi rejeitada. Letras minúsculas, hífenes, pontos e espaços não são permitidos. api-key e Api_Key falham ambos; API_KEY passa.

Copy não colocou nada na área de transferência. Alguns navegadores bloqueiam escritas na área de transferência numa aba inativa. Clique primeiro na página, depois clique em Copy novamente.

Para Onde Ir a Seguir

Ainda precisa de ajuda?

Envie-nos um email para support@kapsulehost.com ou abra um chat no KPanel.

Abrir KPanel
Armazenar Segredos da Aplicação Para um Site