Esercizio - Classificare i dati sensibili in un'applicazione nativa del cloud
In questo esercizio verranno classificati i tipi di dati sensibili in un'applicazione di esempio eShopLite.
L'app è in una fase di sviluppo attivo e attualmente ha due classi di dati: Product e Order. Si sta costruendo il processo di ordinazione e si vuole aggiungere il codice per classificare i tipi di dati.
In questo esercizio si vedrà come:
- Esplorare l'app corrente e i relativi tipi di dati.
- Aggiungere il codice per classificare i tipi di dati.
- Eseguire e testare l'app.
Aprire l'ambiente di sviluppo
Si può scegliere di ospitare l'esercizio in un codespace GitHub oppure di completarlo in locale in Visual Studio Code.
Per usare un codespace, creare un codespace GitHub preconfigurato da questo collegamento.
GitHub impiega qualche minuto per creare e configurare il codespace. Al termine del processo, vengono visualizzati i file di codice per l'esercizio. Il codice da usare per il resto di questo modulo si trova nella directory /dotnet-resiliency.
Per usare Visual Studio Code, creare tramite fork una copia del repository https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative nel proprio account GitHub. Quindi:
- Verificare che Docker sia in esecuzione. In una nuova finestra di Visual Studio Code premere CTRL+MAIUSC+P per aprire il riquadro comandi.
- Cercare e selezionare Dev Containers: Clone Repository in Container Volume.
- Selezionare il repository di cui è stata creata una copia tramite fork. Visual Studio Code crea il contenitore di sviluppo in locale.
Testare l'app eShopLite
Nella parte inferiore della finestra di Visual Studio Code, selezionare la scheda TERMINALE.
Passare alla cartella dell'esercizio:
cd dotnet-compliance/eShopLite
Compilare i contenitori delle app.
dotnet publish /p:PublishProfile=DefaultContainer
Eseguire l'app usando Docker:
cd .. docker compose up
Selezionare la scheda PORTE, quindi selezionare l'icona a forma di globo Apri nel browser per la porta Front End (32000).
Selezionare il collegamento Prodotti. L'app visualizza un elenco di prodotti.
Selezionare la scheda TERMINALE, quindi premere CTRL+C per arrestare l'app.
Creare tassonomie e attributi
In questa attività aggiungere il codice per creare due nuove tassonomie. Annotare quindi i tipi di dati Product e Order con gli attributi appropriati.
Nella scheda TERMINALE passare alla cartella eShopLite/DataEntities:
cd eShopLite/DataEntities/
Aggiungere il pacchetto di conformità:
dotnet add package Microsoft.Extensions.Compliance.Redaction
Nel riquadro EXPLORER fare clic con il pulsante destro del mouse sulla cartella DataEntities e quindi selezionare il Nuovo file.
Immettere Compliance.cs nel nome del file.
Immettere il seguente codice nell’editor:
using Microsoft.Extensions.Compliance.Classification; using Microsoft.Extensions.Compliance.Redaction; public static class DataClassifications { // End User Identifiable Information public static DataClassification EUIIDataClassification {get;} = new DataClassification("EUIIDataTaxonomy", "EUIIData"); // End User Pseudonymous Information public static DataClassification EUPDataClassification {get;} = new DataClassification("EUPDataTaxonomy", "EUPData"); } public class EUIIDataAttribute : DataClassificationAttribute { public EUIIDataAttribute() : base(DataClassifications.EUIIDataClassification) { } } public class EUPDataAttribute : DataClassificationAttribute { public EUPDataAttribute() : base(DataClassifications.EUPDataClassification) { } }
Il codice precedente crea due tassonomie, EUII e EUPI. Inoltre, crea due attributi, EUIIDataAttribute e EUPDataAttribute. Questi attributi vengono usati per prendere nota dei tipi di dati.
Classificare i tipi di dati
Usare questi attributi e tassonomie per classificare i tipi di dati nell'app eShopLite.
Nel riquadro EXPLORER espandere la cartella DataEntities e quindi selezionare il file Product.cs.
In questa classe non sono presenti dati sensibili specifici dei clienti, ma l'app potrebbe far trapelare dati pseudonimi se la proprietà ID prodotto è collegata a un cliente nei log.
Aggiungere l'attributo EUPData alla proprietà ProductId:
[EUPData] [Key] [JsonPropertyName("id")] public int Id { get; set; }
Il codice precedente indica al motore di offuscamento che la proprietà Id è un dato pseudonimo.
Nel riquadro EXPLORER espandere la cartella DataEntities e quindi selezionare il file Order.cs.
La classe Order contiene dati sensibili. Le proprietà CustomerName e CustomerAddress sono informazioni identificabili dall'utente finale. La proprietà Id è un'informazione pseudonima dell'utente finale.
Aggiungere l'attributo EUIIData alle proprietà CustomerName e CustomerAddress:
[EUIIData] [JsonPropertyName("customerName")] public string? CustomerName { get; set; } [EUIIData] [JsonPropertyName("customerAddress")] public string? CustomerAddress { get; set; }
Il codice precedente indica al motore di offuscamento che le proprietà CustomerName e CustomerAddress sono informazioni identificabili dall'utente finale.
Aggiungere l'attributo EUPData alla proprietà Id:
[Key] [EUPData] [JsonPropertyName("id")] public int Id { get; set; }
Il codice precedente indica al motore di offuscamento che la proprietà Id è un'informazione pseudonima dell'utente finale.
Testare le modifiche apportate all'app eShopLite
Nel riquadro TERMINALE, nella parte inferiore passare, alla cartella dotnet-compliance/eShopLite.
cd ..
Aggiornare i contenitori delle app.
dotnet publish /p:PublishProfile=DefaultContainer
Passare alla cartella dotnet-compliance e avviare l'app con Docker:
cd .. docker compose up
Se la scheda è stata chiusa nel browser, selezionare la scheda PORTE, quindi selezionare l'icona a forma di globo Apri nel browser per la porta Front End (32000).
Notare che l'app eShopLite è invariata.
Provare ad aggiungere alcuni prodotti al carrello, quindi selezionare Acquista basket.
Nella finestra TERMINALE, premere CTRL+C per arrestare l'app.
Nella prossima esercitazione si aggiungerà la registrazione modificata.