Funzionalità di sicurezza integrate nell'ADDF - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzionalità di sicurezza integrate nell'ADDF

L'Autonomous Driving Data Framework (ADDF) dispone di diverse funzionalità di sicurezza integrate. Per impostazione predefinita, queste funzionalità sono progettate per aiutarti a configurare un framework sicuro e consentire alla tua organizzazione di soddisfare i requisiti di sicurezza aziendali comuni.

Le funzionalità di sicurezza integrate sono le seguenti:

Privilegio minimo per il codice del modulo ADDF

Il privilegio minimo è la best practice di sicurezza per la concessione delle autorizzazioni minime richieste per eseguire un'attività. Per ulteriori informazioni, consulta Applicazione delle autorizzazioni del privilegio minimo. I moduli forniti dall'ADDF seguono rigorosamente il principio del privilegio minimo nel codice e nelle risorse implementate, rispettando i seguenti punti:

  • Tutte le policy (IAM) AWS Identity and Access Management generate per un modulo ADDF dispongono delle autorizzazioni minime necessarie per il caso d'uso. 

  • I AWS servizi sono configurati e implementati in base al principio del privilegio minimo. I moduli forniti dall'ADDF usano solo i servizi e le funzionalità del servizio necessari per il caso d'uso specifico.

Infrastruttura come codice

L'ADDF, come framework, è progettato per implementare i moduli ADDF come infrastruttura come codice (IaC). L'IaC elimina i processi di implementazione manuali e aiuta a prevenire gli errori e le configurazioni sbagliate che possono derivare dai processi manuali. 

L'ADDF è progettato per orchestrare e implementare moduli utilizzando tutti i framework IaC comuni. Questi includono, a titolo esemplificativo ma non esaustivo: 

È possibile utilizzare diversi framework IaC per scrivere moduli diversi e poi usare l'ADDF per implementarli.

Il framework IaC predefinito utilizzato dai moduli ADDF è AWS CDK. AWS CDK è un'astrazione orientata agli oggetti ad alto livello che è possibile utilizzare per definire risorse AWS in modo imperativo. AWS CDK applica già di default le best practice di sicurezza per diversi servizi e scenari. L'uso di AWS CDK riduce il rischio di errori nelle configurazioni di sicurezza.

Controlli di sicurezza automatizzati per l'IaC

L'utility open-source cdk-nag (GitHub), integrata nell'ADDF, controlla automaticamente i moduli ADDF basati su AWS CDK garantire l'aderenza alle best practice generali e di sicurezza. L'utility cdk-nag usa regole e pacchetti di regole per rilevare e segnalare il codice che viola le best practice. Per ulteriori informazioni sulle regole e un elenco completo delle stesse, consulta le regole di cdk-nag (GitHub).

Policy personalizzata relativa ai privilegi minimi per il ruolo di implementazione AWS CDK

L'ADDF fa ampio uso di AWS CDK v2. È necessario eseguire il bootstrap di tutti gli Account AWS ADDF a AWS CDK. Per ulteriori informazioni, consulta Bootstrapping (Processo di bootstrap) (documentazione AWS CDK).

Per impostazione predefinita, AWS CDK assegna la policy gestita AWS AdministratorAccess permissivo al ruolo di implementazione AWS CDK creato negli account sottoposti a bootstrap. Il nome completo di questo ruolo è cdk-[CDK_QUALIFIER]-cfn-exec-role-[AWS_ACCOUNT_ID]-[REGION]. AWS CDK usa questo ruolo per implementare le risorse nell'Account AWS sottoposto a bootstrap come parte del processo di implementazione di AWS CDK.

A seconda dei requisiti di sicurezza dell'organizzazione, la policy AdministratorAccess potrebbe essere troppo permissiva. Come parte del processo di bootstrap di AWS CDK, è possibile personalizzare la policy e le autorizzazioni in base a esigenze specifiche. È possibile modificare la policy sottoponendo nuovamente l'account a bootstrap con una policy appena definita utilizzando il parametro --cloudformation-execution-policies. Per ulteriori informazioni, consulta la pagina Personalizzazione del bootstrap (documentazione AWS CDK).

Nota

Sebbene questa funzionalità di sicurezza non sia specifica dell'ADDF, è stata inserita in questa sezione perché può aumentare la sicurezza complessiva dell'implementazione dell'ADDF.

Policy del privilegio minimo per il file deployspec del modulo

Ogni modulo contiene un file delle specifiche di implementazione denominato deployspec.yaml. Questo file definisce le istruzioni di implementazione per il modulo. CodeSeeder lo utilizza per implementare il modulo definito nell'account target utilizzando AWS CodeBuild. CodeSeeder assegna un ruolo di servizio predefinito a CodeBuild per implementare le risorse, come indicato nel file delle specifiche di implementazione. Questo ruolo di servizio è progettato secondo il principio del privilegio minimo. Include tutte le autorizzazioni necessarie per l'implementazione delle applicazioni AWS CDK in quanto tutti i moduli forniti da ADDF vengono creati come applicazioni AWS CDK.

Tuttavia, se è necessario eseguire comandi di fase al di fuori di AWS CDK, bisogna creare una policy IAM personalizzata invece di utilizzare il ruolo di servizio predefinito per CodeBuild. Ad esempio, se si utilizza un framework di implementazione IaC diverso da AWS CDK, come Terraform, è necessario creare una policy IAM che conceda autorizzazioni sufficienti per il funzionamento di quel framework specifico. Un altro caso in cui è necessaria una policy IAM dedicata è quando si includono chiamate dirette AWS Command Line Interface (AWS CLI) ad altri AWS servizi nei comandi di fase install, pre_build, build, o post_build. Ad esempio, è necessaria una policy personalizzata se il modulo include un comando Amazon Simple Storage Service (Amazon S3) per caricare file in un bucket S3. La policy IAM personalizzata fornisce un controllo granulare per qualsiasi comando AWS al di fuori dell'implementazione di AWS CDK. Per un esempio di policy IAM personalizzata, consulta ModuleStack (documentazione SeedFarmer). Quando crei una policy IAM personalizzata per il tuo modulo ADDF, assicurati di applicare le autorizzazioni con privilegi minimi.

Crittografia dei dati

L'ADDF archivia ed elabora dati potenzialmente sensibili. Per proteggere questi dati, i moduli forniti da SeedFarmer, CodeSeeder e dall'ADDF crittografano i dati a riposo e in transito per tutti i AWS servizi utilizzati (salvo diversa indicazione esplicita per i moduli nella cartella demo-only).

Archiviazione delle credenziali tramite Secrets Manager

L'ADDF gestisce diversi segreti per vari servizi, come Docker Hub, JupyterHub e Amazon Redshift. L'ADDF usa AWS Secrets Manager per memorizzare tutti i segreti relativi all'ADDF stesso. Questo aiuta a rimuovere i dati sensibili dal codice sorgente.

I segreti di Secrets Manager vengono archiviati solo negli account target e nella misura necessaria per il corretto funzionamento dell'account. Per impostazione predefinita, l'account toolchain non contiene segreti.

Revisioni della sicurezza di SeedFarmer e CodeSeeder

SeedFarmer e CodeSeeder (repository GitHub) vengono utilizzati per implementare l'ADDF e i relativi moduli ADDF. Questi progetti open-source sono sottoposti allo stesso regolare processo di revisione della sicurezza interna di AWS dell'ADDF, come descritto in Processo di revisione della sicurezza dell'ADDF.

Supporto del limite delle autorizzazioni per il ruolo AWS CodeBuild per CodeSeeder

I limiti delle autorizzazioni IAM sono un meccanismo di sicurezza comune che definisce le autorizzazioni massime che una policy basata sull'identità può concedere a un'entità IAM. SeedFarmer e CodeSeeder supportano un allegato al limite delle autorizzazioni IAM per ogni account target. Il limite delle autorizzazioni limita le autorizzazioni massime di qualsiasi ruolo di servizio utilizzato da CodeBuild quando CodeSeeder implementa i moduli. I limiti delle autorizzazioni IAM devono essere creati da un team di sicurezza al di fuori dell'ADDF. Gli allegati della policy per impostare il limite delle autorizzazioni IAM sono accettati come attributo all'interno del file manifesto dell'implementazione dell'ADDF, deployment.yaml. Per ulteriori informazioni, consulta Supporto per il limite delle autorizzazioni (documentazione SeedFarmer).

Di seguito è riportato il flusso di lavoro:

  1. Il tuo team di sicurezza definisce e crea un limite delle autorizzazioni IAM in base ai tuoi requisiti di sicurezza. Il limite delle autorizzazioni IAM deve essere creato singolarmente in ogni Account AWS ADDF. L'output è un elenco del nome della risorsa Amazon (ARN) per una policy per impostare il limite delle autorizzazioni.

  2. Il team addetto alla sicurezza condivide l'elenco dell'ARN per la policy con il team di sviluppatori ADDF.

  3. Il team di sviluppatori ADDF integra l'elenco dell'ARN per le policy nel file manifesto. Per un esempio di questa integrazione, vedi sample-permissionboundary.yaml (GitHub) e Manifesto dell'implementazione (documentazione SeedFarmer).

  4. Dopo una corretta implementazione, il limite delle autorizzazioni viene assegnato a tutti i ruoli di servizio utilizzati da CodeBuild per implementare i moduli.

  5. Il team di sicurezza controlla che i limiti delle autorizzazioni vengano applicati in base alle necessità.

Architettura AWS multi-account

Come definito nel pilastro della sicurezza del canone di architettura AWS, una best practice consiste nel separare risorse e carichi di lavoro in più Account AWS in base ai requisiti dell'organizzazione. Ciò è dovuto al fatto che un Account AWS funge da limite di isolamento. Per ulteriori informazioni, consulta gestione e separazione degli Account AWS. L'implementazione di questo concetto si chiama architettura multi-account. Un'architettura AWS multi-account correttamente progettata fornisce una categorizzazione del carico di lavoro e riduce la portata dell'impatto in caso di violazione della sicurezza rispetto a un'architettura ad account singolo.

L'ADDF supporta in modo nativo architetture AWS multi-account. È possibile distribuire i moduli ADDF sul numero di Account AWS necessario per i requisiti di sicurezza e di separazione delle responsabilità dell'organizzazione. È possibile implementare l'ADDF in un unico Account AWS, combinando le funzioni dell'account toolchain e dell'account target. In alternativa, è possibile creare account target individuali per i moduli o i gruppi di moduli ADDF.

L'unica restrizione da considerare è che un modulo ADDF rappresenta la più piccola unità di implementazione per ciascun Account AWS.

Per gli ambienti di produzione, si consiglia di utilizzare un'architettura multi-account composta da un account toolchain e almeno un account target. Per ulteriori informazioni, consulta Architettura dell'ADDF.

Autorizzazioni con privilegi minimi per e implementazioni multi-account

Se si usa un'architettura multi-account, SeedFarmer deve accedere agli account target per eseguire le seguenti tre azioni:

  1. Scrivere i metadati del modulo ADDF nell'account toolchain e negli account target.

  2. Leggere i metadati del modulo ADDF correnti dall'account toolchain e dagli account target.

  3. Avviare processi AWS CodeBuild negli account target, allo scopo di implementare o aggiornare i moduli.

La figura seguente mostra le relazioni tra gli account, comprese le operazioni per assumere ruoli AWS Identity and Access Management (IAM) specifici per l'ADDF.

Ruoli IAM in un'architettura AWS multi-account con un account toolchain e account target.

Queste operazioni tra account vengono realizzate utilizzando operazioni di assume-role ben definite.

  • Il ruolo IAM toolchain ADDF viene implementato nell'account toolchain. SeedFarmer assume tale ruolo. Questo ruolo dispone delle autorizzazioni per eseguire un'operazione di iam:AssumeRole e può assumere il ruolo IAM di implementazione dell'ADDF in ogni account target. Inoltre, il ruolo IAM toolchain ADDF può eseguire operazioni locali di AWS Systems Manager Parameter Store.

  • Il ruolo IAM di implementazione dell'ADDF viene implementato in ogni account target. Questo ruolo può essere assunto solo dall'account toolchain usando il ruolo IAM toolchain ADDF. Questo ruolo ha le autorizzazioni per eseguire le operazioni locali di AWS Systems Manager Parameter Store e ha le autorizzazioni per eseguire le azioni di AWS CodeBuild che avviano e descrivono i processi di CodeBuild attraverso CodeSeeder.

Questi ruoli IAM specifici per l'ADDF vengono creati come parte del processo di bootstrap dell'ADDF. Per ulteriori informazioni, consulta la pagina Bootstrap degli Account AWS nella Guida all'implementazione dell'ADDF (GitHub).

Tutte le autorizzazioni tra più account sono impostate in base al principio del privilegio minimo. Se un account target viene compromesso, l'impatto sull'altro Account AWS ADDF è minimo o nullo.

Nel caso di un'architettura ad account singolo per l'ADDF, le relazioni tra i ruoli rimangono le stesse, ma si riuniscono in un unico Account AWS.