Como posso gerenciar vários administradores com juju?

7

Eu gerencio algumas implantações com juju. No entanto, não sou uma ilha, tenho colegas de trabalho que também querem gerenciar ambientes compartilhados.

Eu sei que posso usar a seguinte estrofe em ~/.juju/environments.yaml para dar às pessoas acesso ao meu ambiente de juju:

authorized-keys: [and then put their ssh IDs in here]

Quais outras práticas recomendadas estão disponíveis para gerenciar vários ambientes com vários administradores de sistema?

    
por Jorge Castro 23.08.2012 / 04:56

1 resposta

3

No momento, o Juju não está otimizado para vários administradores. Dentro Em particular, alguns dos problemas de segurança que são vistos atualmente em Juju se torna mais pronunciada quando trabalha com múltiplos admins. No entanto, com algumas ressalvas, isso ainda pode ser útil opção para um grupo pequeno e confiável de administradores.

Com isso em mente, vamos ver a configuração relevante itens no arquivo ~/.juju/environment.yaml .

O item authorized-keys é usado no bootstrap do ambiente para definir as chaves SSH públicas para o usuário do Ubuntu no nó de bootstrap (máquina 0, na qual o ZooKeeper é executado) e todos os provisionados subseqüentemente nós. Basta listar uma chave pública autorizada por linha. Vai parecer como o seguinte:

authorized-keys: |
    ssh-rsa AAAblahblahZZZZ user@domain
    ecdsa-sha2-nistp256 AAAAfoobarZZZZ= user2@domain

Essa abordagem é preferível ao uso de authorized-keys-path - ou sua padrão ( ~/.ssh/ ) - que é adequado apenas para um administrador, dado que você teria que compartilhar as chaves SSH (não faça isso!). Simplesmente coloque isso é apenas uma limitação de como authorized-keys-path é implementado.

Em seguida, os provedores de nuvem definem suas credenciais de segurança específicas, que Juju então usa. Por exemplo, vamos dar uma olhada no EC2, especificamente AWS. Para a AWS, duas chaves são usadas para determinar o acesso: access-key e secret-key , correspondentes às variáveis de ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY (estes são os padrões, se não especificados no arquivo de configuração). O desafio aqui para um ambiente administrativo múltiplo - ou até mesmo o ambiente administrativo único - é que esta informação é copiada para o ZooKeeper e é facilmente visível no nó ZK /environment . Veja Juju bug # 907094 .

No exemplo da AWS, um certo grau de controle pode ser fornecido em seu teclas de acesso através do uso das Perguntas frequentes sobre o AWS Identity and Access Management (procure por isso), mas atualmente não há mecanismo para fornecer mais controle refinado para um determinado administrador em um ambiente Juju.

Um padrão adicional visto em nosso próprio uso, especialmente em testes, Vale a pena notar: um ambiente Juju ("controle") configurado em um determinado nó para controlar outros ambientes Juju; Basta implantar o charme juju ter isso configurado. É preciso uma opção de configuração environment.yaml a ser usado. Administradores adicionais podem ser mais tarde autorizado como o usuário ubuntu adicionando manualmente suas chaves ~ubuntu/.ssh/authorized-keys .

Isso permite que um único ponto gerencie algumas dessas preocupações, enquanto minimizando a dor de cabeça. Não faz nada para resolver alguns dos preocupações de segurança mencionadas anteriormente - você ainda deve ter uma profunda confiança de seus outros administradores.

O Juju irá ressincronizar environments.yaml para o nó% Z /environment o uso de determinados comandos ( juju add-unit , juju constraints-get , juju constraints-set , juju deploy , juju terminate-machine ). Dentro prática, isso não será muito útil - exceto pelo seu real uso pretendido, de restrições de suporte. No entanto, isso pode ajudar minimizar a necessidade de atualizar arquivos de chaves autorizadas como qualquer máquinas provisionadas depois que a sincronização vai conseguir isso; você então apenas responsável por atualizar as máquinas provisionadas anteriormente.

Enquanto estou neste ponto, vale a pena notar como e onde   ~ubuntu/.ssh/authorized-keys são realmente usados:

  • Todos os comandos de controle do Juju, com duas exceções, usam um túnel SSH para a instância do ZooKeepeer para gerenciar ou pesquisar informações do Juju meio Ambiente. ( juju bootstrap e juju destroy-environment trabalhar diretamente com a API do provedor de nuvem subjacente.) definitivamente precisa manter o authorized-keys na corrente da máquina 0.

  • juju ssh e juju scp permitem trabalhar diretamente com uma máquina e eles também precisam ter authorized-keys atual que você tem que considerar a atualização no caso de vários admin. Estes Por padrão, os comandos usam o usuário ubuntu na máquina de destino.

por Jim Baker 05.09.2012 / 08:05

Tags