Infrastruttura di sicurezza: dati sensibili - Procedure di mitigazioneSecurity Frame: Sensitive Data | Mitigations

Prodotto o servizioProduct/Service ArticoloArticle
Limite di Trust del computerMachine Trust Boundary
Applicazione WebWeb Application
DatabaseDatabase
API WebWeb API
Azure DocumentDBAzure Document DB
Limite di trust della macchina virtuale IaaS di AzureAzure IaaS VM Trust Boundary
Limite di trust di Service FabricService Fabric Trust Boundary
Dynamics CRMDynamics CRM
Archiviazione di AzureAzure Storage
Client per dispositivi mobiliMobile Client
WCFWCF

Assicurarsi che i file binari che contengono informazioni riservate vengano offuscatiEnsure that binaries are obfuscated if they contain sensitive information

TitleTitle DettagliDetails
ComponenteComponent Limite di trust dei computerMachine Trust Boundary
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Assicurarsi che vengano offuscati i file binari che contengono informazioni riservate, come segreti commerciali o logica di business riservata che non deve essere sottoposta a reverse engineering.Ensure that binaries are obfuscated if they contain sensitive information such as trade secrets, sensitive business logic that should not reversed. Questa misura consente di prevenire il reverse engineering degli assembly.This is to stop reverse engineering of assemblies. A questo scopo, è possibile usare strumenti come CryptoObfuscator.Tools like CryptoObfuscator may be used for this purpose.

Valutare l'uso della tecnologia EFS (Encrypting File System) per proteggere dati riservati specifici dell'utenteConsider using Encrypted File System (EFS) is used to protect confidential user-specific data

TitleTitle DettagliDetails
ComponenteComponent Limite di trust dei computerMachine Trust Boundary
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Valutare l'uso della tecnologia EFS (Encrypting File System) per proteggere i dati riservati specifici dell'utente da antagonisti che abbiano fisicamente accesso al computer.Consider using Encrypted File System (EFS) is used to protect confidential user-specific data from adversaries with physical access to the computer.

Assicurarsi che i dati sensibili archiviati dall'applicazione nel file system vengano crittografatiEnsure that sensitive data stored by the application on the file system is encrypted

TitleTitle DettagliDetails
ComponenteComponent Limite di trust dei computerMachine Trust Boundary
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Se non è possibile applicare la tecnologia EFS, assicurarsi che i dati sensibili archiviati dall'applicazione nel file system vengano crittografati, ad esempio tramite DPAPI.Ensure that sensitive data stored by the application on the file system is encrypted (e.g., using DPAPI), if EFS cannot be enforced

Assicurarsi che i contenuti sensibili non vengano memorizzati nella cache del browserEnsure that sensitive content is not cached on the browser

TitleTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies Generico, Web Form, MVC 5, MVC 6Generic, Web Forms, MVC5, MVC6
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps I browser possono archiviare informazioni per motivi di memorizzazione nella cache e cronologia.Browsers can store information for purposes of caching and history. Questi file memorizzati nella cache vengono archiviati in una cartella, come la cartella File temporanei Internet nel caso di Internet Explorer.These cached files are stored in a folder, like the Temporary Internet Files folder in the case of Internet Explorer. Quando queste pagine vengono visitate di nuovo, il browser le visualizza dalla cache.When these pages are referred again, the browser displays them from its cache. Se vengono visualizzate informazioni riservate, come l'indirizzo dell'utente, i dati della carta di credito, il codice fiscale o il nome utente, tali informazioni possono essere memorizzate nella cache del browser e quindi recuperate esaminando la cache del browser o semplicemente premendo il pulsante "Indietro" del browser.If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored in browser’s cache, and therefore retrievable through examining the browser's cache or by simply pressing the browser's "Back" button. Impostare il valore dell'intestazione della risposta del controllo cache su "no-store" per tutte le pagine.Set cache-control response header value to “no-store” for all pages.

EsempioExample

<configuration>
  <system.webServer>
   <httpProtocol>
    <customHeaders>
        <add name="Cache-Control" value="no-cache" />
        <add name="Pragma" value="no-cache" />
        <add name="Expires" value="-1" />
    </customHeaders>
  </httpProtocol>
 </system.webServer>
</configuration>

EsempioExample

Per l'implementazione è possibile usare un filtro.This may be implemented through a filter. È possibile usare l'esempio seguente:Following example may be used:

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext == null || (filterContext.HttpContext != null && filterContext.HttpContext.Response != null && filterContext.HttpContext.Response.IsRequestBeingRedirected))
            {
                //// Since this is MVC pipeline, this should never be null.
                return;
            }

            var attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(System.Web.Mvc.OutputCacheAttribute), false);
            if (attributes == null || **Attributes**.Count() == 0)
            {
                filterContext.HttpContext.Response.Cache.SetNoStore();
                filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
                if (!filterContext.IsChildAction)
                {
                    filterContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
                }
            }

            base.OnActionExecuting(filterContext);
        }

Crittografare le sezioni dei file di configurazione dell'app Web contenenti dati sensibiliEncrypt sections of Web App's configuration files that contain sensitive data

TitleTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI (Procedura: Crittografare le sezioni di configurazione in ASP.NET 2.0 usando DPAPI), Specifica di un provider di configurazione protetta, Using Azure Key Vault to protect application secrets (Uso di Azure Key Vault per proteggere i segreti dell'applicazione)How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI, Specifying a Protected Configuration Provider, Using Azure Key Vault to protect application secrets
PassaggiSteps I file di configurazione, ad esempio Web.config e appsettings.json, vengono spesso usati per memorizzare informazioni sensibili, inclusi nomi utente, password, stringhe di connessione del database e chiavi di crittografia.Configuration files such as the Web.config, appsettings.json are often used to hold sensitive information, including user names, passwords, database connection strings, and encryption keys. Se non si proteggono queste informazioni, l'applicazione è vulnerabile agli utenti malintenzionati che ottengono informazioni sensibili, ad esempio nomi account utente e password, nomi dei database e nomi dei server.If you do not protect this information, your application is vulnerable to attackers or malicious users obtaining sensitive information such as account user names and passwords, database names and server names. In base al tipo di distribuzione (Azure/locale), crittografare le sezioni sensibili dei file config usando DPAPI o servizi come Azure Key Vault.Based on the deployment type (azure/on-prem), encrypt the sensitive sections of config files using DPAPI or services like Azure Key Vault.

Disabilitare in modo esplicito l'attributo HTML di completamento automatico in input e moduli sensibiliExplicitly disable the autocomplete HTML attribute in sensitive forms and inputs

TitleTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences MSDN: autocomplete attribute (Attributo autocomplete), Using AutoComplete in HTML Forms (Uso di AutoComplete nei form HTML), Vulnerabilità legata alla disinfezione del contenuto HTML, Autocomplete...again?! (Ancora autocomplete?)MSDN: autocomplete attribute, Using AutoComplete in HTML, HTML Sanitization Vulnerability, Autocomplete.,again?!
PassaggiSteps L'attributo autocomplete specifica se la funzionalità di completamento automatico di un modulo debba essere abilitata o disabilitata.The autocomplete attribute specifies whether a form should have autocomplete on or off. Quando il completamento automatico è abilitato, il browser completa automaticamente i valori in base a valori immessi in precedenza dall'utente.When autocomplete is on, the browser automatically complete values based on values that the user has entered before. Ad esempio, quando si immette un nuovo nome e una password in un modulo, che poi viene inviato, il browser chiede se si vuole salvare la password. Quando il modulo viene visualizzato successivamente, il nome e la password vengono popolati automaticamente o vengono compilati immettendo il nome.For example, when a new name and password is entered in a form and the form is submitted, the browser asks if the password should be saved.Thereafter when the form is displayed, the name and password are filled in automatically or are completed as the name is entered. Un utente malintenzionato con accesso in locale può ottenere la password non crittografata dalla cache del browser.An attacker with local access could obtain the clear text password from the browser cache. Il completamento automatico è abilitato per impostazione predefinita e deve essere disabilitato in modo esplicito.By default autocomplete is enabled, and it must explicitly be disabled.

EsempioExample

<form action="Login.aspx" method="post " autocomplete="off" >
      Social Security Number: <input type="text" name="ssn" />
      <input type="submit" value="Submit" />    
</form>

Assicurarsi che i dati sensibili visualizzati nella schermata dell'utente vengano mascheratiEnsure that sensitive data displayed on the user screen is masked

TitleTitle DettagliDetails
ComponenteComponent Applicazione Web.Web Application
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps I dati sensibili, come password, numeri di carte di credito, codice fiscale e così via devono essere mascherati quando vengono visualizzati sullo schermo.Sensitive data such as passwords, credit card numbers, SSN etc. should be masked when displayed on the screen. Questa misura serve a impedire l'accesso ai dati da parte di personale non autorizzato, ad esempio con la tecnica dello shoulder surfing o la visualizzazione del codice fiscale dell'utente da parte del personale di supporto.This is to prevent unauthorized personnel from accessing the data (e.g., shoulder-surfing passwords, support personnel viewing SSN numbers of users) . Assicurarsi che questi elementi di dati non siano visibili come testo normale e vengano mascherati in modo appropriato.Ensure that these data elements are not visible in plain text and are appropriately masked. Questo deve avvenire sia quando vengono accettati come input, ad esempioThis has to be taken care while accepting them as input (e.g,. input type="password", sia quando vengono visualizzati nuovamente sullo schermo, ad esempio mostrando solo le ultime 4 cifre del numero di carta di credito.input type="password") as well as displaying back on the screen (e.g., display only the last 4 digits of the credit card number).

Implementare la maschera dati dinamica per limitare l'esposizione di dati sensibili a utenti senza privilegiImplement dynamic data masking to limit sensitive data exposure non privileged users

TitleTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies SQL Azure, localeSql Azure, OnPrem
Attributes (Attributi) (Attributi)Attributes Versione SQL: 12, versione SQL: MSSQL2016SQL Version - V12, SQL Version - MsSQL2016
RiferimentiReferences Maschera dati dinamicaDynamic Data Masking
PassaggiSteps Lo scopo della maschera dati dinamica è limitare l'esposizione dei dati sensibili, impedendone la visualizzazione da parte di utenti che non dovrebbero avervi accesso.The purpose of dynamic data masking is to limit exposure of sensitive data, preventing users who should not have access to the data from viewing it. La maschera dati dinamica non impedisce agli utenti di database di connettersi direttamente al database ed eseguire query complete che espongono parti di dati sensibili.Dynamic data masking does not aim to prevent database users from connecting directly to the database and running exhaustive queries that expose pieces of the sensitive data. La maschera dati dinamica è complementare ad altre funzionalità di sicurezza di SQL Server, come il controllo, la crittografia, la sicurezza a livello di riga e così via, ed è consigliabile usarla insieme a tali funzionalità per proteggere meglio i dati sensibili nel database.Dynamic data masking is complementary to other SQL Server security features (auditing, encryption, row level security…) and it is highly recommended to use this feature in conjunction with them in addition in order to better protect the sensitive data in the database. Si noti che questa funzionalità è supportata unicamente da SQL Server, a partire dalla versione 2016, e dal database SQL di Azure.Please note that this feature is supported only by SQL Server starting with 2016 and Azure SQL Database.

Assicurarsi che le password vengano archiviate in formato hash con valori saltEnsure that passwords are stored in salted hash format

TitleTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Hash delle password con le API di crittografia di .NETPassword Hashing using .NET Crypto APIs
PassaggiSteps Le password non devono essere archiviate in database dell'archivio utenti personalizzati.Passwords should not be stored in custom user store databases. Gli hash delle password devono invece essere archiviati con valori salt.Password hashes should be stored with salt values instead. Assicurarsi che il valore salt per l'utente sia sempre univoco e di applicare b-crypt, s-crypt o PBKDF2 prima di archiviare la password, con un conteggio delle iterazioni del fattore lavoro minimo di 150.000 cicli per eliminare la possibilità di attacchi di forza bruta.Make sure the salt for the user is always unique and you apply b-crypt, s-crypt or PBKDF2 before storing the password, with a minimum work factor iteration count of 150,000 loops to eliminate the possibility of brute forcing.

Assicurarsi che i dati sensibili nelle colonne di database vengano crittografatiEnsure that sensitive data in database columns is encrypted

TitleTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes Versione SQL: tutteSQL Version - All
RiferimentiReferences Crittografia di dati sensibili in SQL Server, Procedura: Crittografare una colonna di dati in SQL Server, Crittografare con un certificatoEncrypting sensitive data in SQL server, How to: Encrypt a Column of Data in SQL Server, Encrypt by Certificate
PassaggiSteps I dati sensibili, come i numeri di carte di credito, devono essere crittografati nel database.Sensitive data such as credit card numbers has to be encrypted in the database. A tale scopo è possibile usare la crittografia a livello di colonna o una funzione di applicazione tramite funzioni di crittografia.Data can be encrypted using column-level encryption or by an application function using the encryption functions.

Assicurarsi che venga abilitata la crittografia a livello di database (TDE)Ensure that database-level encryption (TDE) is enabled

TitleTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Informazioni su Transparent Data Encryption (TDE) in SQL ServerUnderstanding SQL Server Transparent Data Encryption (TDE)
PassaggiSteps La funzionalità Transparent Data Encryption (TDE) in SQL Server consente di crittografare i dati sensibili in un database e proteggere le chiavi usate per crittografare i dati con un certificato.Transparent Data Encryption (TDE) feature in SQL server helps in encrypting sensitive data in a database and protect the keys that are used to encrypt the data with a certificate. Questo impedisce l'uso dei dati senza le chiavi.This prevents anyone without the keys from using the data. TDE protegge i dati inattivi, ovvero i file di dati e di log.TDE protects data "at rest", meaning the data and log files. Offre inoltre la possibilità di conformarsi a diverse leggi, normative e linee guida stabilite in vari settori.It provides the ability to comply with many laws, regulations, and guidelines established in various industries.

Assicurarsi che i backup di database vengano crittografatiEnsure that database backups are encrypted

TitleTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies SQL Azure, localeSQL Azure, OnPrem
Attributes (Attributi) (Attributi)Attributes Versione SQL: 12, versione SQL: MSSQL2014SQL Version - V12, SQL Version - MsSQL2014
RiferimentiReferences Crittografia dei backup del database SQLSQL database backup encryption
PassaggiSteps SQL Server permette di crittografare i dati durante la creazione di un backup.SQL Server has the ability to encrypt the data while creating a backup. Specificando l'algoritmo di crittografia e il componente di crittografia, ad esempio un certificato o una chiave asimmetrica, durante la creazione di un backup, è possibile creare un file di backup crittografato.By specifying the encryption algorithm and the encryptor (a Certificate or Asymmetric Key) when creating a backup, one can create an encrypted backup file.

Assicurarsi che i dati sensibili relativi all'API Web non vengano memorizzati nell'archivio del browserEnsure that sensitive data relevant to Web API is not stored in browser's storage

TitleTitle DettagliDetails
ComponenteComponent API WebWeb API
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies MVC 5, MVC 6MVC 5, MVC 6
Attributes (Attributi) (Attributi)Attributes Provider di identità: AD FS, provider di identità: Azure ADIdentity Provider - ADFS, Identity Provider - Azure AD
RiferimentiReferences N/DN/A
PassaggiSteps

In alcune implementazioni, gli elementi sensibili relativi all'autenticazione dell'API Web vengono memorizzati nell'archivio locale del browser.In certain implementations, sensitive artifacts relevant to Web API's authentication are stored in browser's local storage. Si tratta, ad esempio, di elementi di autenticazione di Azure AD come adal.idtoken, adal.nonce.idtoken, adal.access.token.key, adal.token.keys, adal.state.login, adal.session.state, adal.expiration.key e così via.E.g., Azure AD authentication artifacts like adal.idtoken, adal.nonce.idtoken, adal.access.token.key, adal.token.keys, adal.state.login, adal.session.state, adal.expiration.key etc.

Tutti questi elementi sono disponibili anche dopo la disconnessione o la chiusura del browser.All these artifacts are available even after sign out or browser is closed. Se un antagonista ottiene accesso a questi elementi, può riutilizzarli per accedere alle risorse protette, ovvero alle API.If an adversary gets access to these artifacts, he/she can reuse them to access the protected resources (APIs). Assicurarsi che tutti gli elementi sensibili relativi all'API Web non vengano memorizzati nell'archivio del browser.Ensure that all sensitive artifacts related to Web API is not stored in browser's storage. Nei casi in cui non è possibile evitare l'archiviazione lato client, ad esempio nel caso delle applicazioni a pagina singola che fanno uso di flussi OAuth/OpenID Connect impliciti e che devono archiviare i token di accesso in locale, usare le opzioni di archiviazione senza persistenza.In cases where client-side storage is unavoidable (e.g., Single Page Applications (SPA) that leverage Implicit OpenIdConnect/OAuth flows need to store access tokens locally), use storage choices with do not have persistence. Ad esempio, è preferibile usare SessionStorage anziché LocalStorage.e.g., prefer SessionStorage to LocalStorage.

EsempioExample

Il frammento JavaScript seguente proviene da una libreria di autenticazione personalizzata che archivia gli elementi di autenticazione nell'archivio locale.The below JavaScript snippet is from a custom authentication library which stores authentication artifacts in local storage. Evitare le implementazioni di questo tipo.Such implementations should be avoided.

ns.AuthHelper.Authenticate = function () {
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: ns.Configurations.Tenant,
clientId: ns.Configurations.AADApplicationClientID,
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
};

Crittografare i dati sensibili archiviati in Cosmos DBEncrypt sensitive data stored in Cosmos DB

TitleTitle DettagliDetails
ComponenteComponent Azure DocumentDBAzure Document DB
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Crittografare i dati sensibili a livello dell'applicazione prima di archiviarli in DocumentDB o in altre soluzioni di archiviazione come Archiviazione di Azure o SQL Azure.Encrypt sensitive data at application level before storing in document DB or store any sensitive data in other storage solutions like Azure Storage or Azure SQL

Usare Crittografia dischi di Azure per crittografare i dischi usati dalle macchine virtualiUse Azure Disk Encryption to encrypt disks used by Virtual Machines

TitleTitle DettagliDetails
ComponenteComponent Limite di trust della macchina virtuale IaaS di AzureAzure IaaS VM Trust Boundary
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Uso di Crittografia dischi di Azure per crittografare i dischi usati dalle macchine virtualiUsing Azure Disk Encryption to encrypt disks used by your virtual machines
PassaggiSteps

Crittografia dischi di Azure è una nuova funzionalità attualmente in anteprima.Azure Disk Encryption is a new feature that is currently in preview. Questa funzionalità consente di crittografare i dischi dati e del sistema operativo usati da una macchina virtuale IaaS.This feature allows you to encrypt the OS disks and Data disks used by an IaaS Virtual Machine. Per Windows, le unità vengono crittografate mediante la tecnologia di crittografia BitLocker standard del settore.For Windows, the drives are encrypted using industry-standard BitLocker encryption technology. Per Linux, i dischi vengono crittografati mediante la tecnologia DM-Crypt,For Linux, the disks are encrypted using the DM-Crypt technology. integrata nell'insieme di credenziali delle chiavi per consentire il controllo e la gestione delle chiavi di crittografia del disco.This is integrated with Azure Key Vault to allow you to control and manage the disk encryption keys. La soluzione Crittografia dischi di Azure supporta i tre scenari di crittografia dei clienti descritti di seguito:The Azure Disk Encryption solution supports the following three customer encryption scenarios:

  • Abilitare la crittografia in nuove VM IaaS create da file VHD crittografati dal cliente e chiavi di crittografia fornite dal cliente, che vengono archiviate nell'insieme di credenziali delle chiavi di Azure.Enable encryption on new IaaS VMs created from customer-encrypted VHD files and customer-provided encryption keys, which are stored in Azure Key Vault.
  • Abilitare la crittografia di nuove VM IaaS create da Azure Marketplace.Enable encryption on new IaaS VMs created from the Azure Marketplace.
  • Abilitare la crittografia delle VM IaaS esistenti già in esecuzione in Azure.Enable encryption on existing IaaS VMs already running in Azure.

Crittografare i segreti nelle applicazioni di Service FabricEncrypt secrets in Service Fabric applications

TitleTitle DettagliDetails
ComponenteComponent Limite di trust di Service FabricService Fabric Trust Boundary
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes Ambiente: AzureEnvironment - Azure
RiferimentiReferences Gestione dei segreti nelle applicazioni di Service FabricManaging secrets in Service Fabric applications
PassaggiSteps I segreti possono essere informazioni riservate, ad esempio le stringhe di connessione di archiviazione, le password o altri valori che non devono essere gestiti in testo normale.Secrets can be any sensitive information, such as storage connection strings, passwords, or other values that should not be handled in plain text. Usare Azure Key Vault per gestire le chiavi e i segreti nelle applicazioni di Service Fabric.Use Azure Key Vault to manage keys and secrets in service fabric applications.

Eseguire la modellazione di sicurezza e usare team e unità aziendali quando richiestoPerform security modeling and use Business Units/Teams where required

TitleTitle DettagliDetails
ComponenteComponent Dynamics CRMDynamics CRM
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Eseguire la modellazione di sicurezza e usare team e unità aziendali quando richiesto.Perform security modeling and use Business Units/Teams where required

Ridurre al minimo l'accesso alla funzionalità di condivisione nelle entità criticheMinimize access to share feature on critical entities

TitleTitle DettagliDetails
ComponenteComponent Dynamics CRMDynamics CRM
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Ridurre al minimo l'accesso alla funzionalità di condivisione nelle entità critiche.Minimize access to share feature on critical entities

Istruire gli utenti sui rischi associati alla funzionalità di condivisione di Dynamics CRM e sulle procedure di sicurezza consigliateTrain users on the risks associated with the Dynamics CRM Share feature and good security practices

TitleTitle DettagliDetails
ComponenteComponent Dynamics CRMDynamics CRM
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Istruire gli utenti sui rischi associati alla funzionalità di condivisione di Dynamics CRM e sulle procedure di sicurezza consigliate.Train users on the risks associated with the Dynamics CRM Share feature and good security practices

Includere una regola sugli standard di sviluppo che vieta la visualizzazione dei dettagli di configurazione nella gestione delle eccezioniInclude a development standards rule proscribing showing config details in exception management

TitleTitle DettagliDetails
ComponenteComponent Dynamics CRMDynamics CRM
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Includere una regola sugli standard di sviluppo che vieta la visualizzazione dei dettagli di configurazione nella gestione delle eccezioni al di fuori del contesto di sviluppo.Include a development standards rule proscribing showing config details in exception management outside development. Testare tale regola come parte di revisioni del codice o ispezioni periodiche.Test for this as part of code reviews or periodic inspection.

Usare Crittografia del servizio di archiviazione di Azure per dati inattivi (anteprima)Use Azure Storage Service Encryption (SSE) for Data at Rest (Preview)

TitleTitle DettagliDetails
ComponenteComponent Archiviazione di AzureAzure Storage
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes Tipo di archiviazione: BLOBStorageType - Blob
RiferimentiReferences Crittografia del servizio di archiviazione di Azure per dati inattivi (anteprima)Azure Storage Service Encryption for Data at Rest (Preview)
PassaggiSteps

Crittografia del servizio di archiviazione di Azure per dati inattivi consente di proteggere e salvaguardare i dati, in modo da soddisfare i criteri di sicurezza e conformità dell'organizzazione.Azure Storage Service Encryption (SSE) for Data at Rest helps you protect and safeguard your data to meet your organizational security and compliance commitments. Questa funzionalità consente ad Archiviazione di Azure di crittografare automaticamente i dati prima della persistenza nella risorsa di archiviazione e di decrittografarli prima del recupero.With this feature, Azure Storage automatically encrypts your data prior to persisting to storage and decrypts prior to retrieval. La crittografia, la decrittografia e la gestione delle chiavi sono completamente trasparenti per gli utenti.The encryption, decryption and key management is totally transparent to users. SSE viene applicato solo per BLOB in blocchi, BLOB di pagine e BLOB di aggiunta.SSE applies only to block blobs, page blobs, and append blobs. Altri tipi di dati, tra cui tabelle, code e file, non verranno crittografati.The other types of data, including tables, queues, and files, will not be encrypted.

Flusso di lavoro di crittografia e decrittografia:Encryption and Decryption Workflow:

  • Il cliente abilita la crittografia sull'account di archiviazione.The customer enables encryption on the storage account
  • Quando il cliente scrive nuovi dati (PUT Blob, PUT Block, PUT Page e così via) nell'archivio BLOB, ogni operazione di scrittura viene crittografata mediante la crittografia AES a 256 bit, una delle crittografie a blocchi più solide tra quelle disponibili.When the customer writes new data (PUT Blob, PUT Block, PUT Page, etc.) to Blob storage; every write is encrypted using 256-bit AES encryption, one of the strongest block ciphers available
  • Quando il cliente deve accedere ai dati (GET Blob e così via), i dati vengono decrittografati automaticamente prima della restituzione all'utente.When the customer needs to access data (GET Blob, etc.), data is automatically decrypted before returning to the user
  • Se la crittografia è disabilitata, le nuove operazioni di scrittura non vengono più crittografate e i dati crittografati esistenti rimangono crittografati fino a quando non vengono riscritti dall'utente.If encryption is disabled, new writes are no longer encrypted and existing encrypted data remains encrypted until rewritten by the user. Quando la crittografia è abilitata, le operazioni di scrittura nell'archivio BLOB verranno sempre crittografate.While encryption is enabled, writes to Blob storage will be encrypted. Lo stato dei dati non cambia quando l'utente abilita/disabilita la crittografia per l'account di archiviazione.The state of data does not change with the user toggling between enabling/disabling encryption for the storage account
  • Tutte le chiavi di crittografia vengono archiviate, crittografate e gestite da Microsoft.All encryption keys are stored, encrypted, and managed by Microsoft

Al momento, le chiavi usate per la crittografia sono gestite da Microsoft.Please note that at this time, the keys used for the encryption are managed by Microsoft. Microsoft genera le chiavi in origine e ne gestisce l'archiviazione protetta, nonché la rotazione regolare secondo quanto definito dai criteri interni di Microsoft.Microsoft generates the keys originally, and manage the secure storage of the keys as well as the regular rotation as defined by internal Microsoft policy. In futuro i clienti potranno gestire le relative chiavi di crittografia e verrà fornito un percorso di migrazione dalle chiavi gestite da Microsoft alle chiavi gestite dal cliente.In the future, customers will get the ability to manage their own >encryption keys, and provide a migration path from Microsoft-managed keys to customer-managed keys.

Usare la crittografia lato client per archiviare dati sensibili in Archiviazione di AzureUse Client-Side Encryption to store sensitive data in Azure Storage

TitleTitle DettagliDetails
ComponenteComponent Archiviazione di AzureAzure Storage
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Crittografia lato client e Azure Key Vault per Archiviazione di Microsoft Azure, Esercitazione: Crittografare e decrittografare i BLOB in Archiviazione di Microsoft Azure tramite Azure Key Vault, Storing Data Securely in Azure Blob Storage with Azure Encryption Extensions (Archiviazione protetta dei dati nell'archivio BLOB di Azure con le estensioni di crittografia di Azure)Client-Side Encryption and Azure Key Vault for Microsoft Azure Storage, Tutorial: Encrypt and decrypt blobs in Microsoft Azure Storage using Azure Key Vault, Storing Data Securely in Azure Blob Storage with Azure Encryption Extensions
PassaggiSteps

Il pacchetto NuGet della libreria client di archiviazione di Azure per .NET supporta la crittografia dei dati all'interno delle applicazioni client prima del caricamento in Archiviazione di Azure, nonché la decrittografia dei dati durante il download nel client.The Azure Storage Client Library for .NET Nuget package supports encrypting data within client applications before uploading to Azure Storage, and decrypting data while downloading to the client. La libreria supporta anche l'integrazione con l'insieme di credenziali delle chiavi di Azure per la gestione delle chiavi dell'account di archiviazione.The library also supports integration with Azure Key Vault for storage account key management. Ecco una breve descrizione del funzionamento della crittografia lato client:Here is a brief description of how client side encryption works:

  • Azure Storage Client SDK genera una chiave di crittografia del contenuto (CEK) che funziona come chiave simmetrica monouso.The Azure Storage client SDK generates a content encryption key (CEK), which is a one-time-use symmetric key
  • I dati del cliente vengono crittografati con la chiave CEK.Customer data is encrypted using this CEK
  • Viene quindi eseguito il wrapping della chiave CEK mediante la chiave di crittografia della chiave (KEK).The CEK is then wrapped (encrypted) using the key encryption key (KEK). La chiave KEK è identificata con un identificatore di chiave e può essere costituita da una coppia di chiavi asimmetriche o da una chiave simmetrica. Può essere gestita localmente o archiviata nell'insieme di credenziali delle chiavi di Azure.The KEK is identified by a key identifier and can be an asymmetric key pair or a symmetric key and can be managed locally or stored in Azure Key Vault. Il client di archiviazione non ha mai accesso alla chiave KEK.The Storage client itself never has access to the KEK. Richiama solo l'algoritmo di wrapping della chiave fornito dall'insieme di credenziali chiave.It just invokes the key wrapping algorithm that is provided by Key Vault. Volendo, i clienti possono scegliere di usare provider personalizzati per il wrapping o la rimozione del wrapping delle chiavi.Customers can choose to use custom providers for key wrapping/unwrapping if they want
  • I dati crittografati vengono quindi caricati nel servizio Archiviazione di Azure.The encrypted data is then uploaded to the Azure Storage service. Per informazioni dettagliate sull'implementazione, vedere i collegamenti riportati nella sezione dei riferimenti.Check the links in the references section for low-level implementation details.

Crittografare le informazioni personali o i dati sensibili scritti nell'archivio locale del telefonoEncrypt sensitive or PII data written to phones local storage

TitleTitle DettagliDetails
ComponenteComponent Client per dispositivi mobiliMobile Client
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies Generico, XamarinGeneric, Xamarin
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Gestire impostazioni e funzionalità nei dispositivi con i criteri di Microsoft Intune, Keychain ValetManage settings and features on your devices with Microsoft Intune policies, Keychain Valet
PassaggiSteps

Se l'applicazione scrive le informazioni sensibili, come le informazioni personali dell'utente, vale a dire messaggi di posta elettronica, numero di telefono, nome, cognome, preferenze e così via, nel file system del dispositivo mobile, le informazioni devono essere crittografate prima della scrittura nel file system locale.If the application writes sensitive information like user's PII (email, phone number, first name, last name, preferences etc.)- on mobile's file system, then it should be encrypted before writing to the local file system. Se si tratta di un'applicazione aziendale, valutare la possibilità di pubblicare l'applicazione tramite Microsoft Intune.If the application is an enterprise application, then explore the possibility of publishing application using Windows Intune.

EsempioExample

Per proteggere i dati sensibili, è possibile configurare Intune con i criteri di sicurezza seguenti:Intune can be configured with following security policies to safeguard sensitive data:

Require encryption on mobile device    
Require encryption on storage cards
Allow screen capture

EsempioExample

Se non si tratta di un'applicazione aziendale, usare l'archivio chiavi offerto dalla piattaforma e i portachiavi per archiviare le chiavi di crittografia, tramite l'operazione di crittografia che può essere eseguita nel file system.If the application is not an enterprise application, then use platform provided keystore, keychains to store encryption keys, using which cryptographic operation may be performed on the file system. Il frammento di codice seguente mostra come accedere alla chiave dal portachiavi usando Xamarin:Following code snippet shows how to access key from keychain using xamarin:

        protected static string EncryptionKey
        {
            get
            {
                if (String.IsNullOrEmpty(_Key))
                {
                    var query = new SecRecord(SecKind.GenericPassword);
                    query.Service = NSBundle.MainBundle.BundleIdentifier;
                    query.Account = "UniqueID";

                    NSData uniqueId = SecKeyChain.QueryAsData(query);
                    if (uniqueId == null)
                    {
                        query.ValueData = NSData.FromString(System.Guid.NewGuid().ToString());
                        var err = SecKeyChain.Add(query);
                        _Key = query.ValueData.ToString();
                    }
                    else
                    {
                        _Key = uniqueId.ToString();
                    }
                }

                return _Key;
            }
        }

Offuscare i file binari generati prima della distribuzione agli utenti finaliObfuscate generated binaries before distributing to end users

TitleTitle DettagliDetails
ComponenteComponent Client per dispositivi mobiliMobile Client
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Crypto Obfuscation For .NetCrypto Obfuscation For .Net
PassaggiSteps È necessario offuscare i file binari generati, ovvero gli assembly all'interno di APK, per impedire che gli assembly siano sottoposti a reverse engineering. A questo scopo, è possibile usare strumenti come CryptoObfuscator.Generated binaries (assemblies within apk) should be obfuscated to stop reverse engineering of assemblies.Tools like CryptoObfuscator may be used for this purpose.

Impostare clientCredentialType su Certificate o su WindowsSet clientCredentialType to Certificate or Windows

TitleTitle DettagliDetails
ComponenteComponent WCFWCF
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies .NET Framework 3.NET Framework 3
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences FortifyFortify
PassaggiSteps L'uso di UsernameToken con una password in testo normale tramite un canale non crittografato espone la password a utenti malintenzionati che potrebbero eseguire lo sniffing dei messaggi SOAP.Using a UsernameToken with a plaintext password over an unencrypted channel exposes the password to attackers who can sniff the SOAP messages. I provider di servizi che fanno uso di UsernameToken possono accettare le password inviate in testo normale,Service Providers that use the UsernameToken might accept passwords sent in plaintext. ma l'invio di password in testo normale tramite un canale non crittografato può esporre le credenziali a utenti malintenzionati che potrebbero eseguire lo sniffing dei messaggi SOAP.Sending plaintext passwords over an unencrypted channel can expose the credential to attackers who can sniff the SOAP message.

EsempioExample

La configurazione del provider di servizi WCF riportata di seguito fa uso di UsernameToken:The following WCF service provider configuration uses the UsernameToken:

<security mode="Message"> 
<message clientCredentialType="UserName" />

Impostare clientCredentialType su Certificate o su Windows.Set clientCredentialType to Certificate or Windows.

WCF: la modalità di sicurezza non è abilitataWCF-Security Mode is not enabled

TitleTitle DettagliDetails
ComponenteComponent WCFWCF
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies Generico, .NET Framework 3Generic, .NET Framework 3
Attributes (Attributi) (Attributi)Attributes Modalità di sicurezza: trasporto, modalità di sicurezza: messaggioSecurity Mode - Transport, Security Mode - Message
RiferimentiReferences MSDN, Fortify Kingdom, CoDe Magazine: Fundamentals of WCF Security (Concetti fondamentali sulla sicurezza in WCF)MSDN, Fortify Kingdom, Fundamentals of WCF Security CoDe Magazine
PassaggiSteps Non è stata definita alcuna sicurezza del trasporto o del messaggio.No transport or message security has been defined. Le applicazioni che trasmettono messaggi senza sicurezza del trasporto o del messaggio non possono garantire l'integrità o la riservatezza dei messaggi.Applications that transmit messages without transport or message security cannot guarantee the integrity or confidentiality of the messages. Quando un'associazione di sicurezza di WCF è impostata su None, la sicurezza del trasporto e quella del messaggio sono entrambe disabilitate.When a WCF security binding is set to None, both transport and message security are disabled.

EsempioExample

La configurazione seguente imposta la modalità di sicurezza su None.The following configuration sets the security mode to None.

<system.serviceModel> 
  <bindings> 
    <wsHttpBinding> 
      <binding name=""MyBinding""> 
        <security mode=""None""/> 
      </binding> 
  </bindings> 
</system.serviceModel> 

EsempioExample

Le associazioni ai servizi presentano cinque modalità di sicurezza possibili:Security Mode Across all service bindings there are five possible security modes:

  • None.None. Disabilita la sicurezza.Turns security off.
  • Transport.Transport. Usa la sicurezza del trasporto per la protezione reciproca del messaggio e dell'autenticazione.Uses transport security for mutual authentication and message protection.
  • Message.Message. Usa la sicurezza del messaggio per la protezione reciproca del messaggio e dell'autenticazione.Uses message security for mutual authentication and message protection.
  • Both.Both. Permette di specificare le impostazioni per la sicurezza del trasporto e a livello di messaggio (supportata solo in MSMQ).Allows you to supply settings for transport and message-level security (only MSMQ supports this).
  • TransportWithMessageCredential.TransportWithMessageCredential. Le credenziali vengono passate con il messaggio. La protezione dei messaggi e l'autenticazione server sono garantite dal livello di trasporto.Credentials are passed with the message and message protection and server authentication are provided by the transport layer.
  • TransportCredentialOnly.TransportCredentialOnly. Le credenziali del client vengono passate con il livello di trasporto e non viene applicata alcuna protezione al messaggio.Client credentials are passed with the transport layer and no message protection is applied. Usare la sicurezza del messaggio e del trasporto per proteggere l'integrità e riservatezza dei messaggi.Use transport and message security to protect the integrity and confidentiality of messages. La configurazione seguente indica al servizio di usare la sicurezza del trasporto con le credenziali del messaggio.The configuration below tells the service to use transport security with message credentials. <system.serviceModel> <bindings> <wsHttpBinding> <binding name=""MyBinding""> <security mode=""TransportWithMessageCredential""/> <message clientCredentialType=""Windows""/> </binding> </bindings> </system.serviceModel>