A idéia básica
- O host a ser configurado deve ter um certificado instalado (com chave privada).
- Ao configurar o LCM (gerenciador de configuração local) do nó de destino, você deve especificar a impressão digital desse mesmo certificado. Isso informa ao LCM qual certificado local (ou com mais precisão qual chave privada do certificado) será usado para descriptografar a credencial.
- Sua configuração DSC deve apontar para um arquivo que contém apenas o certificado (chave pública) desse mesmo certificado. Isso é feito nos dados de configuração, para que você possa especificar um certificado diferente para cada nó, se pretender usar a mesma configuração para cada um.
- Quando o MOF é gerado, a chave pública é usada pela máquina que gera o MOF para codificar a credencial.
- Quando o LCM no nó de destino recupera a configuração do servidor pull (no formato MOF), ele usa a chave privada do certificado identificado pela impressão digital para descriptografar o objeto de credencial.
Em Alguns Detalhes
A chave pública não pode ser usada para descriptografar e você não está compartilhando a chave privada com a geração de configuração nem as máquinas de distribuição.
Parece que você está considerando o fluxo de trabalho como se houvesse um único certificado em uso para todas as credenciais. Você poderia fazer isso, mas acho que a ideia é que cada nó tenha seu próprio par de chaves.
"Usuários médios", que eu entendo como usuários não administrativos, não podem exportar a chave privada de um certificado (a menos que sejam concedidas as permissões) e, como você não moverá essa chave, há poucas chances de sendo exposto. Se o usuário é administrador, é claro que ele tem acesso.
É muito mais provável que o armazenamento de credenciais de texto sem formatação em uma configuração seja exposto, seja por meio da configuração do powershell não processada ou do MOF gerado. Se não estiver criptografado, você precisará proteger:
- O local do compartilhamento de sistema de arquivos / rede em que a configuração está armazenada
- O fs / compartilhamento em que os MOFs gerados são armazenados
- O fs / share em que você armazena os MOFs no servidor pull
- Verifique se o servidor pull está executando sobre SSL (você deve fazer isso de qualquer maneira)
- Verifique se há autenticação no servidor Pull, caso contrário, qualquer consulta anônima poderá recuperar uma configuração com credenciais expostas.
Acho que as credenciais seguras no DSC são feitas de maneira bastante agradável, mas é um pouco difícil provar isso inicialmente.
O AD PKI facilita isso
Se você estiver usando a Enterprise PKI em seu ambiente do AD, há uma boa chance de que cada máquina esteja configurada para registro automático na CA. Portanto, ele já possui um certificado específico da máquina que se renova. Possui as configurações necessárias para serem usadas para esse fim.
Como estou implementando isso
Como as ferramentas estão tão vazias para o DSC agora, é provável que você crie seu próprio fluxo de trabalho para gerar configurações e escrever scripts para ajudar de qualquer maneira.
No meu caso, tenho scripts separados para gerar o meta MOF do LCM e para gerar a configuração real do nó, portanto, minhas etapas para proteger credenciais são divididas entre os dois.
No script de geração do LCM, na verdade, consultei o CA para o domínio para encontrar o certificado que corresponde ao nome do host da máquina que está sendo configurada. Recupero o certificado (a CA não possui a chave privada, apenas o público) e o salvo em um caminho para uso posterior. O meta MOF é configurado para usar a impressão digital do certificado.
No script de configuração do nó, defino os dados de configuração para usar o arquivo cert (novamente apenas chave pública). Quando o MOF é gerado, as credenciais são criptografadas com esse certificado e só podem ser descriptografadas com a chave privada no nó específico.
Referência
Mencionei minha própria experiência acima, mas este artigo foi uma grande ajuda ao longo do caminho:
https://devblogs.microsoft.com/powershell/want-to-secure-credentials-in-windows-powershell-desired-state- configuração
Eu tive que preencher alguns dos buracos. Uma coisa a observar nos exemplos que mostram é que eles fornecem o Thumprint
na configuração do nó. Isso não é necessário para a configuração do nó; eles estão apenas gerando a configuração e a meta-configuração do LCM ao mesmo tempo e usando os dados de configuração para armazenar a impressão digital para uso lá.
Esse último parágrafo pode ser confuso, mas faz mais sentido no contexto do artigo. Se você não está gerando as duas configurações ao mesmo tempo, o exemplo delas parece estranho. Eu testei; Thumbprint
não é necessário nos dados de configuração para criptografar credenciais. CertificateFile
é necessário, porém, e deve estar nos dados de configuração; portanto, se você não estava usando dados de configuração antes, estará agora.