Beveiligingsframe: Communicatiebeveiliging | Oplossingen
Product/service | Artikel |
---|---|
Azure Event Hub | |
Dynamics CRM | |
Azure Data Factory | |
Identity Server | |
Webtoepassing | |
Database | |
Azure Storage | |
Mobiele client | |
WCF | |
Web-API | |
Azure Cache voor Redis | |
IoT-veldgateway | |
IoT Cloud Gateway |
Communicatie met Event Hub beveiligen met SSL/TLS
Title | Details |
---|---|
Onderdeel | Azure Event Hub |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Overzicht van Event Hubs-verificatie en -beveiligingsmodel |
Stappen | AMQP- of HTTP-verbindingen met Event Hub beveiligen met SSL/TLS |
Controleer de bevoegdheden van het serviceaccount en controleer of de aangepaste services of ASP.NET-pagina's de beveiliging van CRM respecteren
Title | Details |
---|---|
Onderdeel | Dynamics CRM |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Controleer de bevoegdheden van het serviceaccount en controleer of de aangepaste services of ASP.NET-pagina's de beveiliging van CRM respecteren |
Gegevensbeheergateway gebruiken tijdens het verbinden van on-premises SQL Server met Azure Data Factory
Title | Details |
---|---|
Onderdeel | Azure Data Factory |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | Gekoppelde servicetypen - Azure en on-premises |
Naslaginformatie | Gegevens verplaatsen tussen on-premises en Azure Data Factory |
Stappen | Het hulpprogramma Gegevensbeheer Gateway (DMG) is vereist om verbinding te maken met gegevensbronnen die worden beveiligd achter corpnet of een firewall.
|
Zorg ervoor dat al het verkeer naar Identity Server via HTTPS-verbinding verloopt
Title | Details |
---|---|
Onderdeel | Identity Server |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | IdentityServer3 - Sleutels, handtekeningen en cryptografie, IdentityServer3 - Implementatie |
Stappen | IdentityServer vereist standaard dat alle binnenkomende verbindingen via HTTPS worden geleverd. Het is absoluut verplicht dat communicatie met IdentityServer alleen wordt uitgevoerd via beveiligde transporten. Er zijn bepaalde implementatiescenario's zoals TLS-offloading waarbij deze vereiste kan worden versoepeld. Zie de pagina Identity Server-implementatie in de verwijzingen voor meer informatie. |
X.509-certificaten verifiëren die worden gebruikt voor het verifiëren van SSL-, TLS- en DTLS-verbindingen
Title | Details |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Toepassingen die gebruikmaken van SSL, TLS of DTLS moeten de X.509-certificaten van de entiteiten waarmee ze verbinding maken, volledig verifiëren. Dit omvat verificatie van de certificaten voor:
|
TLS/SSL-certificaat configureren voor aangepast domein in Azure-app Service
Title | Details |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | EnvironmentType - Azure |
Naslaginformatie | HTTPS inschakelen voor een app in Azure-app Service |
Stappen | Standaard schakelt Azure HTTPS al in voor elke app met een jokertekencertificaat voor het domein *.azurewebsites.net. Net als alle jokertekendomeinen is het echter niet zo veilig als het gebruik van een aangepast domein met een eigen certificaatverwijs. Het wordt aanbevolen OM TLS in te schakelen voor het aangepaste domein waartoe de geïmplementeerde app toegang krijgt via |
Alle verkeer naar Azure-app Service via HTTPS-verbinding afdwingen
Title | Details |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | EnvironmentType - Azure |
Naslaginformatie | HTTPS afdwingen op Azure-app-service |
Stappen | Hoewel Https al is ingeschakeld voor Azure-app-services met een jokertekencertificaat voor het domein *.azurewebsites.net, wordt HTTPS niet afgedwongen. Bezoekers hebben nog steeds toegang tot de app via HTTP, waardoor de beveiliging van de app mogelijk wordt aangetast en https expliciet moet worden afgedwongen. ASP.NET MVC-toepassingen moeten het filter RequireHttps gebruiken waarmee een niet-beveiligde HTTP-aanvraag opnieuw moet worden verzonden via HTTPS. U kunt ook de module URL herschrijven, die is opgenomen in Azure-app Service, kan worden gebruikt om HTTPS af te dwingen. Met de module URL herschrijven kunnen ontwikkelaars regels definiëren die worden toegepast op binnenkomende aanvragen voordat de aanvragen aan uw toepassing worden overhandigd. REGELS voor het herschrijven van URL's worden gedefinieerd in een web.config-bestand dat is opgeslagen in de hoofdmap van de toepassing |
voorbeeld
Het volgende voorbeeld bevat een eenvoudige regel voor het herschrijven van URL's waarmee al het binnenkomende verkeer HTTPS moet worden gebruikt
<?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>
Deze regel werkt door een HTTP-statuscode van 301 (permanente omleiding) te retourneren wanneer de gebruiker een pagina aanvraagt via HTTP. De 301 leidt de aanvraag om naar dezelfde URL als de aangevraagde bezoeker, maar vervangt het HTTP-gedeelte van de aanvraag door HTTPS. Wordt bijvoorbeeld HTTP://contoso.com
omgeleid naar HTTPS://contoso.com
.
HTTP Strict Transport Security (HSTS) inschakelen
Title | Details |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | OWASP HTTP Strict Transport Security Cheat Sheet |
Stappen | HTTP Strict Transport Security (HSTS) is een uitbreiding van de opt-in-beveiliging die wordt opgegeven door een webtoepassing via het gebruik van een speciale antwoordheader. Zodra een ondersteunde browser deze header ontvangt, voorkomt de browser dat communicatie via HTTP naar het opgegeven domein wordt verzonden en worden in plaats daarvan alle communicatie via HTTPS verzonden. Het voorkomt ook dat HTTPS-klikken via prompts in browsers wordt weergegeven. Voor het implementeren van HSTS moet de volgende antwoordheader globaal worden geconfigureerd voor een website, in code of in configuratie. Strict-Transport-Security: max-age=300; includeSubDomains HSTS heeft betrekking op de volgende bedreigingen:
|
Zorg ervoor dat sql Server-verbindingsversleuteling en certificaatvalidatie
Title | Details |
---|---|
Onderdeel | Database |
SDL-fase | Bouwen |
Toepasselijke technologieën | SQL Azure |
Kenmerken | SQL-versie - V12 |
Naslaginformatie | Aanbevolen procedures voor het schrijven van beveiligde Verbinding maken iontekenreeksen voor SQL Database |
Stappen | Alle communicatie tussen SQL Database en een clienttoepassing wordt altijd versleuteld met TLS (Transport Layer Security), voorheen BEKEND als Secure Sockets Layer (SSL). SQL Database biedt geen ondersteuning voor niet-versleutelde verbindingen. Als u certificaten wilt valideren met toepassingscode of hulpprogramma's, vraagt u expliciet een versleutelde verbinding aan en vertrouwt u de servercertificaten niet. Als uw toepassingscode of hulpprogramma's geen versleutelde verbinding aanvragen, ontvangen ze nog steeds versleutelde verbindingen Ze kunnen de servercertificaten echter niet valideren en zijn dus vatbaar voor 'man in the middle'-aanvallen. Als u certificaten wilt valideren met ADO.NET toepassingscode, stelt u de database in en |
Versleutelde communicatie met SQL Server afdwingen
Title | Details |
---|---|
Onderdeel | Database |
SDL-fase | Bouwen |
Toepasselijke technologieën | OnPrem |
Kenmerken | SQL-versie - MsSQL2016, SQL-versie - MsSQL2012, SQL-versie - MsSQL2014 |
Naslaginformatie | Enable Encrypted Connections to the Database Engine (Versleutelde verbindingen met database-engine inschakelen) |
Stappen | Het inschakelen van TLS-versleuteling verhoogt de beveiliging van gegevens die worden verzonden via netwerken tussen exemplaren van SQL Server en toepassingen. |
Zorg ervoor dat communicatie met Azure Storage via HTTPS is
Title | Details |
---|---|
Onderdeel | Azure Storage |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Azure Storage-versleuteling op transportniveau: https gebruiken |
Stappen | Gebruik altijd het HTTPS-protocol bij het aanroepen van de REST API's of het openen van objecten in de opslag om de beveiliging van Azure Storage-gegevens in transit te garanderen. Shared Access Signatures, die kunnen worden gebruikt voor het delegeren van toegang tot Azure Storage-objecten, bevatten ook een optie om op te geven dat alleen het HTTPS-protocol kan worden gebruikt bij het gebruik van Shared Access Signatures, zodat iedereen die koppelingen met SAS-tokens verzendt, het juiste protocol gebruikt. |
MD5-hash valideren na het downloaden van blob als HTTPS niet kan worden ingeschakeld
Title | Details |
---|---|
Onderdeel | Azure Storage |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | StorageType - Blob |
Naslaginformatie | Overzicht van Windows Azure Blob MD5 |
Stappen | De Windows Azure Blob-service biedt mechanismen om gegevensintegriteit te garanderen, zowel in de toepassings- als transportlagen. Als u om welke reden dan ook HTTP moet gebruiken in plaats van HTTPS en u werkt met blok-blobs, kunt u MD5-controle gebruiken om te controleren of de integriteit van de blobs die worden overgedragen Dit helpt bij de beveiliging tegen netwerk-/transportlaagfouten, maar niet noodzakelijkerwijs met intermediaire aanvallen. Als u HTTPS kunt gebruiken, wat beveiliging op transportniveau biedt, is het gebruik van MD5-controle overbodig en onnodig. |
SMB 3.x-compatibele client gebruiken om in-transit gegevensversleuteling naar Azure-bestandsshares te garanderen
Title | Details |
---|---|
Onderdeel | Mobiele client |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | StorageType - Bestand |
Naslaginformatie | Azure Files, Azure Files SMB-ondersteuning voor Windows-clients |
Stappen | Azure Files ondersteunt HTTPS bij het gebruik van de REST API, maar wordt vaker gebruikt als een SMB-bestandsshare die is gekoppeld aan een VIRTUELE machine. SMB 2.1 biedt geen ondersteuning voor versleuteling, dus verbindingen zijn alleen toegestaan binnen dezelfde regio in Azure. SMB 3.x ondersteunt echter versleuteling en kan worden gebruikt met Windows Server 2012 R2, Windows 8, Windows 8.1 en Windows 10, waardoor regiooverschrijdende toegang en zelfs toegang op het bureaublad mogelijk is. |
Certificaat vastmaken implementeren
Title | Details |
---|---|
Onderdeel | Azure Storage |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen, Windows Telefoon |
Kenmerken | N.v.t. |
Naslaginformatie | Certificaat en openbare sleutel vastmaken |
Stappen | Het vastmaken van certificaten verdedigt tegen MAN-In-The-Middle-aanvallen (MITM). Vastmaken is het proces van het koppelen van een host aan hun verwachte X509-certificaat of openbare sleutel. Zodra een certificaat of openbare sleutel bekend is of wordt gezien voor een host, is het certificaat of de openbare sleutel gekoppeld aan of 'vastgemaakt' aan de host. Wanneer een kwaadwillende aanvaller tls MITM-aanval probeert uit te voeren, zal de sleutel van de server van de aanvaller tijdens tls-handshake afwijken van de sleutel van het vastgemaakte certificaat en wordt de aanvraag verwijderd, waardoor het vastmaken van MITM-certificaten kan worden voorkomen door de gemachtigde van |
voorbeeld
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 - Beveiligd transportkanaal inschakelen
Title | Details |
---|---|
Onderdeel | WCF |
SDL-fase | Bouwen |
Toepasselijke technologieën | NET Framework 3 |
Kenmerken | N.v.t. |
Naslaginformatie | MSDN, Fortify Kingdom |
Stappen | De toepassingsconfiguratie moet ervoor zorgen dat HTTPS wordt gebruikt voor alle toegang tot gevoelige informatie.
Vanuit praktisch oogpunt houden de mensen die verantwoordelijk zijn voor het beveiligen van het netwerk niet altijd de beveiligingsvereisten van de toepassing bij naarmate ze zich ontwikkelen. |
WCF: Beveiligingsniveau voor berichten instellen op EncryptAndSign
Title | Details |
---|---|
Onderdeel | WCF |
SDL-fase | Bouwen |
Toepasselijke technologieën | .NET Framework 3 |
Kenmerken | N.v.t. |
Naslaginformatie | MSDN |
Stappen |
Overweeg versleuteling uit te schakelen en alleen uw bericht te ondertekenen wanneer u alleen de integriteit van de informatie moet valideren zonder zorgen over vertrouwelijkheid. Dit kan handig zijn voor bewerkingen of servicecontracten waarin u de oorspronkelijke afzender moet valideren, maar er geen gevoelige gegevens worden verzonden. Wees voorzichtig bij het verminderen van het beveiligingsniveau dat het bericht geen persoonlijke gegevens bevat. |
voorbeeld
Het configureren van de service en de bewerking om alleen het bericht te ondertekenen, wordt weergegeven in de volgende voorbeelden. Voorbeeld van een servicecontract van ProtectionLevel.Sign
: Hieronder ziet u een voorbeeld van het gebruik van ProtectionLevel.Sign op servicecontractniveau:
[ServiceContract(Protection Level=ProtectionLevel.Sign]
public interface IService
{
string GetData(int value);
}
voorbeeld
Voorbeeld van operationeel contract van ProtectionLevel.Sign
(voor gedetailleerd beheer): Hier volgt een voorbeeld van het gebruik ProtectionLevel.Sign
op operationcontractniveau:
[OperationContract(ProtectionLevel=ProtectionLevel.Sign]
string GetData(int value);
WCF: Gebruik een account met minimale bevoegdheden om uw WCF-service uit te voeren
Title | Details |
---|---|
Onderdeel | WCF |
SDL-fase | Bouwen |
Toepasselijke technologieën | .NET Framework 3 |
Kenmerken | N.v.t. |
Naslaginformatie | MSDN |
Stappen |
Als uw service namens de oorspronkelijke beller toegang nodig heeft tot specifieke resources, gebruikt u imitatie en delegatie om de identiteit van de beller te laten stromen voor een downstreamautorisatiecontrole. Gebruik in een ontwikkelingsscenario het lokale netwerkserviceaccount. Dit is een speciaal ingebouwd account met verminderde bevoegdheden. Maak in een productiescenario een aangepast domeinserviceaccount met minimale bevoegdheden. |
Al het verkeer naar web-API's via HTTPS-verbinding afdwingen
Title | Details |
---|---|
Onderdeel | Web-API |
SDL-fase | Bouwen |
Toepasselijke technologieën | MVC5, MVC6 |
Kenmerken | N.v.t. |
Naslaginformatie | SSL afdwingen in een web-API-controller |
Stappen | Als een toepassing zowel een HTTPS- als een HTTP-binding heeft, kunnen clients nog steeds HTTP gebruiken voor toegang tot de site. U kunt dit voorkomen door een actiefilter te gebruiken om ervoor te zorgen dat aanvragen voor beveiligde API's altijd via HTTPS worden verzonden. |
voorbeeld
De volgende code toont een web-API-verificatiefilter dat controleert op TLS:
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);
}
}
}
Voeg dit filter toe aan web-API-acties waarvoor TLS is vereist:
public class ValuesController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}
Zorg ervoor dat de communicatie met Azure Cache voor Redis via TLS verloopt
Title | Details |
---|---|
Onderdeel | Azure Cache voor Redis |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Ondersteuning voor Azure Redis TLS |
Stappen | Redis-server biedt geen ondersteuning voor TLS, maar Azure Cache voor Redis wel. Als u verbinding maakt met Azure Cache voor Redis en uw client TLS ondersteunt, zoals StackExchange.Redis, moet u TLS gebruiken. Standaard is niet-TLS-poort uitgeschakeld voor nieuwe Azure Cache voor Redis exemplaren. Zorg ervoor dat de beveiligde standaardinstellingen niet worden gewijzigd, tenzij er een afhankelijkheid is van TLS-ondersteuning voor redis-clients. |
Redis is ontworpen voor toegang door vertrouwde clients in vertrouwde omgevingen. Dit betekent dat het meestal geen goed idee is om het Redis-exemplaar rechtstreeks beschikbaar te maken op internet of in het algemeen naar een omgeving waar niet-vertrouwde clients rechtstreeks toegang hebben tot de Redis TCP-poort of UNIX-socket.
Communicatie tussen apparaten naar veldgateway beveiligen
Title | Details |
---|---|
Onderdeel | IoT-veldgateway |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Voor IP-apparaten kan het communicatieprotocol doorgaans worden ingekapseld in een SSL/TLS-kanaal om gegevens tijdens overdracht te beveiligen. Voor andere protocollen die SSL/TLS niet ondersteunen, wordt onderzocht of er beveiligde versies van het protocol zijn die beveiliging bieden bij transport- of berichtlaag. |
Communicatie tussen apparaten naar cloudgateway beveiligen met SSL/TLS
Title | Details |
---|---|
Onderdeel | IoT Cloud Gateway |
SDL-fase | Bouwen |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Uw Communication Protocol kiezen |
Stappen | Gebruik SSL/TLS om HTTP/AMQP- of MQTT-protocollen te beveiligen. |