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

11

Em um ambiente simples do EC2, gerenciar o acesso a outros recursos da AWS é bastante simples com as credenciais e funções do IAM (obtidas automaticamente dos metadados da instância). Ainda mais fácil com o CloudFormation, onde você pode criar papéis dinamicamente quando atribui uma determinada função de aplicativo a uma instância.

Se eu quisesse migrar para o Docker e ter um tipo de implantação M-para-N, onde tenho M máquinas e N aplicativos em execução, como devo restringir o acesso a recursos do AWS por aplicativo? Os metadados da instância podem ser acessados por qualquer pessoa no host, portanto, eu teria todos os aplicativos capazes de 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 a contêineres de aplicativos em execução nesse ambiente?

    
por Alex B 09.04.2015 / 06:39

2 respostas

5

Existe este projeto: link

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

    
por 22.10.2015 / 23:31
1

A aplicação de privilégios mínimos usando funções e grupos de segurança (embora você não os tenha mencionado) no AWS com o 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 em camadas um ambiente Docker com vários inquilinos, além disso, é quando as coisas começam a desmoronar.

A melhor resposta agora mesmo para continuar obtendo o benefício dos Papéis enquanto se aplica o privilégio mínimo é não usar uma abordagem de multilocação. Basicamente, use um mapeamento um-para-um entre a instância do EC2 e o aplicativo, 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 os Roles aplicam-se à instância do EC2 e não ao contêiner. Isso significa usar VMs separadas para cada aplicativo por enquanto.

Se ser multi-tenant for mais importante que Roles, 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 específico da dor seja abordado pela AWS no futuro devido principalmente à crescente popularidade dos contêineres.

    
por 28.07.2015 / 03:12