Assemblys sollten die minimale Sicherheit deklarieren

     TypeName

AssembliesShouldDeclareMinimumSecurity

CheckId

CA2209

Kategorie

Microsoft.Usage

Unterbrechende Änderung

Breaking

Ursache

Eine Assembly verfügt nicht über Attribute, die die minimalen, optionalen oder abgelehnten Sicherheitsberechtigungen der Assembly angeben.

Regelbeschreibung

Assemblys geben Anforderungen von Sicherheitsberechtigungen an. Administratoren erfahren so, welche Berechtigungen zur Ausführung der Assembly mindestens benötigt werden. Außerdem werden Sicherheitsrisiken begrenzt, die dadurch verursacht werden, dass Anforderungen auf Typ- und Memberebene irrtümlicherweise weggelassen werden. Assemblys sollten mit Anforderungen an Sicherheitsberechtigungen gekennzeichnet werden, indem die folgenden Member der System.Security.Permissions.SecurityAction-Enumeration verwendet werden:

Diese Regel ist erfüllt, wenn eine der Aktionen angegeben wird. Geben Sie RequestMinimum an, um ein Laden der Assembly zu verhindern, wenn dem Aufrufer die angegebenen Berechtigungen nicht erteilt wurden. Verwenden Sie diese Aktion, wenn der Aufrufer für den Zugriff auf in der Assembly definierte Elemente stets die Berechtigung benötigt. Verwenden Sie die RequestOptional-Sicherheitsaktion, um Berechtigungen anzugeben, die verwendet werden, wenn sie erteilt werden. Wenn der Assembly bestimmte Berechtigungen nicht gewährt werden sollten, geben Sie diese mithilfe von RequestRefuse an. Wenn die Assembly Berechtigungen zurückweist, werden ihr diese Berechtigungen nicht erteilt, unabhängig davon, welche Berechtigungen ihr durch die aktuelle Sicherheitsrichtlinie gewährt würden.

Von dieser Regel wird ein Verstoß gemeldet, wenn Sie eine Berechtigungsanforderung falsch oder unvollständig angegeben haben. Wenn Sie Anforderungen angegeben haben, jedoch ein Verstoß gegen diese Regel gemeldet wird, verwenden Sie das Tool zum Anzeigen von Berechtigungen (Permissions View-Tool (Permview.exe)), um die angeforderten Sicherheitsberechtigungen anzuzeigen. Nicht erzwingbare Berechtigungen werden als leerer Berechtigungssatz dargestellt.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, geben Sie mindestens eine der Berechtigungsanforderungen auf Assemblyebene an.

Warnungsausschluss

Schließen Sie keine Warnung dieser Regel aus.

Beispiel

Im folgenden Beispiel wird eine Assembly mit Ausführungsberechtigung, jedoch ohne weitere Berechtigungen dargestellt.

using System;
using System.Security.Permissions;

[assembly: SecurityPermission(
   SecurityAction.RequestMinimum, Execution = true)]
[assembly: PermissionSet(
   SecurityAction.RequestOptional, Name = "Nothing")]
namespace UsageLibrary
{
   public class Test{}

Das folgenden Beispiel zeigt eine Assembly mit dem vollen Satz von Berechtigungsanforderungen.

using System;
using System.Security.Permissions;

[assembly:IsolatedStorageFilePermission(SecurityAction.RequestMinimum, UserQuota=1048576)]
[assembly:SecurityPermission(SecurityAction.RequestRefuse, UnmanagedCode=true)]
[assembly:FileIOPermission(SecurityAction.RequestOptional, Unrestricted=true)]

namespace UsageLibrary
{
   public class Test{}
}

Im folgenden Beispiel wird eine Assembly mit einer nicht erzwingbaren Berechtigungsanforderung veranschaulicht.

using System;
using System.Security.Permissions;

// Without Unrestricted=true or Read or Write, this permission request 
// is incomplete, and cannot be enforced.
[assembly:FileIOPermission(SecurityAction.RequestMinimum)]

namespace UsageLibrary
{
   public class Test{}
}

Permview.exe zeigt diese Berechtigungsanforderung als leeren Berechtigungssatz an.

Ausgabe

minimal permission set:
<PermissionSet class="System.Security.PermissionSet"/>

optional permission set:
  Not specified

refused permission set:
  Not specified

Siehe auch

Referenz

Permissions View-Tool (Permview.exe)
System.Security.Permissions.SecurityAction