Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Produkt/Dienst | Artikel |
---|---|
Azure Event Hub | |
Dynamics CRM | |
Azure Data Factory | |
Identity Server | |
Webanwendung |
|
Datenbank | |
Azure Storage |
|
Mobiler Client | |
WCF | |
Web-API | |
Azure Cache für Redis | |
IoT-Bereichsgateway | |
IoT-Cloudgateway |
Sichere Kommunikation mit Event Hub mit SSL/TLS
Titel | Einzelheiten |
---|---|
Komponente | Azure Event Hub |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Event Hubs-Authentifizierung und -Sicherheitsmodell (Übersicht) |
Schritte | Sichere AMQP- oder HTTP-Verbindungen mit Event Hub mit SSL/TLS |
Überprüfen Sie die Berechtigungen des Dienstkontos, und überprüfen Sie, ob die benutzerdefinierten Dienste oder ASP.NET Seiten die Sicherheit von CRM respektieren
Titel | Einzelheiten |
---|---|
Komponente | Dynamics CRM |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Nicht verfügbar |
Schritte | Überprüfen Sie die Berechtigungen des Dienstkontos, und überprüfen Sie, ob die benutzerdefinierten Dienste oder ASP.NET Seiten die Sicherheit von CRM respektieren |
Nutzen Sie das Datenverwaltungsgateway, um eine Verbindung zwischen einem lokalen SQL Server und der Azure Data Factory herzustellen.
Titel | Einzelheiten |
---|---|
Komponente | Azure Data Factory |
SDL-Phase | Einsatz |
Zutreffende Technologien | Generisch |
Attribute | Verknüpfte Diensttypen – Azure und lokal |
Informationsquellen | Verschieben von Daten zwischen lokal und Azure Data Factory |
Schritte | Das Datenverwaltungsgateway (DMG)-Tool ist erforderlich, um eine Verbindung mit Datenquellen herzustellen, die hinter corpnet oder einer Firewall geschützt sind.
|
Sicherstellen, dass der gesamte Datenverkehr zu Identity Server über HTTPS-Verbindung erfolgt
Titel | Einzelheiten |
---|---|
Komponente | Identitätsserver |
SDL-Phase | Einsatz |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Nicht verfügbar |
Schritte | Standardmäßig erfordert IdentityServer, dass alle eingehenden Verbindungen über HTTPS übertragen werden. Es ist absolut zwingend erforderlich, dass die Kommunikation mit IdentityServer nur über gesicherte Transporte erfolgt. Es gibt bestimmte Bereitstellungsszenarien wie TLS-Offloading, bei denen diese Anforderung entspannt werden kann. Weitere Informationen finden Sie auf der Seite "Identity Server-Bereitstellung" in den Verweisen. |
Überprüfen von X.509-Zertifikaten zur Authentifizierung von SSL-, TLS- und DTLS-Verbindungen
Titel | Einzelheiten |
---|---|
Komponente | Webanwendung |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Nicht verfügbar |
Schritte | Anwendungen, die SSL, TLS oder DTLS verwenden, müssen die X.509-Zertifikate der Entitäten, mit denen sie eine Verbindung herstellen, vollständig überprüfen. Dazu gehört die Überprüfung der Zertifikate für:
|
Konfigurieren des TLS/SSL-Zertifikats für benutzerdefinierte Domäne in Azure App Service
Titel | Einzelheiten |
---|---|
Komponente | Webanwendung |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | EnvironmentType – Azure |
Informationsquellen | Aktivieren von HTTPS für eine App in Azure App Service |
Schritte | Standardmäßig aktiviert Azure bereits HTTPS für jede App mit einem Wildcardzertifikat für die Domäne *.azurewebsites.net. Wie alle Wildcarddomänen ist sie jedoch nicht so sicher wie die Verwendung einer benutzerdefinierten Domäne mit eigenem Zertifikat Refer. Es wird empfohlen, TLS für die benutzerdefinierte Domäne zu aktivieren, über die auf die bereitgestellte App zugegriffen wird. |
Erzwingen des gesamten an Azure App Service gerichteten Datenverkehr über eine HTTPS-Verbindung
Titel | Einzelheiten |
---|---|
Komponente | Webanwendung |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | EnvironmentType – Azure |
Informationsquellen | Erzwingen von HTTPS für Azure App Service |
Schritte | Obwohl Azure bereits HTTPS für Azure-App-Dienste mit einem Wildcardzertifikat für die Domäne *.azurewebsites.net aktiviert, erzwingt es nicht HTTPS. Besucher können weiterhin über HTTP auf die App zugreifen, was die Sicherheit der App beeinträchtigen kann und daher HTTPS explizit erzwungen werden muss. ASP.NET MVC-Anwendungen sollten den RequireHttps-Filter verwenden, der die erneute Übermittlung einer ungesicherten HTTP-Anforderung über HTTPS erzwingt. Alternativ kann das URL Rewrite-Modul, das in Azure App Service enthalten ist, verwendet werden, um HTTPS zu erzwingen. Mithilfe des URL Rewrite-Moduls können Entwickler Regeln definieren, die auf eingehende Anforderungen angewendet werden, bevor die Anforderungen an Ihre Anwendung übergeben werden. URL Rewrite-Regeln werden in einer web.config Datei definiert, die im Stammverzeichnis der Anwendung gespeichert ist. |
Beispiel
Das folgende Beispiel enthält eine grundlegende URL-Neuschreibregel, die alle eingehenden Datenverkehr zur Verwendung von HTTPS erzwingt.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Diese Regel funktioniert, indem ein HTTP-Statuscode von 301 (permanente Umleitung) zurückgegeben wird, wenn der Benutzer eine Seite mit HTTP anfordert. Die 301 leitet die Anforderung an dieselbe URL wie der angeforderte Besucher weiter, ersetzt jedoch den HTTP-Teil der Anforderung durch HTTPS. Beispiel: HTTP://contoso.com
Wird umgeleitet zu HTTPS://contoso.com
.
Aktivieren von HTTP Strict Transport Security (HSTS)
Titel | Einzelheiten |
---|---|
Komponente | Webanwendung |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | OWASP HTTP Strict Transport Security Cheat Sheet |
Schritte | HTTP Strict Transport Security (HSTS) ist eine Opt-In-Sicherheitsverbesserung, die von einer Webanwendung über die Verwendung eines speziellen Antwortheaders angegeben wird. Sobald ein unterstützter Browser diesen Header empfängt, verhindert dieser Browser, dass kommunikationen über HTTP an die angegebene Domäne gesendet werden und sendet stattdessen alle Kommunikationen über HTTPS. Außerdem wird verhindert, dass HTTPS-Click-Through-Aufforderungen in Browsern angezeigt werden. Um HSTS zu implementieren, muss der folgende Antwortheader global für eine Website konfiguriert werden, entweder im Code oder in der Konfiguration. Strict-Transport-Security: max-age=300; includeSubDomains HSTS behebt die folgenden Bedrohungen:
|
Sicherstellen der SQL Server-Verbindungsverschlüsselung und Zertifikatüberprüfung
Titel | Einzelheiten |
---|---|
Komponente | Datenbank |
SDL-Phase | Bauen |
Zutreffende Technologien | SQL Azure |
Attribute | SQL-Version: V12 |
Informationsquellen | Bewährte Methoden zum Schreiben sicherer Verbindungszeichenfolgen für SQL-Datenbank |
Schritte | Alle Kommunikationen zwischen SQL-Datenbank und einer Clientanwendung werden mit Transport Layer Security (TLS) verschlüsselt, zuvor als Secure Sockets Layer (SSL) bezeichnet, jederzeit. Die SQL-Datenbank unterstützt keine unverschlüsselten Verbindungen. Um Zertifikate mit Anwendungscode oder Tools zu überprüfen, fordern Sie explizit eine verschlüsselte Verbindung an, und vertrauen Sie den Serverzertifikaten nicht. Wenn Ihr Anwendungscode oder Ihre Tools keine verschlüsselte Verbindung anfordern, erhalten sie weiterhin verschlüsselte Verbindungen. Sie können jedoch die Serverzertifikate nicht validieren und somit anfällig für "Man in the middle"-Angriffen sein. Um Zertifikate mit ADO.NET-Anwendungscode zu validieren, setzen Sie |
Erzwingen der verschlüsselten Kommunikation mit SQL Server
Titel | Einzelheiten |
---|---|
Komponente | Datenbank |
SDL-Phase | Bauen |
Zutreffende Technologien | Lokal |
Attribute | SQL-Version - MsSQL2016, SQL-Version - MsSQL2012, SQL-Version - MsSQL2014 |
Informationsquellen | Aktivieren von verschlüsselten Verbindungen mit dem Datenbankmodul |
Schritte | Das Aktivieren der TLS-Verschlüsselung erhöht die Sicherheit von Daten, die netzwerkübergreifend zwischen Instanzen von SQL Server und Anwendungen übertragen werden. |
Sicherstellen, dass die Kommunikation mit Azure Storage über HTTPS erfolgt
Titel | Einzelheiten |
---|---|
Komponente | Azure Storage |
SDL-Phase | Einsatz |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Azure Storage-Transport-Level-Verschlüsselung – Verwenden von HTTPS |
Schritte | Um die Sicherheit von Azure Storage-Daten während der Übertragung sicherzustellen, verwenden Sie immer das HTTPS-Protokoll, wenn Sie die REST-APIs aufrufen oder auf Objekte im Speicher zugreifen. Außerdem bieten Shared Access Signatures (SAS), die zum Delegieren des Zugriffs auf Azure Storage-Objekte verwendet werden können, die Möglichkeit, festzulegen, dass nur das HTTPS-Protokoll genutzt werden kann. Dies stellt sicher, dass jeder, der Links mit SAS-Token sendet, das richtige Protokoll verwendet. |
Überprüfen des MD5-Hash nach dem Herunterladen des Blobs, wenn HTTPS nicht aktiviert werden kann
Titel | Einzelheiten |
---|---|
Komponente | Azure Storage |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Speichertyp - Blob |
Informationsquellen | Übersicht über Windows Azure Blob MD5 |
Schritte | Der Windows Azure Blob-Dienst stellt Mechanismen bereit, um die Datenintegrität sowohl auf den Anwendungs- als auch auf transportebenen sicherzustellen. Wenn Sie aus irgendeinem Grund HTTP anstelle von HTTPS verwenden müssen und mit Block-Blobs arbeiten, können Sie die MD5-Überprüfung verwenden, um die Integrität der übertragenen Blobs zu überprüfen. Dies hilft beim Schutz vor Netzwerk-/Transportschichtfehlern, aber nicht unbedingt bei zwischengeschalteten Angriffen. Wenn Sie HTTPS verwenden können, das Sicherheit auf Transportebene bereitstellt, ist die Verwendung der MD5-Überprüfung redundant und unnötig. |
Verwenden eines SMB 3-kompatiblen Clients zur Gewährleistung der Verschlüsselung von Daten während der Übertragung an Azure-Dateifreigaben
Titel | Einzelheiten |
---|---|
Komponente | Mobiler Client |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | StorageType – Datei |
Informationsquellen | Azure Files, Azure Files SMB-Unterstützung für Windows-Clients |
Schritte | Azure Files unterstützt HTTPS bei Verwendung der REST-API, wird jedoch häufiger als an eine VM angefügte SMB-Dateifreigabe verwendet. SMB 2.1 unterstützt keine Verschlüsselung, sodass Verbindungen nur innerhalb derselben Region in Azure zulässig sind. SMB 3.x unterstützt jedoch Verschlüsselung und kann mit Windows Server 2012 R2, Windows 8, Windows 8.1 und Windows 10 verwendet werden, sodass der regionsübergreifende Zugriff und sogar der Zugriff auf den Desktop möglich ist. |
Implementieren des Anheftens von Zertifikaten
Titel | Einzelheiten |
---|---|
Komponente | Azure Storage |
SDL-Phase | Bauen |
Zutreffende Technologien | Allgemein, Windows Phone |
Attribute | Nicht verfügbar |
Informationsquellen | Anheften von Zertifikaten und öffentlichen Schlüsseln |
Schritte | Das Anheften von Zertifikaten dient zur Abwehr von MITM-Angriffen (Man-in-the-Middle). Beim Anheften wird ein Host mit dem erwarteten X.509-Zertifikat oder öffentlichen Schlüssel verknüpft. Sobald ein Zertifikat oder ein öffentlicher Schlüssel für einen Host bekannt oder angezeigt wird, wird das Zertifikat oder der öffentliche Schlüssel dem Host zugeordnet oder "angeheftet". Startet ein Angreifer nun einen TLS-MITM-Angriff, unterscheidet sich der Schlüssel des für den Angriff verwendeten Servers beim TLS-Handshake vom Schlüssel des angehefteten Zertifikats, woraufhin die Anforderung verworfen und der MITM-Angriff abgewehrt wird. Das Anheften von Zertifikaten kann durch Implementieren des ServicePointManager-Delegaten |
Beispiel
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
namespace CertificatePinningExample
{
class CertificatePinningExample
{
/* Note: In this example, we're hardcoding the certificate's public key and algorithm for
demonstration purposes. In a real-world application, this should be stored in a secure
configuration area that can be updated as needed. */
private static readonly string PINNED_ALGORITHM = "RSA";
private static readonly string PINNED_PUBLIC_KEY = "3082010A0282010100B0E75B7CBE56D31658EF79B3A1" +
"294D506A88DFCDD603F6EF15E7F5BCBDF32291EC50B2B82BA158E905FE6A83EE044A48258B07FAC3D6356AF09B2" +
"3EDAB15D00507B70DB08DB9A20C7D1201417B3071A346D663A241061C151B6EC5B5B4ECCCDCDBEA24F051962809" +
"FEC499BF2D093C06E3BDA7D0BB83CDC1C2C6660B8ECB2EA30A685ADE2DC83C88314010FFC7F4F0F895EDDBE5C02" +
"ABF78E50B708E0A0EB984A9AA536BCE61A0C31DB95425C6FEE5A564B158EE7C4F0693C439AE010EF83CA8155750" +
"09B17537C29F86071E5DD8CA50EBD8A409494F479B07574D83EDCE6F68A8F7D40447471D05BC3F5EAD7862FA748" +
"EA3C92A60A128344B1CEF7A0B0D94E50203010001";
public static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://azure.microsoft.com");
request.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
if (certificate == null || sslPolicyErrors != SslPolicyErrors.None)
{
// Error getting certificate or the certificate failed basic validation
return false;
}
var targetKeyAlgorithm = new Oid(certificate.GetKeyAlgorithm()).FriendlyName;
var targetPublicKey = certificate.GetPublicKeyString();
if (targetKeyAlgorithm == PINNED_ALGORITHM &&
targetPublicKey == PINNED_PUBLIC_KEY)
{
// Success, the certificate matches the pinned value.
return true;
}
// Reject, either the key or the algorithm does not match the expected value.
return false;
};
try
{
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine($"Success, HTTP status code: {response.StatusCode}");
}
catch(Exception ex)
{
Console.WriteLine($"Failure, {ex.Message}");
}
Console.WriteLine("Press any key to end.");
Console.ReadKey();
}
}
}
HTTPS aktivieren – Secure Transport-Kanal
Titel | Einzelheiten |
---|---|
Komponente | WCF |
SDL-Phase | Bauen |
Zutreffende Technologien | .NET Framework 3 |
Attribute | Nicht verfügbar |
Informationsquellen | MSDN, Fortify Kingdom |
Schritte | Die Anwendungskonfiguration sollte sicherstellen, dass HTTPS für den gesamten Zugriff auf vertrauliche Informationen verwendet wird.
Aus praktischer Sicht verfolgen die für die Sicherung des Netzwerks verantwortlichen Personen nicht immer die Sicherheitsanforderungen der Anwendung, während sie sich entwickeln. |
WCF: Festlegen der Sicherheitsstufe für Nachrichten auf EncryptAndSign
Titel | Einzelheiten |
---|---|
Komponente | WCF |
SDL-Phase | Bauen |
Zutreffende Technologien | .NET Framework 3 |
Attribute | Nicht verfügbar |
Informationsquellen | MSDN- |
Schritte |
Erwägen Sie das Deaktivieren der Verschlüsselung und nur das Signieren Ihrer Nachricht, wenn Sie nur die Integrität der Informationen ohne Bedenken der Vertraulichkeit überprüfen müssen. Dies kann für Vorgänge oder Dienstleistungsverträge nützlich sein, in denen Sie den ursprünglichen Absender überprüfen müssen, aber keine vertraulichen Daten übertragen werden. Achten Sie beim Verringern des Schutzniveaus darauf, dass die Nachricht keine personenbezogenen Daten enthält. |
Beispiel
Das Konfigurieren des Diensts und des Vorgangs, um nur die Nachricht zu signieren, wird in den folgenden Beispielen gezeigt. Dienstvertragsbeispiel: ProtectionLevel.Sign
Nachfolgend sehen Sie ein Beispiel für die Verwendung von ProtectionLevel.Sign auf Dienstvertragsebene:
[ServiceContract(Protection Level=ProtectionLevel.Sign]
public interface IService
{
string GetData(int value);
}
Beispiel
Beispiel eines Operationsvertrags von ProtectionLevel.Sign
(für granulare Kontrolle): Im Folgenden ist ein Beispiel für die Verwendung von ProtectionLevel.Sign
auf der Ebene des OperationContract:
[OperationContract(ProtectionLevel=ProtectionLevel.Sign]
string GetData(int value);
WCF: Verwenden eines Am wenigsten privilegierten Kontos zum Ausführen Ihres WCF-Diensts
Titel | Einzelheiten |
---|---|
Komponente | WCF |
SDL-Phase | Bauen |
Zutreffende Technologien | .NET Framework 3 |
Attribute | Nicht verfügbar |
Informationsquellen | MSDN- |
Schritte |
Wenn Ihr Dienst im Namen des ursprünglichen Anrufers auf bestimmte Ressourcen zugreifen muss, verwenden Sie den Identitätswechsel und die Delegierung, um die Identität des Anrufers für eine nachgeschaltete Autorisierungsprüfung zu übermitteln. Verwenden Sie in einem Entwicklungsszenario das lokale Netzwerkdienstkonto, bei dem es sich um ein spezielles integriertes Konto handelt, das über eingeschränkte Berechtigungen verfügt. Erstellen Sie in einem Produktionsszenario ein benutzerdefiniertes Domänendienstkonto mit den geringsten Rechten. |
Erzwingen des gesamten an Web-APIs gerichtete Datenverkehr über eine HTTPS-Verbindung
Titel | Einzelheiten |
---|---|
Komponente | Web-API |
SDL-Phase | Bauen |
Zutreffende Technologien | MVC5, MVC6 |
Attribute | Nicht verfügbar |
Informationsquellen | Erzwingen von SSL in einem Web-API-Controller |
Schritte | Wenn eine Anwendung sowohl über ein HTTPS als auch über eine HTTP-Bindung verfügt, können Clients weiterhin HTTP für den Zugriff auf die Website verwenden. Um dies zu verhindern, verwenden Sie einen Aktionsfilter, um sicherzustellen, dass Anforderungen an geschützte APIs immer über HTTPS liegen. |
Beispiel
Der folgende Code zeigt einen Web-API-Authentifizierungsfilter, der nach TLS sucht:
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
Fügen Sie diesen Filter zu beliebigen Web-API-Aktionen hinzu, für die TLS erforderlich ist:
public class ValuesController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}
Sicherstellen, dass die Kommunikation mit Azure Cache für Redis über TLS erfolgt
Titel | Einzelheiten |
---|---|
Komponente | Azure Cache für Redis |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Azure Redis TLS-Unterstützung |
Schritte | Redis-Server unterstützt TLS nicht von Haus aus, aber Azure Cache für Redis unterstützt es jedoch. Wenn Sie eine Verbindung mit Azure Cache für Redis herstellen und Ihr Client TLS unterstützt, z. B. StackExchange.Redis, sollten Sie TLS verwenden. Standardmäßig ist der Nicht-TLS-Port für neue Azure Cache für Redis-Instanzen deaktiviert. Stellen Sie sicher, dass die sicheren Standardwerte nicht geändert werden, es sei denn, es gibt eine Abhängigkeit von der TLS-Unterstützung für Redis-Clients. |
Bitte beachten Sie, dass Redis darauf ausgelegt ist, von vertrauenswürdigen Clients in vertrauenswürdigen Umgebungen zugegriffen werden zu können. Dies bedeutet, dass es in der Regel nicht sinnvoll ist, die Redis-Instanz direkt im Internet oder in einer Umgebung verfügbar zu machen, in der nicht vertrauenswürdige Clients direkt auf den Redis TCP-Port oder UNIX-Socket zugreifen können.
Sichere Kommunikation zwischen Gerät und Feldgateway
Titel | Einzelheiten |
---|---|
Komponente | IoT-Bereichsgateway |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Nicht verfügbar |
Schritte | Bei IP-basierten Geräten könnte das Kommunikationsprotokoll in der Regel in einem SSL/TLS-Kanal gekapselt werden, um Daten während der Übertragung zu schützen. Bei anderen Protokollen, die SSL/TLS nicht unterstützen, untersuchen Sie, ob sichere Versionen des Protokolls vorhanden sind, die Sicherheit auf Transport- oder Nachrichtenebene bereitstellen. |
Sicheres Gerät zur Cloudgateway-Kommunikation mit SSL/TLS
Titel | Einzelheiten |
---|---|
Komponente | IoT-Cloudgateway |
SDL-Phase | Bauen |
Zutreffende Technologien | Generisch |
Attribute | Nicht verfügbar |
Informationsquellen | Wählen Sie Ihr Kommunikationsprotokoll aus. |
Schritte | Sichere HTTP/AMQP- oder MQTT-Protokolle mit SSL/TLS. |