Freigeben über


Sicherheitsrahmen: Autorisierung | Risikominderung

Produkt/Dienst Artikel
Computer-Vertrauensstellungsgrenze
Web Application
Datenbank
IoT-Cloudgateway
Azure Event Hub
Azure DocumentDB
Azure-Vertrauensstellungsgrenze
Service Fabric-Vertrauensstellungsgrenze
Dynamics CRM
Dynamics CRM-Portal
Azure Storage (in englischer Sprache)
Mobiler Client
WCF
Web-API
IoT-Gerät
Zwischengeschaltetes IoT-Gateway

Stellen Sie sicher, dass geeignete ACLs konfiguriert sind, um nicht autorisierten Zugriff auf Daten auf dem Gerät zu beschränken.

Titel Details
Komponente Computer-Vertrauensstellungsgrenze
SDL-Phase Bereitstellung
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Stellen Sie sicher, dass geeignete ACLs konfiguriert sind, um nicht autorisierten Zugriff auf Daten auf dem Gerät zu beschränken.

Stellen Sie sicher, dass sensible benutzerspezifische Anwendungsinhalte im Benutzerprofilverzeichnis gespeichert werden.

Titel Details
Komponente Computer-Vertrauensstellungsgrenze
SDL-Phase Bereitstellung
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Stellen Sie sicher, dass sensible benutzerspezifische Anwendungsinhalte im Benutzerprofilverzeichnis gespeichert werden. Dadurch wird verhindert, dass mehrere Benutzer eines Computers auf Daten der anderen Benutzer zugreifen.

Stellen Sie sicher, dass die bereitgestellten Anwendungen mit geringstmöglichen Berechtigungen ausgeführt werden.

Titel Details
Komponente Computer-Vertrauensstellungsgrenze
SDL-Phase Bereitstellung
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Stellen Sie sicher, dass die bereitgestellte Anwendung mit geringstmöglichen Berechtigungen ausgeführt wird.

Erzwingen Sie bei der Verarbeitung von Geschäftslogikflows die Einhaltung einer sequenziellen Reihenfolge.

Titel Details
Komponente Webanwendung.
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Um sicherzustellen, dass diese Phase von einem echten Benutzer durchlaufen wurde, erzwingen Sie, dass Geschäftslogikflows von der Anwendung ausschließlich in sequenzieller Reihenfolge verarbeitet werden. Dabei müssen alle Schritte in für Menschen realistischer Zeit und in der korrekten Reihenfolge verarbeitet werden. Außerdem dürfen keine Schritte übersprungen, keine Schritte eines anderen Benutzers verarbeitet und Transaktionen nicht zu schnell übermittelt werden.

Implementieren Sie einen Ratenbegrenzungsmechanismus, um Enumerationen zu verhindern.

Titel Details
Komponente Webanwendung.
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Stellen Sie sicher, dass sensible Bezeichner nach dem Zufallsprinzip festgelegt werden. Implementieren Sie auf anonymen Seiten ein CAPTCHA-Steuerelement. Stellen Sie sicher, dass Fehler und Ausnahmen keine spezifischen Daten offenlegen.

Stellen Sie sicher, dass eine geeignete Autorisierung eingerichtet ist und dass das Prinzip der geringstmöglichen Berechtigungen angewendet wird.

Titel Details
Komponente Webanwendung.
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte

Bei diesem Prinzip werden einem Benutzerkonto nur die Berechtigungen gewährt, die für die Arbeit des jeweiligen Benutzers erforderlich sind. Ein Sicherungsbenutzer muss beispielsweise keine Software installieren und ist daher nur zum Ausführen von Sicherungen und sicherungsbezogenen Anwendungen berechtigt. Andere Berechtigungen (beispielsweise zum Installieren neuer Software) werden blockiert. Das Prinzip gilt auch für einen PC-Benutzer, der in der Regel unter einem normalen Benutzerkonto arbeitet und nur dann ein privilegiertes, kennwortgeschütztes Konto (Superuser) öffnet, wenn es sich nicht vermeiden lässt.

Dieses Prinzip lässt sich auch auf Ihre Webanwendungen übertragen. Anstatt sich ausschließlich auf rollenbasierte Authentifizierungsmethoden mit Sitzungen zu verlassen, empfiehlt es sich, Benutzern mithilfe eines datenbankbasierten Authentifizierungssystems Berechtigungen zuzuweisen. Wir verwenden zwar weiterhin Sitzungen, um zu ermitteln, ob der Benutzer ordnungsgemäß angemeldet wurde, aber anstatt diesem Benutzer eine bestimmte Rolle zuzuweisen, weisen wir ihm Berechtigungen zu, um zu überprüfen, zu welchen Aktionen er im System berechtigt ist. Ein großer Vorteil dieser Methode: Wenn einem Benutzer weniger Berechtigungen zugewiesen werden müssen, werden die Änderungen umgehend angewendet, da die Zuweisung nicht von der Sitzung abhängt, die andernfalls zuerst ablaufen muss.

Geschäftslogik und Entscheidungen hinsichtlich der Ressourcenzugriffsautorisierung dürfen nicht auf eingehenden Anforderungsparametern basieren.

Titel Details
Komponente Webanwendung.
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Wenn Sie überprüfen, ob ein Benutzer nur bestimmte Daten betrachten darf, müssen die Zugriffsbeschränkungen serverseitig verarbeitet werden. Die Benutzer-ID muss bei der Anmeldung in einer Sitzungsvariablen gespeichert und zum Abrufen von Benutzerdaten aus der Datenbank verwendet werden.

Beispiel

SELECT data 
FROM personaldata 
WHERE userID=:id < - session var 

Nun kann ein potenzieller Angreifer den Anwendungsbetrieb nicht mehr manipulieren und verändern, da die ID zum Abrufen der Daten serverseitig behandelt wird.

Stellen Sie sicher, dass Inhalte und Ressourcen nicht aufzählbar sind und dass auf sie nicht mittels Forceful Browsing zugegriffen werden kann.

Titel Details
Komponente Webanwendung.
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte

Sensible statische Dateien und Konfigurationsdateien dürfen nicht in Webroot gespeichert werden. Inhalte, die nicht öffentlich sein müssen, müssen entweder mit einer geeigneten Zugriffssteuerung versehen oder entfernt werden.

Forceful Browsing wird zudem meist mit Brute-Force-Techniken kombiniert, um Informationen zu sammeln, indem versucht wird, auf möglichst viele URLs zuzugreifen und Verzeichnisse und Dateien auf einem Server aufzuzählen. Angreifer können nach sämtlichen Varianten von üblicherweise vorhandenen Dateien suchen. Bei einer Suche nach einer Kennwortdatei wird also beispielsweise nach Dateien wie „psswd.txt“, „password.htm“, „password.dat“ und anderen Varianten gesucht.

Als Gegenmaßnahme müssen Funktionen zur Erkennung von Brute-Force-Angriffsversuchen einbezogen werden.

Stellen Sie sicher, dass beim Herstellen einer Verbindung mit dem Datenbankserver Konten mit geringstmöglichen Berechtigungen verwendet werden.

Titel Details
Komponente Datenbank
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Berechtigungshierarchie (Datenbank-Engine), Sicherungsfähige Elemente
Schritte Beim Herstellen einer Verbindung mit der Datenbank müssen Konten mit möglichst geringen Berechtigungen verwendet werden. Die Anwendungsanmeldung muss in der Datenbank eingeschränkt sein und darf nur bestimmte gespeicherte Prozeduren ausführen. Die Anmeldung der Anwendung darf nicht über direkten Tabellenzugriff verfügen.

Implementieren Sie Sicherheit auf Zeilenebene (Row Level Security, RLS), um zu verhindern, dass Mandanten auf Daten anderer Mandanten zugreifen.

Titel Details
Komponente Datenbank
SDL-Phase Entwickeln
Zutreffende Technologien SQL Azure, lokal
Attribute SQL-Version: V12, SQL-Version: MsSQL2016
Referenzen Sicherheit auf Zeilenebene
Schritte

Bei der Sicherheit auf Zeilenebene können Kunden den Zugriff auf Zeilen in einer Datenbanktabelle basierend auf den Merkmalen des Benutzers steuern, der eine Abfrage ausführt (z.B. Gruppenmitgliedschaft oder Ausführungskontext).

Eine zeilenbasierte Sicherheit vereinfacht den Entwurf und die Sicherheitscodierung in Ihrer Anwendung. Mit RLS können Sie den Zugriff auf Datenzeilen einschränken. So können Sie beispielsweise sicherstellen, dass Mitarbeiter nur auf Datenzeilen zugreifen können, die für ihre Abteilung relevant sind, oder den Datenzugriff von Kunden auf Daten beschränken, die für das Unternehmen des jeweiligen Kunden relevant sind.

Die Datenbeschränkungszugriffslogik befindet sich auf der Datenbankebene, statt fern der Daten auf einer anderen Anwendungsebene. Das Datenbanksystem wendet die Zugriffsbeschränkungen bei jedem Zugriffsversuch auf Daten aus einer beliebigen Ebene an. Dadurch wird das Sicherheitssystem kompakter, zuverlässiger und robuster.

Beachten Sie, dass RLS als vorgefertigtes Datenbankfeature nur für SQL Server-Versionen ab 2016, Azure SQL-Datenbank und verwaltete SQL-Instanzen verfügbar ist. Wenn das vorgefertigte RLS-Feature nicht implementiert wird, muss der Datenzugriff mithilfe von Sichten und Prozeduren beschränkt werden.

Die Rolle „SysAdmin“ darf nur gültige, erforderliche Benutzer enthalten.

Titel Details
Komponente Datenbank
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Berechtigungshierarchie (Datenbank-Engine), Sicherungsfähige Elemente
Schritte Die feste Serverrolle „SysAdmin“ darf nur sehr wenige Mitglieder und niemals Konten enthalten, die von Anwendungen verwendet werden. Überprüfen Sie die Benutzerliste der Rolle, und entfernen Sie alle nicht benötigten Konten.

Verwenden Sie beim Herstellen einer Verbindung mit dem Cloudgateway Token mit geringstmöglichen Berechtigungen.

Titel Details
Komponente IoT-Cloudgateway
SDL-Phase Bereitstellung
Zutreffende Technologien Allgemein
Attribute Wahl des Gateways: Azure IoT Hub
Referenzen Entwicklungsleitfaden für Azure IoT Hub
Schritte Gewähren Sie verschiedenen Komponenten, die eine Verbindung mit dem Cloudgateway (IoT Hub) herstellen, möglichst wenige Berechtigungen. Ein typisches Beispiel: Die Komponente für die Geräteverwaltung/-bereitstellung verwendet „RegistryRead/Write“, der Ereignisprozessor (ASA) verwendet Service Connect. Einzelne Geräte stellen eine Verbindung unter Verwendung von Geräteanmeldeinformationen her.

Verwenden Sie einen auf Sendeberechtigungen beschränkten SAS-Schlüssel, um Gerätetoken zu generieren.

Titel Details
Komponente Azure Event Hub
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Event Hubs-Authentifizierung und -Sicherheitsmodell (Übersicht)
Schritte Ein SAS-Schlüssel dient zum Generieren individueller Gerätetoken. Verwenden Sie einen auf Sendeberechtigungen beschränkten SAS-Schlüssel, wenn Sie das Gerätetoken für einen bestimmten Herausgeber generieren.

Verwenden Sie keine Zugriffstoken, die direkten Zugriff auf den Event Hub ermöglichen.

Titel Details
Komponente Azure Event Hub
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Event Hubs-Authentifizierung und -Sicherheitsmodell (Übersicht)
Schritte Das Gerät darf kein Token erhalten, das direkten Zugriff auf den Event Hub gewährt. Verwenden Sie für das Gerät stattdessen ein Token mit geringstmöglichen Berechtigungen, das nur einem Herausgeber Zugriff gewährt. Dadurch lassen sich gefährliche oder kompromittierte Geräte leichter identifizieren und sperren.

Verwenden Sie beim Herstellen einer Verbindung mit dem Event Hub SAS-Schlüssel, die über die erforderlichen Mindestberechtigungen verfügen.

Titel Details
Komponente Azure Event Hub
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Event Hubs-Authentifizierung und -Sicherheitsmodell (Übersicht)
Schritte Gewähren Sie verschiedenen Back-End-Anwendungen, die eine Verbindung mit dem Event Hub herstellen, möglichst wenige Berechtigungen. Generieren Sie für jede Back-End-Anwendung einen separaten SAS-Schlüssel, und gewähren Sie den Anwendungen nur die erforderlichen Sende-, Empfangs- oder Verwaltungsberechtigungen.

Verwenden Sie nach Möglichkeit Ressourcentoken, um eine Verbindung mit Azure Cosmos DB herzustellen.

Titel Details
Komponente Azure DocumentDB
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Ein Ressourcentoken ist einer Azure Cosmos DB-Berechtigungsressource zugeordnet und erfasst die Beziehung zwischen dem Benutzer einer Datenbank und der Berechtigung, über die der Benutzer für eine bestimmte Azure Cosmos DB-Anwendungsressource (z. B. Sammlung, Dokument) verfügt. Verwenden Sie für den Zugriff auf Azure Cosmos DB immer ein Ressourcentoken, falls die Verarbeitung von Hauptschlüsseln oder Schlüsseln mit Leseberechtigung nicht bedenkenlos dem Client überlassen werden kann (z. B. im Falle einer Endbenutzeranwendung wie einem mobilen Client oder einem Desktopclient). Verwenden Sie Hauptschlüssel oder Schlüssel mit Leseberechtigung von Back-End-Anwendungen, die diese Schlüssel sicher speichern können.

Ermöglichen Sie mithilfe von Azure RBAC eine differenzierte Zugriffsverwaltung für das Azure-Abonnement.

Titel Details
Komponente Azure-Vertrauensstellungsgrenze
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Zuweisen von Azure-Rollen zum Verwalten des Zugriffs auf Ihre Azure-Abonnementressourcen
Schritte Die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) in Azure ermöglicht eine präzise Zugriffsverwaltung für Azure. Mit Azure RBAC können Sie den Benutzern nur die Zugriffsrechte gewähren, die diese zum Ausführen ihrer Aufgaben benötigen.

Beschränken Sie mithilfe von Service Fabric RBAC den Clientzugriff auf Clustervorgänge.

Titel Details
Komponente Service Fabric-Vertrauensstellungsgrenze
SDL-Phase Bereitstellung
Zutreffende Technologien Allgemein
Attribute Umgebung: Azure
Referenzen Rollenbasierte Zugriffssteuerung in Service Fabric für Service Fabric-Clients
Schritte

Azure Service Fabric unterstützt zwei unterschiedliche Zugriffsberechtigungstypen für Clients, die mit einem Service Fabric-Cluster verbunden sind: Administrator und Benutzer. Zugriffssteuerung ermöglicht es dem Clusteradministrator, den Zugriff auf bestimmte Clustervorgänge für verschiedene Gruppen von Benutzern einzuschränken, wodurch die Sicherheit des Clusters erhöht wird.

Administratoren haben vollständigen Zugriff auf Verwaltungsfunktionen (einschließlich Lese-/Schreibzugriff). Benutzer haben standardmäßig nur Lesezugriff auf Verwaltungsfunktionen (z. B. Abfragefunktionen) sowie die Möglichkeit, Anwendungen und Dienste aufzulösen.

Sie geben die beiden Clientrollen (Administrator und Client) zum Zeitpunkt der Clustererstellung an, indem Sie für jede separate Zertifikate bereitstellen.

Führen Sie die Sicherheitsmodellierung durch, und verwenden Sie bei Bedarf die Sicherheit auf Feldebene.

Titel Details
Komponente Dynamics CRM
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Führen Sie die Sicherheitsmodellierung durch, und verwenden Sie bei Bedarf die Sicherheit auf Feldebene.

Führen Sie die Sicherheitsmodellierung für Portalkonten durch, und bedenken Sie dabei, dass sich das Sicherheitsmodell für das Portal vom restlichen CRM unterscheidet.

Titel Details
Komponente Dynamics CRM-Portal
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Führen Sie die Sicherheitsmodellierung für Portalkonten durch, und bedenken Sie dabei, dass sich das Sicherheitsmodell für das Portal vom restlichen CRM unterscheidet.

Gewähren Sie differenzierte Berechtigungen für eine Reihe von Entitäten in Azure Table Storage.

Titel Details
Komponente Azure Storage
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute StorageType: Tabelle
Referenzen Delegieren des Zugriffs auf Objekte in Ihrem Konto mithilfe von SAS und gespeicherter Zugriffsrichtlinien
Schritte In bestimmten Geschäftsszenarien müssen in Azure Table Storage unter Umständen sensible Daten für unterschiedliche Parteien gespeichert werden. Ein Beispiel wären etwa sensible Daten für verschiedene Länder/Regionen. In solchen Fällen können SAS-Signaturen unter Angabe der Partition und Zeilenschlüsselbereiche erstellt werden, sodass ein Benutzer auf spezifische Daten für ein bestimmtes Land bzw. eine bestimmte Region zugreifen kann.

Aktivieren Sie mithilfe von Azure Resource Manager die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) für das Azure-Speicherkonto.

Titel Details
Komponente Azure Storage
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen Sichern des Speicherkontos mit der rollenbasierten Zugriffssteuerung in Azure (Azure RBAC)
Schritte

Bei der Erstellung eines neuen Speicherkontos haben Sie die Wahl zwischen dem klassischen Bereitstellungsmodell und dem Azure Resource Manager-Bereitstellungsmodell. Das klassische Modell der Ressourcenerstellen in Azure lässt nur den uneingeschränkten Zugriff auf das Abonnement und damit auf das Speicherkonto zu.

Beim Azure Resource Manager-Modell platzieren Sie das Speicherkonto in einer Ressourcengruppe und steuern den Zugriff auf die Verwaltungsebene dieses spezifischen Speicherkontos mithilfe von Microsoft Entra ID. Beispielsweise können Sie bestimmten Benutzern den Zugriff auf die Speicherkontoschlüssel gewähren, während andere Benutzer Informationen über das Speicherkonto anzeigen, jedoch nicht auf die Speicherkontoschlüssel zugreifen können.

Implementieren Sie eine implizite Jailbreak- oder Rooting-Erkennung.

Titel Details
Komponente Mobiler Client
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte

Die Anwendung muss ihre eigenen Konfigurations- und Benutzerdaten für den Fall schützen, dass das Smartphone mittels Jailbreak oder Rooting manipuliert wird. Rooting/Jailbreak impliziert einen nicht autorisierten Zugriff und wird von normalen Benutzern nicht auf dem eigenen Smartphone durchgeführt. Die Anwendung muss daher beim Anwendungsstart mithilfe einer impliziten Erkennungslogik ermitteln, ob das Smartphone mittels Rooting manipuliert wurde.

Die Erkennungslogik kann einfach auf Dateien zugreifen, auf die normalerweise nur Root-Benutzer Zugriff haben. Beispielsweise:

  • /system/app/Superuser.apk
  • /sbin/su
  • /system/bin/su
  • /system/xbin/su
  • /data/local/xbin/su
  • /data/local/bin/su
  • /system/sd/xbin/su
  • /system/bin/failsafe/su
  • /data/local/su

Falls die Anwendung auf eine dieser Dateien zugreifen kann, wird die Anwendung als Root-Benutzer ausgeführt.

Schwache Klassenreferenz in WCF

Titel Details
Komponente WCF
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein, .NET Framework 3
Attribute
Referenzen MSDN, Fortify Kingdom
Schritte

Das System verwendet eine schwache Klassenreferenz, wodurch Angreifer unter Umständen nicht autorisierten Code ausführen können. Das Programm verweist auf eine benutzerdefinierte Klasse, die nicht eindeutig identifiziert wird. Wenn .NET diese schwach identifizierte Klasse lädt, durchsucht das CLR-Typladeprogramm an die folgenden Speicherorte in der angegebenen Reihenfolge nach der Klasse:

  1. Wenn die Assembly des Typs bekannt ist, durchsucht das Ladeprogramm die Umleitungsorte der Konfigurationsdatei, den GAC, die aktuelle Assembly mit Konfigurationsinformationen und das Anwendungsbasisverzeichnis.
  2. Ist die Assembly nicht bekannt, durchsucht das Ladeprogramm die aktuelle Assembly, „mscorlib“ und den vom TypeResolve-Ereignishandler zurückgegebenen Ort.
  3. Diese CLR-Suchreihenfolge kann mit Hooks wie dem Typweiterleitungsmechanismus und dem AppDomain.TypeResolve-Ereignis geändert werden.

Wenn sich ein Angreifer die CLR-Suchreihenfolge zunutze macht, indem er eine alternative Klasse mit dem gleichen Namen erstellt und sie an einem alternativen Speicherort platziert, den die CLR zuerst lädt, führt die CLR ungewollt den Code des Angreifers aus.

Beispiel

Das Element <behaviorExtensions/> der folgenden WCF-Konfigurationsdatei weist WCF an, einer bestimmten WCF-Erweiterung eine Klasse mit benutzerdefiniertem Verhalten hinzuzufügen.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name=""myBehavior"" type=""MyBehavior"" />
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

Die Verwendung vollqualifizierter (sicherer) Namen ermöglicht die eindeutige Identifizierung eines Typs und trägt zur Verbesserung der Systemsicherheit bei. Verwenden Sie vollqualifizierte Assemblynamen, wenn Sie Typen in den Dateien „machine.config“ und „app.config“ registrieren.

Beispiel

Das Element <behaviorExtensions/> der folgenden WCF-Konfigurationsdatei weist WCF an, einer bestimmten WCF-Erweiterung eine stark referenzierte Klasse mit benutzerdefiniertem Verhalten hinzuzufügen.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name=""myBehavior"" type=""Microsoft.ServiceModel.Samples.MyBehaviorSection, MyBehavior,
            Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" />
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

WCF – Implementieren Sie eine Autorisierungskontrolle.

Titel Details
Komponente WCF
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein, .NET Framework 3
Attribute
Referenzen MSDN, Fortify Kingdom
Schritte

Dieser Dienst verwendet keine Autorisierungskontrolle. Wenn ein Client einen bestimmten WCF-Dienst aufruft, stellt WCF verschiedene Autorisierungsschemas bereit, um zu überprüfen, ob der Aufrufer zum Ausführen der Dienstmethode auf dem Server berechtigt ist. Ohne Autorisierungskontrolle für WCF-Dienste kann ein authentifizierter Benutzer eine Berechtigungsausweitung bewirken.

Beispiel

Die folgende Konfiguration weist WCF an, bei der Dienstausführung die Autorisierungsstufe des Clients nicht zu überprüfen:

<behaviors>
    <serviceBehaviors>
        <behavior>
            ...
            <serviceAuthorization principalPermissionMode=""None"" />
        </behavior>
    </serviceBehaviors>
</behaviors>

Verwenden Sie ein Dienstautorisierungsschema, um zu überprüfen, ob der Aufrufer zum Aufrufen der Dienstmethode autorisiert ist. WCF bietet zwei Modi und ermöglicht die Verwendung eines benutzerdefinierten Authentifizierungsschemas. Im UseWindowsGroups-Modus werden Windows-Rollen und -Benutzer verwendet. Im UseAspNetRoles-Modus erfolgt die Authentifizierung anhand eines ASP.NET-Rollenanbieters (beispielsweise SQL Server).

Beispiel

Die folgende Konfiguration weist WCF an, vor der Ausführung des Add-Diensts zu überprüfen, ob der Client der Administratorgruppe angehört:

<behaviors>
    <serviceBehaviors>
        <behavior>
            ...
            <serviceAuthorization principalPermissionMode=""UseWindowsGroups"" />
        </behavior>
    </serviceBehaviors>
</behaviors>

Der Dienst wird dann wie folgt deklariert:

[PrincipalPermission(SecurityAction.Demand,
Role = ""Builtin\\Administrators"")]
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}

Implementieren Sie einen geeigneten Autorisierungsmechanismus in der ASP.NET-Web-API.

Titel Details
Komponente Web-API
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein, MVC5
Attribute Nicht zutreffend, Identitätsanbieter: ADFS, Identitätsanbieter: Microsoft Entra ID
Informationsquellen Authentication and Authorization in ASP.NET Web API (Authentifizierung und Autorisierung in der ASP.NET-Web-API)
Schritte

Rolleninformationen für die Anwendungsbenutzer*innen können von Microsoft Entra ID- oder ADFS-Ansprüchen abgeleitet werden, wenn die Anwendung sie als Identitätsanbieter nutzt, oder sie können von der Anwendung selbst bereitgestellt werden. In beiden Fällen müssen die Benutzerrolleninformationen von der benutzerdefinierten Autorisierungsimplementierung überprüft werden.

Rolleninformationen für die Anwendungsbenutzer*innen können von Microsoft Entra ID- oder ADFS-Ansprüchen abgeleitet werden, wenn die Anwendung sie als Identitätsanbieter nutzt, oder sie können von der Anwendung selbst bereitgestellt werden. In beiden Fällen müssen die Benutzerrolleninformationen von der benutzerdefinierten Autorisierungsimplementierung überprüft werden.

Beispiel

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class ApiAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
        public async override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            if (actionContext == null)
            {
                throw new Exception();
            }

            if (!string.IsNullOrEmpty(base.Roles))
            {
                bool isAuthorized = ValidateRoles(actionContext);
                if (!isAuthorized)
                {
                    HandleUnauthorizedRequest(actionContext);
                }
            }

            base.OnAuthorization(actionContext);
        }

public bool ValidateRoles(actionContext)
{
   //Authorization logic here; returns true or false
}

}

Alle zu schützenden Controller und Aktionsmethoden müssen mit dem obigen Attribut versehen werden.

[ApiAuthorize]
public class CustomController : ApiController
{
     //Application code goes here
}

Führen Sie Autorisierungsprüfungen auf dem Gerät aus, falls es verschiedene Aktionen unterstützt, die unterschiedliche Berechtigungsstufen erfordern.

Titel Details
Komponente IoT-Gerät
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte

Das Gerät muss den Aufrufer autorisieren, um zu überprüfen, ob er zum Ausführen der angeforderten Aktion berechtigt ist. Ein Beispiel: Angenommen, bei dem Gerät handelt es sich um ein intelligentes Türschloss, das über die Cloud überwacht und unter anderem per Remotezugriff verriegelt werden kann.

Das intelligente Türschloss macht die Entriegelungsfunktion nur verfügbar, wenn sich jemand physisch und mit einer Karte der Tür nähert. In diesem Fall müssen Remotebefehl und -steuerung so implementiert werden, dass sie keine Funktion zum Entriegeln der Tür bereitstellen, da das Cloudgateway nicht autorisiert ist, einen Befehl zum Entriegeln der Tür zu senden.

Führen Sie Autorisierungsprüfungen für das zwischengeschaltete Gateway aus, falls es verschiedene Aktionen unterstützt, die unterschiedliche Berechtigungsstufen erfordern.

Titel Details
Komponente Zwischengeschaltetes IoT-Gateway
SDL-Phase Entwickeln
Zutreffende Technologien Allgemein
Attribute
Referenzen
Schritte Das zwischengeschaltete Gateway muss den Aufrufer autorisieren, um zu überprüfen, ob er zum Ausführen der angeforderten Aktion berechtigt ist. Beispielsweise müssen für eine Administratorbenutzeroberfläche/-API, die zum Konfigurieren eines zwischengeschalteten Gateways verwendet wird, und für Geräte, die eine Verbindung mit dem Gateway herstellen, unterschiedliche Berechtigungen verwendet werden.