Mantendo seus segredos seguros com AWS Secrets Manager

Jamal On the Code
Bemobi
Published in
4 min readFeb 27, 2019

Gerencie seus segredos, auditagem, rotação, fácil de utilizar e barato. Conheça o AWS Secrets Manager.

Ricky_and_Morty.jpg

Sempre que penso em um software que necessita gerenciar senhas, me desafio a melhorar a cada vez mais a forma que gerencio e obtenho minhas senhas. Confesso que manter as senhas seguras, nem sempre foi minha primeira prioridade durante o desenvolvimento de um software. Durante muito tempo foi comum para mim a utilização de um arquivo de propriedades com a senha de banco ou adminstração de alguma plataforma ou até mesmo criar uma planilha onde somente as pessoas do time tem acesso e passar como variável de ambiente em dado momento da entrega… Essas foram só alguma das muitas formas que já provi algum tipo de senha.

Com o tempo, conheci o HashiCorp Vault. O Vault é simples de usar, mas você precisa gerenciar um servidor para executá-lo como serviço. Se você tem uma equipe para fazer isso, incrível! Mas se você como eu não tem, é um risco que as vezes não queremos correr... Caso contrário, toda a sua aplicação, que depende disso, falhará. Em abril, obtive uma opção melhor com o lançamento do AWS Secrets Manager.

Para seguir em frente, presumo que você tenha algum conhecimento da AWS e da CLI que a mesma oferece. Se você não tiver, sugiro começar aqui.

É importante frisarmos que ao ler a palavra segredo, entende-se por qualquer tipo de credencial que seja sensível, como: senhas de banco, tokens de autenticação, senhas de criptografia, etc.

AWS Secrets Manager

Em abril de 2018, a AWS lançou o serviço Secrets Manager para gerenciar, auditar e girar segredos. É um serviço simples da AWS que custa apenas $ 0,40 por segredo por mês, com um adicional de $0,05 por 10.000 chamadas de API. É quase de graça manter suas senhas seguras e o serviço mais barato para manter e gerenciar senhas.

Creating a secret

Avançando no AWS Management Console, selecione o serviço Secrets Manager para criar um novo segredo.

Já dentro do painel do serviço Secrets Manager, selecione “armazenar novo segredo” e em seguida a caixa “Outros tipos de segredos” e configure um novo segredo como abaixo.

Caso queria fazer pela AWS CLI, conseguimos obter o mesmo resultado com o comando a seguir.

$ aws secretsmanager create-secret --name meusupersegredo --description "que segredo?" --secret-string file://minhas_credenciais.json

Dentro do arquivo minhas_credenciais.json, temos um objeto JSON com os campos que representam minhas credenciais. Seguindo nosso exemplo, nosso minhas_credenciais.json deve ter o seguinte conteúdo:

{"apikey":"meu_segredo_incrivel"}

Como você pode ver, podemos adicionar quantas linhas forem necessárias e criar três tipos de segredos. Mas, para o nosso propósito, selecionamos “Outros tipos de segredos” e avançamos clicando no botão “Avançar”. Clicando em “avançar”, apenas definimos o nome do nosso segredo, que será usado posteriormente para recuperá-lo dentro da nossa conta. Vamos nomear nosso segredo como meusupersegredo. Finalmente iremos recuperar nosso segredo programaticamente. O exemplo abaixo se encontra em Golang.

package mainimport (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/secretsmanager"
"fmt"
)
func main() {
sn := "meusupersegredo"
s := session.Must(session.NewSession())
sm := secretsmanager.New(s)
output, err := sm.GetSecretValue(&secretsmanager.GetSecretValueInput{SecretId: &sn})
if err != nil {
panic(err.Error())
}
fmt.Println(*output.SecretString)
}

Esta é uma maneira super simples de obter o nosso segredo e usá-lo, desta forma você precisa configurar suas credenciais da AWS antes de executar o exemplo de código acima.

Fazendo auditoria dos seus segredos

Um dos recursos do Secrets Manager é a auditoria de seus segredos citados pela AWS:

(…) O AWS Secrets Manager permite auditar e monitorar segredos por meio da integração com os serviços de registro em log, monitoramento e notificação da AWS. Por exemplo, depois de habilitar o AWS CloudTrail em uma região da AWS, você pode auditar quando um segredo é armazenado ou alternado visualizando os logs do AWS CloudTrail. De forma semelhante, você pode configurar o Amazon CloudWatch para receber mensagens de e-mail usando o Amazon Simple Notification Service os segredos não são usados por um período. Ou configurar o Amazon CloudWatch Events para receber notificações por push quando o Secrets Manager alterna os segredos.

Conclusão

Mais uma vez, a AWS lançou um serviço incrível para resolver problemas de segurança reais de nosso dia a dia, como você pode ver, é simples, fácil de usar e de baixo custo. Certamente, temos softwares opcionais, como o Vault mas neste ponto, sabemos que os serviços sólidos fornecidos pela AWS podem minimizar os danos na produção durante os momentos de crise. Dê sua opinião e sugestões sobre este artigo, será um prazer conversar sobre.

--

--