Não deixe senhas em seu código; Em vez disso, use o Secrets Manager da AWS

O AWS Secrets Manager torna o trabalho com chaves de acesso (como credenciais de banco de dados) mais fácil, armazenando-as remotamente e controlando o acesso delas por meio de permissões de IAM. Isso permite que você gire suavemente as chaves de acesso e busque a mais recente sempre que necessário.
O que o Secrets Manager faz?
Aqui está um exemplo. Digamos que você esteja criando um script de compilação para seus servidores que automatizará o processo de instalação, geralmente para usar o Auto Scaling e a implantação automatizada. Você precisa conectar o WordPress a um servidor MySQL externo.
A solução mais simples seria armazenar a senha do MySQL em texto simples como parte do script de construção. Obviamente, isso não é uma prática recomendada de segurança e não vai muito além de uma única instância operada por um único funcionário. Além disso, se você estiver separando seus ambientes de desenvolvimento e produção, este segredo precisa ser atualizado para cada ambiente, o que é um incômodo.
A melhor solução é o Secrets Manager. Em vez de armazenar a senha do MySQL em texto simples, você a armazena no Secrets Manager e, quando precisar usá-la, executa uma chamada de API para o Secrets Manager, que retorna o segredo. Isso permite que você proteja o acesso aos seus segredos usando funções e permissões do IAM, que é um sistema muito melhor e que você já está usando se sua empresa estiver na AWS.
Além disso, como o Secrets Manager atua como um único armazenamento de dados autorizado, ele torna a rotação de segredos muito mais fácil, o que é uma parte importante da segurança contínua.
Só para ficar claro, o — Gerenciador de segredos não torna trivial automaticamente o manuseio de segredos importantes. No final do dia, você ainda está solicitando informações confidenciais que serão armazenadas no disco ou na memória do seu servidor. Qualquer pessoa que puder acessar o servidor ainda poderá acessar o segredo e você precisará ter boas políticas de permissões de IAM em vigor para bloquear o acesso. No entanto, sem o Secrets Manager, você não seria capaz de controlar esse acesso usando IAM e teria chaves importantes armazenadas em outros lugares, como repositórios Git facilmente acessíveis.
O Secrets Manager pode ser usado para armazenar qualquer tipo de chave, incluindo JSON. No entanto, ele é comumente usado para armazenar credenciais de banco de dados e, como tal, tem integração incorporada para RDS que pode configurar e alternar automaticamente as credenciais para você.
Como usar o gerenciador de segredos
Vá para o console do Secrets Manager e clique em “ Armazenar um novo segredo. ”

Se você estiver configurando um segredo para armazenar credenciais para RDS ou qualquer outro serviço de banco de dados da AWS, poderá selecioná-lo como o tipo, inserir o nome de usuário e a senha e selecionar o banco de dados que você deseja usar com este segredo.

Se estiver armazenando mais alguma coisa, você desejará selecionar “ Outro tipo de segredo. ” Se você estiver armazenando uma série de pares de valores-chave, poderá inseri-los aqui, mas se tiver um esquema JSON mais complexo, poderá inserir tudo como texto simples sob a seção “ Texto simples ” guia.

Clique em “ Avançar, ” dê a ele um nome e quaisquer marcas que você queira adicionar para fins organizacionais.
Na próxima tela, você tem a opção de configurar a rotação automática. Isso chamará uma função Lambda de sua escolha a cada mês ou mais e girará a chave para um novo valor. Provavelmente, você desejará configurar sua função Lambda para liberar os caches de seus aplicativos cliente, portanto, todos devem buscar o novo segredo.

Clique em “ Avançar, ” e clique em “ Armazenar ” para criar o segredo.
Acessar o segredo é muito fácil. Desde que você tenha o AWS CLI instalado e configurado com um usuário ou função que tenha permissão para buscar o segredo, você pode acessá-lo usando secretsmanager get-secrete-value. Isso retorna a saída JSON, então você provavelmente desejará canalizá-la para jq para processamento.
aws secretsmanager get-secret-value --secret-id Confidential_Info | jq

Isso retorna alguns metadados sobre sua string, bem como a própria string no parâmetro SecretString. É codificado em uma única string, mas você pode usar a diretiva jq & # 8216; s fromjson para retornar o valor JSON real da string.
| jq '. SecretString | fromjson '

Se você estiver recuperando segredos com muita frequência (em tempo de execução), poderá usar um cache do lado do cliente para não enviar milhares de solicitações de API a cada segundo. A AWS fornece algumas bibliotecas do lado do cliente para trabalhar com o Secrets Manager, mas você sempre pode implementá-las no idioma de sua escolha.
Se deseja automatizar a criação de segredos, você pode fazer isso com create-secret:
aws secretsmanager criar-segredo --nome < valor > --secret-string < value >
Configurando o acesso IAM
Você deseja configurar políticas IAM personalizadas para conceder acesso de leitura a segredos individuais com base no Amazon Resource Name (ARN). No console de gerenciamento IAM, crie uma nova função (ou edite a instância existente do EC2) e adicione “ Ler ” acesso para o Secrets Manager.

Abaixo, você &’ vai querer adicionar um ARN para restringir o acesso. Insira o ID secreto e clique em “ Adicionar. ”

Crie a nova política, anexe a função à sua instância EC2 se necessário e teste para verificar se você pode acessar apenas o segredo atribuído à política.
Nenhum comentário