Mantenha segredos fora do código e dos logs

Usando a segurança da AWS para desenvolvedores

Rahul Singh

Technical Product Manager

Nem tudo que é sensível é segredo

Três tipos de string

  • Segredo: um estranho pode agir como você
  • Dado sensível: uma pessoa fica exposta
  • Config: nada a ganhar

Três linhas empilhadas comparando um segredo, dados sensíveis e config. Cada linha mostra dois valores de exemplo e o que um estranho poderia fazer com eles, de agir como você até nada a ganhar.

Usando a segurança da AWS para desenvolvedores

Nem tudo que é sensível é segredo

Três tipos de string

  • Segredo: um estranho pode agir como você
  • Dado sensível: uma pessoa fica exposta
  • Config: nada a ganhar

Dois nomes para dados pessoais

  • PII: informação pessoalmente identificável
  • PHI: informação de saúde protegida

Três linhas empilhadas comparando um segredo, dados sensíveis e config. Cada linha mostra dois valores de exemplo e o que um estranho poderia fazer com eles, de agir como você até nada a ganhar.

Usando a segurança da AWS para desenvolvedores

Quatro formas de um segredo vazar

Um segredo em um sistema em execução se ramifica para quatro saídas numeradas: marca 1 para código-fonte e seu histórico, 2 para variáveis de ambiente, 3 para logs da aplicação, 4 para saída de erro e traces. As quatro convergem em uma caixa dizendo legível por alguém.

  1. Código-fonte e seu histórico
  2. Variáveis de ambiente
Usando a segurança da AWS para desenvolvedores

Quatro formas de um segredo vazar

Um segredo em um sistema em execução se ramifica para quatro saídas numeradas: marca 1 para código-fonte e seu histórico, 2 para variáveis de ambiente, 3 para logs da aplicação, 4 para saída de erro e traces. As quatro convergem em uma caixa dizendo legível por alguém.

  1. Código-fonte e seu histórico
  2. Variáveis de ambiente
  3. Logs da aplicação
  4. Saída de erro e traces
Usando a segurança da AWS para desenvolvedores

Criptografado em repouso não é oculto

A escolha que parece segura

  • Criptografado em repouso, sempre
  • Chave AWS KMS, gerenciada pela AWS por padrão

Uma função Lambda com uma variável de ambiente se divide em dois caminhos. Em disco, está criptografada em repouso com uma chave AWS KMS (em verde). Pela API, uma chamada a GetFunctionConfiguration retorna o valor em claro (em vermelho). Ambos os caminhos se encontram numa nota dizendo apenas um caminho está protegido.

Usando a segurança da AWS para desenvolvedores

Criptografado em repouso não é oculto

A escolha que parece segura

  • Criptografado em repouso, sempre
  • Chave AWS KMS, gerenciada pela AWS por padrão

O que GetFunctionConfiguration retorna

  • O valor, em texto claro

Uma resposta de armazenamento para uma pergunta de acesso

Uma função Lambda com uma variável de ambiente se divide em dois caminhos. Em disco, está criptografada em repouso com uma chave AWS KMS (em verde). Pela API, uma chamada a GetFunctionConfiguration retorna o valor em claro (em vermelho). Ambos os caminhos se encontram numa nota dizendo apenas um caminho está protegido.

Usando a segurança da AWS para desenvolvedores

Qual store usar, e por quê

Dois serviços, um trabalho para cada

  • Secrets Manager: feito para segredos
  • Parameter Store: feito para config, e um SecureString é criptografado com uma chave KMS

Um diagrama em espectro. Secrets Manager à esquerda, Systems Manager Parameter Store à direita, e quatro trilhos horizontais entre eles. Um marcador numerado em cada trilho: 1 bem à esquerda, 2 à esquerda do centro, 3 no centro, 4 bem à direita, com os custos nas extremidades do quarto trilho e uma nota dizendo rotação é o decisor.

Usando a segurança da AWS para desenvolvedores

Qual store usar, e por quê

Dois serviços, um trabalho para cada

  • Secrets Manager: feito para segredos
  • Parameter Store: feito para config, e um SecureString é criptografado com uma chave KMS

Quatro fatores decidem

  1. Rotação gerenciada
  2. Compartilhamento entre contas
  3. Versionamento
  4. Custo

Um diagrama em espectro. Secrets Manager à esquerda, Systems Manager Parameter Store à direita, e quatro trilhos horizontais entre eles. Um marcador numerado em cada trilho: 1 bem à esquerda, 2 à esquerda do centro, 3 no centro, 4 bem à direita, com os custos nas extremidades do quarto trilho e uma nota dizendo rotação é o decisor.

Usando a segurança da AWS para desenvolvedores

Leia fresco, faça cache por pouco tempo

Seu processo em execução chama GetSecretValue em um repositório de segredos na marca 1, usando uma role com escopo na marca 2 limitada a um ARN de segredo mais kms:Decrypt, e mantém o valor retornado em um cache em memória na marca 3 antes de chamar um banco de dados ou API parceira.

  1. Chame GetSecretValue na inicialização
  2. Role com escopo para um ARN de segredo + kms:Decrypt
Usando a segurança da AWS para desenvolvedores

Leia fresco, faça cache por pouco tempo

Seu processo em execução chama GetSecretValue em um repositório de segredos na marca 1, usando uma role com escopo na marca 2 limitada a um ARN de segredo mais kms:Decrypt, e mantém o valor retornado em um cache em memória na marca 3 antes de chamar um banco de dados ou API parceira.

  1. Chame GetSecretValue na inicialização
  2. Role com escopo para um ARN de segredo + kms:Decrypt
  3. Faça cache do valor em memória

Se fizer cache para sempre, a rotação te quebra

Usando a segurança da AWS para desenvolvedores

A rotação move o valor sob você

Por que quatro etapas, não uma troca

  • O novo valor é validado antes de alguém usar
  • Uma troca só quebraria todos os clientes de uma vez

Três colunas descendo a página: as etapas de rotação, o rótulo e seu cache. O Secrets Manager executa createSecret, setSecret e testSecret; uma linha tracejada marca quando finishSecret move o rótulo. Acima da linha, AWSCURRENT é o valor antigo e o cache está correto; abaixo, AWSCURRENT é o valor novo e o mesmo cache aparece hachurado em vermelho. Duas correções fecham o diagrama: vida curta do cache e atualização ao falhar a autenticação.

Usando a segurança da AWS para desenvolvedores

A rotação move o valor sob você

Por que quatro etapas, não uma troca

  • O novo valor é validado antes de alguém usar
  • Uma troca só quebraria todos os clientes de uma vez

Quatro etapas, uma passagem

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Três colunas descendo a página: as etapas de rotação, o rótulo e seu cache. O Secrets Manager executa createSecret, setSecret e testSecret; uma linha tracejada marca quando finishSecret move o rótulo. Acima da linha, AWSCURRENT é o valor antigo e o cache está correto; abaixo, AWSCURRENT é o valor novo e o mesmo cache aparece hachurado em vermelho. Duas correções fecham o diagrama: vida curta do cache e atualização ao falhar a autenticação.

Usando a segurança da AWS para desenvolvedores

A rotação move o valor sob você

Por que quatro etapas, não uma troca

  • O novo valor é validado antes de alguém usar
  • Uma troca só quebraria todos os clientes de uma vez

Quatro etapas, uma passagem

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Nada avisa seu cache

  • Vida útil de minutos, depois releia
  • Atualize ao falhar a autenticação

Três colunas descendo a página: as etapas de rotação, o rótulo e seu cache. O Secrets Manager executa createSecret, setSecret e testSecret; uma linha tracejada marca quando finishSecret move o rótulo. Acima da linha, AWSCURRENT é o valor antigo e o cache está correto; abaixo, AWSCURRENT é o valor novo e o mesmo cache aparece hachurado em vermelho. Duas correções fecham o diagrama: vida curta do cache e atualização ao falhar a autenticação.

Usando a segurança da AWS para desenvolvedores

Mascarar, redigir e manter depurável

Uma linha de log bruta contendo um ID de requisição, um número completo de cartão e um token, destacados em vermelho. Abaixo, os mesmos três campos após tratamento: o ID intacto, o cartão mascarado para os últimos quatro dígitos e o token substituído por um marcador de redação, com uma nota dizendo sobra o suficiente para depurar.

Higienize antes de escrever

  • Mask: forma mantida, valor oculto
Usando a segurança da AWS para desenvolvedores

Mascarar, redigir e manter depurável

Uma linha de log bruta contendo um ID de requisição, um número completo de cartão e um token, destacados em vermelho. Abaixo, os mesmos três campos após tratamento: o ID intacto, o cartão mascarado para os últimos quatro dígitos e o token substituído por um marcador de redação, com uma nota dizendo sobra o suficiente para depurar.

Higienize antes de escrever

  • Mask: forma mantida, valor oculto
  • Redact: valor removido, marcador deixado
Usando a segurança da AWS para desenvolvedores

Mascarar, redigir e manter depurável

Uma linha de log bruta contendo um ID de requisição, um número completo de cartão e um token, destacados em vermelho. Abaixo, os mesmos três campos após tratamento: o ID intacto, o cartão mascarado para os últimos quatro dígitos e o token substituído por um marcador de redação, com uma nota dizendo sobra o suficiente para depurar.

Higienize antes de escrever

  • Mask: forma mantida, valor oculto
  • Redact: valor removido, marcador deixado

Quem está de plantão precisa de config; um estranho, do resto

Usando a segurança da AWS para desenvolvedores

Vamos praticar!

Usando a segurança da AWS para desenvolvedores

Preparing Video For Download...