Gerenciando credenciais de segurança do IAM para vários contêineres de docker

11

No ambiente simples do EC2, o gerenciamento do acesso a outros recursos da AWS é bastante direto com as funções e credenciais do IAM (buscadas automaticamente a partir dos metadados da instância). Ainda mais fácil com o CloudFormation, onde você pode criar funções dinamicamente ao atribuir uma função de aplicativo específica a uma instância.

Se eu quisesse migrar para o Docker e ter um tipo de implantação de M para N, onde tenho M máquinas e N aplicativos em execução, como devo restringir o acesso aos recursos da AWS por aplicativo? Os metadados da instância podem ser acessados ​​por qualquer pessoa no host; portanto, todos os aplicativos poderão ver / modificar dados de todos os outros aplicativos no mesmo ambiente de implantação.

Quais são as práticas recomendadas para fornecer credenciais de segurança aos contêineres de aplicativos em execução nesse ambiente?

Alex B
fonte

Respostas:

5

Existe este projeto: https://github.com/dump247/docker-ec2-metadata

Ele atua como um proxy para o terminal de metadados da instância, retornando uma função específica para o contêiner. Eu não o usei antes, mas parece resolver o caso de uso que você está descrevendo.

pbitty
fonte
1

A aplicação de menos privilégios usando Funções e Grupos de Segurança (mesmo que você não os tenha mencionado) na AWS com EC2 são práticas recomendadas para fornecer um ambiente seguro para seus aplicativos de hospedagem, especialmente ao usar o CloudFormation. No entanto, quando você coloca um ambiente do Docker com vários inquilinos em cima disso, é quando as coisas começam a desmoronar.

A melhor resposta agora para continuar a obter o benefício de Funções ao aplicar o menor privilégio é não usar uma abordagem de vários locatários. Basicamente, use um mapeamento individual entre instância e aplicativo do EC2, mas você ainda pode usar clusters / ASGs. O Docker ainda é uma ferramenta extremamente útil e poderosa que você pode usar para gerenciar e implantar seus aplicativos, mas, por enquanto, as funções se aplicam à instância do EC2 e não ao contêiner. Isso significa usar VMs separadas para cada aplicativo por enquanto.

Se ser multilocatário é mais importante que Funções, a resposta é não usar Funções e distribuir credenciais da AWS para seus aplicativos usando outro método.

Infelizmente, nenhuma dessas soluções é muito desejável e espero que esse ponto problemático seja abordado pela AWS no futuro devido principalmente à crescente popularidade dos contêineres.

JaredHatfield
fonte