Introdução
O PowerShell é uma poderosa ferramenta de linha de comando e automação desenvolvida pela Microsoft. Ele oferece muitos recursos avançados para administradores de sistema e desenvolvedores. Uma das características de segurança do PowerShell é o bloqueio de execução de scripts não assinados por padrão, a fim de proteger o sistema contra possíveis ameaças. Neste artigo, discutiremos o que são scripts PowerShell não assinados, por que eles são bloqueados e como permitir a execução deles usando exemplos práticos, incluindo o módulo Railway CLI. Também exploraremos a opção de solução mais segura usando o comando Set-ExecutionPolicy RemoteSigned
com o escopo de usuário.
Conteúdo
1. O que são Scripts PowerShell Não Assinados?
Scripts PowerShell não assinados são scripts que não possuem uma assinatura digital válida para verificar sua autenticidade e integridade. A assinatura digital é uma maneira de verificar se o script não foi alterado desde a sua criação e se provém de uma fonte confiável. O PowerShell bloqueia a execução desses scripts para evitar a execução de código potencialmente não confiável em sistemas.
2. Por que Scripts Não Assinados São Bloqueados?
A decisão de bloquear scripts PowerShell não assinados visa a segurança do sistema. Executar scripts não assinados pode expor o sistema a riscos de malware, roubo de dados e explorações de segurança. A Microsoft implementou essa restrição para evitar que scripts não verificados comprometam a integridade do sistema.
3. Permitindo a Execução de Scripts PowerShell Não Assinados
3.1 Opção 1: Alterar a Política de Execução Global (Não Recomendado)
Uma abordagem simples, mas menos segura, é diminuir a política de execução do PowerShell para permitir a execução de scripts não assinados. No entanto, isso deve ser feito com cuidado, pois pode comprometer a segurança do sistema.
Para fazer isso, abra o PowerShell com privilégios de administrador e execute o seguinte comando:
Set-ExecutionPolicy Unrestricted
3.2 Opção 2: Assinar Digitalmente o Script
A abordagem mais segura é assinar digitalmente o script. Isso envolve usar um certificado digital para provar a autenticidade do script. Vejamos como fazer isso usando o exemplo do módulo Railway CLI:
- Certifique-se de ter o Node.js instalado.
- Instale o Railway CLI globalmente:
npm install -g railway
- Assine o script do Railway CLI com um certificado:
Set-AuthenticodeSignature -FilePath C:\Caminho\Para\SeuScript.ps1 -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My\Thumbprint)
3.3 Opção 3: Usando Set-ExecutionPolicy RemoteSigned
com o Escopo de Usuário (Recomendado)
Uma opção de solução mais equilibrada é usar o comando Set-ExecutionPolicy RemoteSigned
com o escopo de usuário. Isso permite a execução de scripts locais não assinados, mas exige que scripts baixados da Internet sejam assinados digitalmente.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Conclusão
Garantir a segurança ao trabalhar com scripts PowerShell é essencial para proteger sistemas e dados. O bloqueio de scripts não assinados é uma medida de segurança valiosa, mas em certos casos, como ao usar ferramentas como o módulo Railway CLI, pode ser necessário permitir a execução desses scripts. Sempre avalie os riscos e escolha a abordagem que melhor se alinhe à segurança e às necessidades do seu ambiente.
Lembre-se de que a assinatura digital é a maneira mais segura de permitir a execução de scripts não assinados, pois ela verifica a autenticidade e a integridade do código. Usar o Set-ExecutionPolicy RemoteSigned
com o escopo de usuário é uma solução intermediária que equilibra a segurança com a conveniência. Sempre busque as práticas recomendadas de segurança ao trabalhar com scripts PowerShell.
No responses yet