Bloqueio de Scripts PowerShell Não Assinados no Windows e Como Permitir a Execução com Exemplo do Módulo Railway CLI

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:

  1. Certifique-se de ter o Node.js instalado.
  2. Instale o Railway CLI globalmente:
npm install -g railway
  1. 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.

category:

Blog

Tags:

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *