web-dev-qa-db-fra.com

En quoi la stratégie d'exécution RemoteSigned de PowerShell est-elle différente d'AllSigned?

Je suis encore assez nouveau sur PowerShell, et j'ai récemment lu ceci dans un article de blog sur la création et l'utilisation de scripts PowerShell.

Pour empêcher l'exécution de scripts malveillants, PowerShell applique une stratégie d'exécution. Par défaut, la stratégie d'exécution est définie sur Restreint, ce qui signifie que les scripts PowerShell ne s'exécuteront pas. Vous pouvez déterminer la stratégie d'exécution actuelle à l'aide de l'applet de commande suivante:

Get-ExecutionPolicy

Les politiques d'exécution que vous pouvez utiliser sont:

  • Restreint - Les scripts ne seront pas exécutés.
  • RemoteSigned - Les scripts créés localement s'exécuteront, mais ceux téléchargés à partir d'Internet ne le seront pas (sauf s'ils sont signés numériquement par un éditeur de confiance).
  • AllSigned - Les scripts ne s'exécuteront que s'ils ont été signés par un éditeur de confiance.
  • nrestricted - Les scripts s'exécuteront indépendamment de leur origine et de leur signature.

Vous pouvez définir la stratégie d'exécution de PowerShell à l'aide de l'applet de commande suivante:

Set-ExecutionPolicy <policy name>

Pour moi, la notation " à moins qu'ils ne soient signés numériquement par un éditeur de confiance " dans la description de Remote Signed semble impliquer qu'elle fonctionne de la même manière que AllSigned. Y a-t-il une différence qui me manque quelque part?

28
Iszi

De toute évidence, AllSigned requiert que tous les modules/snapins et scripts soient signés par code. RemoteSigned requiert uniquement la signature des fichiers distants. Que sont les fichiers distants?

La réponse canonique se trouve sur le blog PowerShell: http://blogs.msdn.com/b/powershell/archive/2007/03/07/how-does-the-remotesigned-execution-policy-work.aspx

Mais l'essentiel est: RemoteSigned ne nécessite que la signature de code sur les modules/snapins et les scripts qui sont marqués comme provenant de la zone "Internet" dans la 'Zone Flux de données alternatif de .Identifier, sauf si vous avez activé "Internet Explorer Enhanced Security", auquel cas il inclut également les fichiers marqués "Intranet" et les chemins UNC.

16
Jaykul

La différence étant que RemoteSigned exécutera localement des scripts qui ne sont pas signés, alors qu'AllSigned exige que tous les scripts soient signés quelle que soit leur origine.

8
Steve