Infrastruttura di sicurezza: autorizzazione - Procedure di mitigazioneSecurity Frame: Authorization | Mitigations

Prodotto o servizioProduct/Service ArticoloArticle
Limite di Trust del computerMachine Trust Boundary
Applicazione WebWeb Application
DatabaseDatabase
Gateway IoT cloudIoT Cloud Gateway
Hub eventi di AzureAzure Event Hub
Azure Document DBAzure Document DB
Limite di trust di AzureAzure Trust Boundary
Limite di trust di Service FabricService Fabric Trust Boundary
Dynamics CRMDynamics CRM
Portale di Dynamics CRMDynamics CRM Portal
Archiviazione di AzureAzure Storage
Client per dispositivi mobiliMobile Client
WCFWCF
API WebWeb API
Dispositivo IoTIoT Device
Gateway IoT sul campoIoT Field Gateway

Verificare che gli ACL appropriati siano configurati per limitare l'accesso non autorizzato ai dati nel dispositivoEnsure that proper ACLs are configured to restrict unauthorized access to data on the device

TitoloTitle 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 Verificare che gli ACL appropriati siano configurati per limitare l'accesso non autorizzato ai dati nel dispositivoEnsure that proper ACLs are configured to restrict unauthorized access to data on the device

Verificare che il contenuto sensibile dell'applicazione specifico dell'utente venga archiviato nella directory del profilo utenteEnsure that sensitive user-specific application content is stored in user-profile directory

TitoloTitle 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 Verificare che il contenuto sensibile dell'applicazione specifico dell'utente venga archiviato nella directory del profilo utente.Ensure that sensitive user-specific application content is stored in user-profile directory. Si impedisce così che un utente del computer possa accedere ai dati degli altri utenti.This is to prevent multiple users of the machine from accessing each other's data.

Verificare che le applicazioni distribuite vengano eseguite con privilegi minimiEnsure that the deployed applications are run with least privileges

TitoloTitle 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 Verificare che l'applicazione distribuita venga eseguita con privilegi minimi.Ensure that the deployed application is run with least privileges.

Applicare l'ordine dei passaggi in sequenza durante l'elaborazione di flussi di logica di businessEnforce sequential step order when processing business logic flows

TitoloTitle 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 Per verificare che questa fase sia stata eseguita da un utente reale si vuole far sì che l'applicazione elabori i flussi della logica di business solo nell'ordine dei passaggi in sequenza, con tutti i passaggi elaborati in tempi umanamente realistici e senza elaborazioni in un ordine diverso, passaggi omessi, passaggi elaborati da un altro utente o transazioni inviate troppo rapidamente.In order to verify that this stage was run through by a genuine user you want to enforce the application to only process business logic flows in sequential step order, with all steps being processed in realistic human time, and not process out of order, skipped steps, processed steps from another user, or too quickly submitted transactions.

Implementare un meccanismo di limitazione della frequenza per impedire l'enumerazioneImplement rate limiting mechanism to prevent enumeration

TitoloTitle 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 Assicurarsi che gli identificatori sensibili siano casuali.Ensure that sensitive identifiers are random. Implementare il controllo CAPTCHA nelle pagine anonime.Implement CAPTCHA control on anonymous pages. Verificare che errori ed eccezioni non rivelino dati specificiEnsure that error and exception should not reveal specific data

Verificare che sia presente l'autorizzazione necessaria e che venga seguito il principio dei privilegi minimiEnsure that proper authorization is in place and principle of least privileges is followed

TitoloTitle 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

Con questo principio, all'account utente vengono assegnati solo i privilegi essenziali per il lavoro.The principle means giving a user account only those privileges which are essential to that users work. Un utente del backup non deve ad esempio installare software, di conseguenza sarà autorizzato solo a eseguire backup e applicazioni correlate al backup.For example, a backup user does not need to install software: hence, the backup user has rights only to run backup and backup-related applications. Gli altri privilegi, ad esempio l'installazione di nuovo software, saranno bloccati.Any other privileges, such as installing new software, are blocked. Il principio è applicabile anche a un utente di PC che in genere svolge il lavoro in un normale account utente e apre un account con privilegi protetto da password (ovvero un utente con privilegi avanzati) solo quando la situazione lo rende assolutamente necessario.The principle applies also to a personal computer user who usually does work in a normal user account, and opens a privileged, password protected account (that is, a superuser) only when the situation absolutely demands it.

Questo principio è applicabile anche alle applicazioni Web.This principle can also be applied to your web-applications. Invece di dipendere esclusivamente da metodi di autenticazione basati sul ruolo che usano le sessioni, si preferisce assegnare privilegi agli utenti tramite un sistema di autenticazione basato su database.Instead of solely depending on role-based authentication methods using sessions, we rather want to assign privileges to users by means of a Database-Based Authentication system. Si continuano a usare le sessioni per determinare se l'utente ha effettuato l'accesso correttamente, solo che ora invece di assegnare all'utente un ruolo specifico gli vengono assegnati privilegi per verificare le azioni che è autorizzato a eseguire nel sistema.We still use sessions in order to identify if the user was logged in correctly, only now instead of assigning that user with a specific role we assign him with privileges to verify which actions he is privileged to perform on the system. Un grande vantaggio di questo metodo risiede nel fatto che quando a un utente devono essere assegnati meno privilegi, le modifiche verranno applicate immediatamente perché l'assegnazione non dipende dalla sessione che altrimenti dovrebbe prima scadere.Also a big pro of this method is, whenever a user has to be assigned fewer privileges your changes will be applied on the fly since the assigning does not depend on the session which otherwise had to expire first.

Le decisioni riguardanti la logica di business e l'autorizzazione di accesso alle risorse non devono basarsi sui parametri di richiesta in ingressoBusiness logic and resource access authorization decisions should not be based on incoming request parameters

TitoloTitle 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 Quando si verifica se un utente è limitato alla visualizzazione di dati specifici, le limitazioni di accesso devono essere elaborate sul lato server.Whenever you are checking whether a user is restricted to review certain data, the access restrictions should be processed server-side. L'ID utente deve essere archiviato all'interno di una variabile di sessione all'accesso e deve essere usato per recuperare i dati utente dal databaseThe userID should be stored inside of a session variable on login and should be used to retrieve user data from the database

EsempioExample

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

Ora un utente malintenzionato non può manomettere e modificare il funzionamento dell'applicazione perché l'identificatore per il recupero dei dati viene gestito sul lato server.Now an possible attacker can not tamper and change the application operation since the identifier for retrieving the data is handled server-side.

Verificare che il contenuto e le risorse non siano enumerabili o accessibili tramite browsing forzatoEnsure that content and resources are not enumerable or accessible via forceful browsing

TitoloTitle 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 file statici e di configurazione sensibili non devono essere conservati nella directory web-root.Sensitive static and configuration files should not be kept in the web-root. Per il contenuto che non deve essere pubblico, applicare i controlli di accesso appropriati oppure rimuovere il contenuto stesso.For content not required to be public, either proper access controls should be applied or removal of the content itself.

Il browsing forzato si associa di solito a tecniche di forza bruta per raccogliere informazioni tentando di accedere al maggior numero di URL possibile per enumerare directory e file in un server.Also, forceful browsing is usually combined with Brute Force techniques to gather information by attempting to access as many URLs as possible to enumerate directories and files on a server. Gli utenti malintenzionati possono cercare tutte le varianti dei file comunemente esistenti.Attackers may check for all variations of commonly existing files. La ricerca di file di password include ad esempio file come psswd.txt, password.htm, password.dat e altre varianti.For example, a password file search would encompass files including psswd.txt, password.htm, password.dat, and other variations.

Per attenuare questo problema è necessario includere funzionalità di rilevamento di tentativi di attacchi di forza bruta.To mitigate this, capabilities for detection of brute force attempts should be included.

Assicurarsi che vengano usati account con privilegi minimi per connettersi al server di databaseEnsure that least-privileged accounts are used to connect to Database server

TitoloTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Gerarchia delle autorizzazioni del database SQL, Entità a protezione diretta del database SQLSQL Database permissions hierarchy, SQL database securables
PassaggiSteps È necessario usare account con privilegi minimi per connettersi al database.Least-privileged accounts should be used to connect to the database. L'account di accesso dell'applicazione deve essere limitato nel database ed eseguire solo stored procedure specifiche.Application login should be restricted in the database and should only execute selected stored procedures. L'account di accesso dell'applicazione non deve avere accesso diretto alle tabelle.Application's login should have no direct table access.

Implementare la sicurezza a livello di riga per impedire ai tenant di accedere ai dati degli altri tenantImplement Row Level Security RLS to prevent tenants from accessing each other's data

TitoloTitle 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 Sicurezza a livello di riga di SQL ServerSQL Server Row-Level Security (RLS)
PassaggiSteps

La sicurezza a livello di riga consente ai clienti di controllare l'accesso alle righe in una tabella di database in base alle caratteristiche dell'utente che esegue una query, ad esempio l'appartenenza a un gruppo o il contesto di esecuzione.Row-Level Security enables customers to control access to rows in a database table based on the characteristics of the user executing a query (e.g., group membership or execution context).

La sicurezza a livello di riga semplifica la progettazione e la codifica della sicurezza nell'applicazione.Row-Level Security (RLS) simplifies the design and coding of security in your application. Consente di implementare limitazioni per l'accesso alle righe di dati,RLS enables you to implement restrictions on data row access. assicurando ad esempio che i collaboratori possano accedere solo alle righe di dati pertinenti per il proprio reparto o limitando l'accesso ai dati di un cliente ai soli dati di interesse per l'azienda.For example ensuring that workers can access only those data rows that are pertinent to their department, or restricting a customer's data access to only the data relevant to their company.

La logica di restrizione dell'accesso si trova nel livello database e non lontano dai dati in un altro livello applicazione.The access restriction logic is located in the database tier rather than away from the data in another application tier. Il sistema di database applica le restrizioni di accesso a ogni tentativo di accesso ai dati da qualsiasi livello.The database system applies the access restrictions every time that data access is attempted from any tier. Il sistema di sicurezza è così più affidabile e solido, grazie alla riduzione della superficie del sistema di sicurezza.This makes the security system more reliable and robust by reducing the surface area of the security system.

Si noti che la sicurezza a livello di riga come funzionalità di database predefinita è applicabile solo a SQL Server a partire dalla versione 2016 e al database SQL di Azure.Please note that RLS as an out-of-the-box database feature is applicable only to SQL Server starting 2016 and Azure SQL database. Se non viene implementata la funzionalità predefinita della sicurezza a livello di riga, assicurarsi l'accesso ai dati sia limitato tramite viste e procedureIf the out-of-the-box RLS feature is not implemented, it should be ensured that data access is restricted Using Views and Procedures

Il ruolo sysadmin deve avere solo utenti necessari validiSysadmin role should only have valid necessary users

TitoloTitle DettagliDetails
ComponenteComponent DatabaseDatabase
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Gerarchia delle autorizzazioni del database SQL, Entità a protezione diretta del database SQLSQL Database permissions hierarchy, SQL database securables
PassaggiSteps I membri del ruolo predefinito SysAdmin del server devono essere molto limitati e non contenere mai account usati dalle applicazioni.Members of the SysAdmin fixed server role should be very limited and never contain accounts used by applications. Esaminare l'elenco di utenti nel ruolo e rimuovere gli account non necessariPlease review the list of users in the role and remove any unnecessary accounts

Connettersi al gateway nel cloud usando token con privilegi minimiConnect to Cloud Gateway using least-privileged tokens

TitoloTitle DettagliDetails
ComponenteComponent Gateway IoT cloudIoT Cloud Gateway
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes Opzione gateway: Hub IoT di AzureGateway choice - Azure IoT Hub
RiferimentiReferences Controllo di accesso dell'hub IoTIot Hub Access Control
PassaggiSteps Assegnare autorizzazioni con privilegi minimi a vari componenti che si connettono al gateway cloud (hub IoT).Provide least privilege permissions to various components that connect to Cloud Gateway (IoT Hub). Esempio tipico: il componente di gestione/provisioning di dispositivi usa registryread/write, l'elaboratore eventi (ASA) usa Connessione servizio.Typical example is – Device management/provisioning component uses registryread/write, Event Processor (ASA) uses Service Connect. I singoli dispositivi si connettono usando le credenziali dispositivoIndividual devices connect using Device credentials

Usare una chiave di firma di accesso condiviso per autorizzazioni di solo invio per la generazione di token di dispositivoUse a send-only permissions SAS Key for generating device tokens

TitoloTitle DettagliDetails
ComponenteComponent Hub eventi di AzureAzure Event Hub
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Panoramica del modello di sicurezza e autenticazione di Hub eventiEvent Hubs authentication and security model overview
PassaggiSteps Viene usata una chiave di firma di accesso condiviso per generare i singoli token di dispositivo.A SAS key is used to generate individual device tokens. Usare una chiave di firma di accesso condiviso per autorizzazioni di solo invio per la generazione di token di dispositivo per un determinato server di pubblicazioneUse a send-only permissions SAS key while generating the device token for a given publisher

Non usare token di accesso che consentono l'accesso diretto all'hub eventiDo not use access tokens that provide direct access to the Event Hub

TitoloTitle DettagliDetails
ComponenteComponent Hub eventi di AzureAzure Event Hub
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Panoramica del modello di sicurezza e autenticazione di Hub eventiEvent Hubs authentication and security model overview
PassaggiSteps Non assegnare al dispositivo un token che concede l'accesso diretto all'hub eventi.A token that grants direct access to the event hub should not be given to the device. L'uso di un token con privilegi minimi per il dispositivo che fornisce l'accesso solo a un server di pubblicazione consente di identificare e aggiungere il dispositivo alla blacklist se ritenuto non autorizzato o compromesso.Using a least privileged token for the device that gives access only to a publisher would help identify and blacklist it if found to be a rogue or compromised device.

Connettersi all'hub eventi tramite chiavi di firma di accesso condiviso aventi solo le autorizzazioni minime necessarieConnect to Event Hub using SAS keys that have the minimum permissions required

TitoloTitle DettagliDetails
ComponenteComponent Hub eventi di AzureAzure Event Hub
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Panoramica del modello di sicurezza e autenticazione di Hub eventiEvent Hubs authentication and security model overview
PassaggiSteps Assegnare autorizzazioni con privilegi minimi a varie applicazioni back-end che si connettono all'hub eventi.Provide least privilege permissions to various back-end applications that connect to the Event Hub. Generare chiavi di firma di accesso condiviso separate per ogni applicazione back-end e assegnare solo le autorizzazioni necessarie, ovvero invio, ricezione o gestione.Generate separate SAS keys for each back-end application and only provide the required permissions - Send, Receive or Manage to them.

Usare i token delle risorse per la connessione ad Azure Cosmos DB, quando possibileUse resource tokens to connect to Cosmos DB whenever possible

TitoloTitle 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 un token di una risorsa è associato a una risorsa autorizzazione di DocumentDB e acquisisce la relazione tra l'utente di un database e l'autorizzazione dell'utente per una risorsa applicazione di DocumentDB specifica (ad esempio, raccolta, documento).A resource token is associated with a DocumentDB permission resource and captures the relationship between the user of a database and the permission that user has for a specific DocumentDB application resource (e.g. collection, document). Usare sempre un token delle risorse per accedere a DocumentDB se il client non è attendibile con la gestione delle chiavi master o di sola lettura, ad esempio un'applicazione per l'utente finale come un client desktop o per dispositivi mobili. Usare la chiave master o le chiavi di sola lettura di applicazioni back-end che possano archiviare queste chiavi in modo sicuro.Always use a resource token to access the DocumentDB if the client cannot be trusted with handling master or read-only keys - like an end user application like a mobile or desktop client.Use Master key or read-only keys from backend applications which can store these keys securely.

Abilitare la gestione degli accessi con granularità fine per la sottoscrizione di Azure usando il controllo degli accessi in base al ruoloEnable fine-grained access management to Azure Subscription using RBAC

TitoloTitle DettagliDetails
ComponenteComponent Limite di trust di AzureAzure Trust Boundary
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Usare le assegnazioni di ruolo per gestire l'accesso alle risorse della sottoscrizione di AzureUse role assignments to manage access to your Azure subscription resources
PassaggiSteps Il Controllo degli accessi in base al ruolo di Azure (RBAC) consente la gestione specifica degli accessi per Azure.Azure Role-Based Access Control (RBAC) enables fine-grained access management for Azure. L'uso del Controllo degli accessi in base al ruolo permette di concedere agli utenti solo il livello di accesso necessario per lavorare.Using RBAC, you can grant only the amount of access that users need to perform their jobs.

Limitare l'accesso del client alle operazioni di cluster con il controllo degli accessi in base al ruoloRestrict client's access to cluster operations using RBAC

TitoloTitle DettagliDetails
ComponenteComponent Limite di trust di Service FabricService Fabric Trust Boundary
Fase SDLSDL Phase DistribuzioneDeployment
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes Ambiente: AzureEnvironment - Azure
RiferimentiReferences Controllo degli accessi in base al ruolo per i client di Service FabricRole-based access control for Service Fabric clients
PassaggiSteps

Azure Service Fabric supporta due tipi di controllo di accesso diversi per i client connessi a un cluster di Service Fabric: amministratore e utente.Azure Service Fabric supports two different access control types for clients that are connected to a Service Fabric cluster: administrator and user. Il Controllo di accesso consente all'amministratore del cluster di limitare l'accesso a determinate operazioni del cluster per diversi gruppi di utenti, rendendo più sicuro il cluster.Access control allows the cluster administrator to limit access to certain cluster operations for different groups of users, making the cluster more secure.

Gli amministratori hanno accesso completo alle funzionalità di gestione, incluse funzionalità di lettura/scrittura.Administrators have full access to management capabilities (including read/write capabilities). Gli utenti, per impostazione predefinita, hanno solo l'accesso in lettura alle funzionalità di gestione, ad esempio funzionalità di query, e la possibilità di risolvere applicazioni e servizi.Users, by default, have only read access to management capabilities (for example, query capabilities), and the ability to resolve applications and services.

I due ruoli di client, amministratore o client, vengono specificati al momento della creazione del cluster fornendo certificati separati per ognuno di essi.You specify the two client roles (administrator and client) at the time of cluster creation by providing separate certificates for each.

Eseguire la modellazione di sicurezza e usare la sicurezza a livello di campo quando richiestoPerform security modeling and use Field Level Security where required

TitoloTitle 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 la sicurezza a livello di campo quando richiestoPerform security modeling and use Field Level Security where required

Eseguire la modellazione di sicurezza degli account del portale tenendo presente che il modello di sicurezza per il portale è diverso dagli altri componenti di CRMPerform security modeling of portal accounts keeping in mind that the security model for the portal differs from the rest of CRM

TitoloTitle DettagliDetails
ComponenteComponent Portale di Dynamics CRMDynamics CRM Portal
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 degli account del portale tenendo presente che il modello di sicurezza per il portale è diverso dagli altri componenti di CRMPerform security modeling of portal accounts keeping in mind that the security model for the portal differs from the rest of CRM

Concedere l'autorizzazione con granularità fine in un intervallo di entità nell'archiviazione tabelle di AzureGrant fine-grained permission on a range of entities in Azure Table Storage

TitoloTitle DettagliDetails
ComponenteComponent Archiviazione di AzureAzure Storage
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes Tipo di archiviazione: tabellaStorageType - Table
RiferimentiReferences Come delegare l'accesso agli oggetti nell'account di archiviazione di Azure con la firma di accesso condivisoHow to delegate access to objects in your Azure storage account using SAS
PassaggiSteps In alcuni scenari di business, l'archiviazione tabelle di Azure potrebbe essere necessaria per archiviare dati sensibili per diverse parti,In certain business scenarios, Azure Table Storage may be required to store sensitive data that caters to different parties. ad esempio, dati sensibili relativi a paesi diversi.E.g., sensitive data pertaining to different countries. In questi casi, le firme di accesso condiviso possono essere create specificando gli intervalli di chiavi di partizione e di riga, in modo che un utente possa accedere a dati specifici per un determinato paese.In such cases, SAS signatures can be constructed by specifying the partition and row key ranges, such that a user can access data specific to a particular country.

Abilitare il controllo degli accessi in base al ruolo per l'account di archiviazione di Azure usando Azure Resource ManagerEnable Role-Based Access Control (RBAC) to Azure storage account using Azure Resource Manager

TitoloTitle DettagliDetails
ComponenteComponent Archiviazione di AzureAzure Storage
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences Come proteggere l'account di archiviazione con il controllo degli accessi in base al ruoloHow to secure your storage account with Role-Based Access Control (RBAC)
PassaggiSteps

Quando si crea un nuovo account di archiviazione, si seleziona un modello di distribuzione classica o di Azure Resource Manager.When you create a new storage account, you select a deployment model of Classic or Azure Resource Manager. Il modello di distribuzione classica per la creazione di risorse in Azure consente solo l'accesso di tipo "tutto o niente" alla sottoscrizione e, di conseguenza, all'account di archiviazione.The Classic model of creating resources in Azure only allows all-or-nothing access to the subscription, and in turn, the storage account.

Con il modello di Azure Resource Manager si inserisce l'account di archiviazione in un gruppo di risorse e si controlla l'accesso al piano di gestione di quello specifico account di archiviazione tramite Azure Active Directory.With the Azure Resource Manager model, you put the storage account in a resource group and control access to the management plane of that specific storage account using Azure Active Directory. Ad esempio, è possibile concedere a utenti specifici la possibilità di accedere alle chiavi dell'account di archiviazione, mentre altri utenti possono visualizzare le informazioni sull'account di archiviazione, ma non accedere alle relative chiavi.For example, you can give specific users the ability to access the storage account keys, while other users can view information about the storage account, but cannot access the storage account keys.

Implementare il rilevamento implicito di jailbreak o rootingImplement implicit jailbreak or rooting detection

TitoloTitle DettagliDetails
ComponenteComponent Client per dispositivi mobiliMobile Client
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps

L'applicazione deve proteggere i propri dati di configurazione e dell'utente in caso di jailbreak o rooting del telefono.Application should safeguard its own configuration and user data in case if phone is rooted or jail broken. Il rooting/jailbreak implica un accesso non autorizzato che gli utenti normali non eseguono sui propri telefoni.Rooting/jail breaking implies unauthorized access, which normal users won't do on their own phones. L'applicazione deve quindi avere una logica di rilevamento implicito all'avvio, per rilevare se è stato eseguito il rooting del telefono.Therefore application should have implicit detection logic on application startup, to detect if the phone has been rooted.

La logica di rilevamento può prevedere semplicemente l'accesso a file cui normalmente solo gli utenti ROOT possono accedere, ad esempio:The detection logic can be simply accessing files which normally only root user can access, for example:

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

Se può accedere a questi file, l'applicazione è in esecuzione come utente ROOT.If the application can access any of these files, it denotes that the application is running as root user.

Riferimento debole alla classe in WCFWeak Class Reference in WCF

TitoloTitle DettagliDetails
ComponenteComponent WCFWCF
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies Generico, .NET Framework 3Generic, NET Framework 3
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences MSDN, Fortify KingdomMSDN, Fortify Kingdom
PassaggiSteps

Il sistema usa un riferimento debole alla classe che potrebbe consentire a un utente malintenzionato di eseguire codice non autorizzato.The system uses a weak class reference, which might allow an attacker to execute unauthorized code. Il programma fa riferimento a una classe definita dall'utente che non è identificata in modo univoco.The program references a user-defined class that is not uniquely identified. Quando .NET carica questa classe con identificazione debole, il caricatore di tipo CLR cerca la classe nei percorsi seguenti nell'ordine specificato:When .NET loads this weakly identified class, the CLR type loader searches for the class in the following locations in the specified order:

  1. Se l'assembly del tipo è noto, il caricatore esegue una ricerca nei percorsi di reindirizzamento del file di configurazione, in GAC, nell'assembly corrente usando le informazioni di configurazione e nella directory base dell'applicazioneIf the assembly of the type is known, the loader searches the configuration file's redirect locations, GAC, the current assembly using configuration information, and the application base directory
  2. Se l'assembly è sconosciuto, il caricatore esegue una ricerca nell'assembly corrente, in mscorlib e nel percorso restituito dal gestore eventi TypeResolveIf the assembly is unknown, the loader searches the current assembly, mscorlib, and the location returned by the TypeResolve event handler
  3. Questo ordine di ricerca CLR può essere modificato con hook quali il meccanismo di inoltro dei tipi e l'evento AppDomain.TypeResolveThis CLR search order can be modified with hooks such as the Type Forwarding mechanism and the AppDomain.TypeResolve event

Se un utente malintenzionato sfrutta l'ordine di ricerca CLR creando una classe alternativa con lo stesso nome e inserendola in un percorso alternativo che CLR caricherà per primo, il CLR eseguirà involontariamente il codice specificato dall'utente malintenzionatoIf an attacker exploits the CLR search order by creating an alternative class with the same name and placing it in an alternative location that the CLR will load first, the CLR will unintentionally execute the attacker-supplied code

EsempioExample

L'elemento <behaviorExtensions/> del file di configurazione WCF seguente indica a WCF di aggiungere una classe di comportamento personalizzata a una particolare estensione WCF.The <behaviorExtensions/> element of the WCF configuration file below instructs WCF to add a custom behavior class to a particular WCF extension.

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

L'uso di nomi completi (sicuri) identifica un tipo in modo univoco e aumenta la sicurezza del sistema.Using fully qualified (strong) names uniquely identifies a type and further increases security of your system. Usare nomi di assembly completi durante la registrazione di tipi nei file machine.config e app.config.Use fully qualified assembly names when registering types in the machine.config and app.config files.

EsempioExample

L'elemento <behaviorExtensions/> del file di configurazione WCF seguente indica a WCF di aggiungere una classe di comportamento personalizzata con riferimento sicuro a una particolare estensione WCF.The <behaviorExtensions/> element of the WCF configuration file below instructs WCF to add strongly-referenced custom behavior class to a particular WCF extension.

<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: implementare il controllo di autorizzazioneWCF-Implement Authorization control

TitoloTitle DettagliDetails
ComponenteComponent WCFWCF
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies Generico, .NET Framework 3Generic, NET Framework 3
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences MSDN, Fortify KingdomMSDN, Fortify Kingdom
PassaggiSteps

Questo servizio non usa un controllo di autorizzazione.This service does not use an authorization control. Quando un client chiama un servizio WCF specifico, WCF mette a disposizione vari schemi di autorizzazione per verificare che il chiamante sia autorizzato a eseguire il metodo del servizio nel server.When a client calls a particular WCF service, WCF provides various authorization schemes that verify that the caller has permission to execute the service method on the server. Se i controlli di autorizzazione non sono abilitati per i servizi WCF, un utente autenticato può ottenere l'escalation dei privilegi.If authorization controls are not enabled for WCF services, an authenticated user can achieve privilege escalation.

EsempioExample

La configurazione seguente indica a WCF di non verificare il livello di autorizzazione del client quando si esegue il servizio:The following configuration instructs WCF to not check the authorization level of the client when executing the service:

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

Usare uno schema di autorizzazione del servizio per verificare che il chiamante del metodo del servizio sia autorizzato a eseguire l'operazione.Use a service authorization scheme to verify that the caller of the service method is authorized to do so. WCF offre due modalità e consente la definizione di uno schema di autorizzazione personalizzato.WCF provides two modes and allows the definition of a custom authorization scheme. La modalità UseWindowsGroups usa i ruoli e gli utenti di Windows, mentre la modalità UseAspNetRoles usa un provider di ruoli ASP.NET, ad esempio SQL Server, per l'autenticazione.The UseWindowsGroups mode uses Windows roles and users and the UseAspNetRoles mode uses an ASP.NET role provider, such as SQL Server, to authenticate.

EsempioExample

La configurazione seguente indica a WCF di verificare che il client faccia parte del gruppo di amministratori prima di eseguire il servizio di aggiunta:The following configuration instructs WCF to make sure that the client is part of the Administrators group before executing the Add service:

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

Il servizio viene quindi dichiarato come indicato di seguito:The service is then declared as the following:

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

Implementare il meccanismo di autorizzazione appropriato nell'API Web ASP.NETImplement proper authorization mechanism in ASP.NET Web API

TitoloTitle DettagliDetails
ComponenteComponent API WebWeb API
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies Generico, MVC 5Generic, MVC5
Attributes (Attributi) (Attributi)Attributes N/D, provider di identità: AD FS, provider di identità: Azure ADN/A, Identity Provider - ADFS, Identity Provider - Azure AD
RiferimentiReferences Autenticazione e autorizzazione nell'API Web ASP.NETAuthentication and Authorization in ASP.NET Web API
PassaggiSteps

Le informazioni sui ruoli per gli utenti dell'applicazione possono essere ottenute da attestazioni di Azure AD o AD FS se l'applicazione si basa su di essi come provider di identità. In alternativa, le informazioni possono essere fornite dall'applicazione stessa.Role information for the application users can be derived from Azure AD or ADFS claims if the application relies on them as Identity provider or the application itself might provided it. In questi casi, l'implementazione di autorizzazione personalizzata deve convalidare le informazioni sui ruoli utente.In any of these cases, the custom authorization implementation should validate the user role information.

Le informazioni sui ruoli per gli utenti dell'applicazione possono essere ottenute da attestazioni di Azure AD o AD FS se l'applicazione si basa su di essi come provider di identità. In alternativa, le informazioni possono essere fornite dall'applicazione stessa.Role information for the application users can be derived from Azure AD or ADFS claims if the application relies on them as Identity provider or the application itself might provided it. In questi casi, l'implementazione di autorizzazione personalizzata deve convalidare le informazioni sui ruoli utente.In any of these cases, the custom authorization implementation should validate the user role information.

EsempioExample

[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
}

}

Tutti i controller e i metodi di azione da proteggere devono essere decorati con l'attributo indicato in precedenza.All the controllers and action methods which needs to protected should be decorated with above attribute.

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

Eseguire i controlli di autorizzazione nel dispositivo se il dispositivo supporta azioni che richiedono diversi livelli di autorizzazionePerform authorization checks in the device if it supports various actions that require different permission levels

TitoloTitle DettagliDetails
ComponenteComponent Dispositivo IoTIoT Device
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps

Il dispositivo deve autorizzare il chiamante per verificare se il chiamante è in possesso delle autorizzazioni necessarie per eseguire l'azione richiesta.The Device should authorize the caller to check if the caller has the required permissions to perform the action requested. Si supponga ad esempio che il dispositivo sia una serratura intelligente che può essere monitorata dal cloud e che offra funzionalità quali la chiusura remota della porta.For e.g. Lets say the device is a Smart Door Lock that can be monitored from the cloud, plus it provides functionalities like Remotely locking the door.

La serratura intelligente consente l'apertura solo quando qualcuno si avvicina fisicamente alla porta con una scheda.The Smart Door Lock provides unlocking functionality only when someone physically comes near the door with a Card. In questo caso, l'implementazione del comando e del controllo remoto deve essere eseguita in modo da non fornire funzionalità di apertura della porta perché il gateway nel cloud non è autorizzato a inviare un comando per l'apertura della porta.In this case, the implementation of the remote command and control should be done in such a way that it does not provide any functionality to unlock the door as the cloud gateway is not authorized to send a command to unlock the door.

Eseguire i controlli di autorizzazione nel gateway sul campo se il gateway supporta azioni che richiedono diversi livelli di autorizzazionePerform authorization checks in the Field Gateway if it supports various actions that require different permission levels

TitoloTitle DettagliDetails
ComponenteComponent Gateway IoT sul campoIoT Field Gateway
Fase SDLSDL Phase CompilareBuild
Tecnologie applicabiliApplicable Technologies GenericoGeneric
Attributes (Attributi) (Attributi)Attributes N/DN/A
RiferimentiReferences N/DN/A
PassaggiSteps Il gateway sul campo deve autorizzare il chiamante per verificare se il chiamante è in possesso delle autorizzazioni necessarie per eseguire l'azione richiesta.The Field Gateway should authorize the caller to check if the caller has the required permissions to perform the action requested. Devono essere ad esempio disponibili autorizzazioni diverse per un'interfaccia/API di utente amministratore usata per configurare un gateway sul campo rispetto ai dispositivi che si connettono al gateway.For e.g. there should be different permissions for an admin user interface/API used to configure a field gateway v/s devices that connect to it.