Questa è la guida per sviluppatori AWS CDK v2. Il vecchio CDK v1 è entrato in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.
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à.
AWS Cloud Development Kit (AWS CDK) È uno strumento potente che gli sviluppatori possono utilizzare per configurare Servizi AWS e fornire l'infrastruttura. AWS Con qualsiasi strumento che fornisca tale controllo e funzionalità, le organizzazioni dovranno stabilire politiche e pratiche per garantire che lo strumento venga utilizzato in modo sicuro e protetto. Ad esempio, le organizzazioni potrebbero voler limitare l'accesso degli sviluppatori a servizi specifici per assicurarsi che non possano interferire con le misure di conformità o di controllo dei costi configurate nell'account.
Spesso può esserci una tensione tra sicurezza e produttività e ogni organizzazione deve stabilire il giusto equilibrio da sola. Questo argomento fornisce le migliori pratiche di sicurezza da prendere in considerazione durante la AWS CDK creazione e l'implementazione delle proprie politiche di sicurezza. Le seguenti best practice sono linee guida generali e non rappresentano una soluzione di sicurezza completa. Poiché queste best practice potrebbero non essere appropriate o sufficienti per l'ambiente, gestiscile come considerazioni utili anziché prescrizioni.
Segui le best practice di sicurezza IAM
AWS Identity and Access Management (IAM) è un servizio web che ti aiuta a controllare in modo sicuro l'accesso alle AWS risorse. Organizzazioni, singoli utenti e utenti AWS CDK utilizzano IAM per gestire le autorizzazioni che determinano le azioni che possono essere eseguite sulle AWS risorse. Quando usi IAM, segui le best practice di sicurezza IAM. Per ulteriori informazioni, consulta le migliori pratiche di sicurezza e i casi d'uso AWS Identity and Access Management nella Guida per l'utente IAM.
Gestisci le autorizzazioni per AWS CDK
Quando utilizzi l' AWS CDK intera organizzazione per sviluppare e gestire la tua infrastruttura, ti consigliamo di prendere in considerazione i seguenti scenari in cui la gestione delle autorizzazioni sarà importante:
-
Autorizzazioni per le AWS CDK distribuzioni: queste autorizzazioni determinano chi può apportare modifiche alle AWS risorse e quali modifiche può apportare.
-
Autorizzazioni tra risorse: si tratta delle autorizzazioni che consentono le interazioni tra le AWS risorse create e gestite con. AWS CDK
Gestisci le autorizzazioni per le distribuzioni AWS CDK
Gli sviluppatori li utilizzano AWS CDK per definire l'infrastruttura localmente sui propri computer di sviluppo. Questa infrastruttura viene implementata in AWS ambienti tramite implementazioni che in genere prevedono l'utilizzo dell'interfaccia a riga di AWS CDK comando (AWS CDK CLI). Con le implementazioni, potresti voler controllare le modifiche che gli sviluppatori possono apportare ai tuoi ambienti. Ad esempio, potresti avere una risorsa Amazon Virtual Private Cloud (Amazon VPC) che non vuoi che gli sviluppatori modifichino.
Per impostazione predefinita, il CDK CLI utilizza una combinazione delle credenziali di sicurezza dell'attore e dei ruoli IAM creati durante il bootstrap per ricevere le autorizzazioni per le distribuzioni. Le credenziali di sicurezza dell'attore vengono inizialmente utilizzate per l'autenticazione e si presume quindi che i ruoli IAM eseguano varie azioni durante la distribuzione, come l'utilizzo del servizio per creare risorse. AWS CloudFormation Per ulteriori informazioni su come funzionano le distribuzioni CDK, inclusi i ruoli IAM utilizzati, consulta. Implementazione di applicazioni AWS CDK
Per limitare chi può eseguire le distribuzioni e le azioni che possono essere eseguite durante la distribuzione, considera quanto segue:
-
Le credenziali di sicurezza dell'attore sono il primo set di credenziali utilizzato per l'autenticazione. AWS Da qui, le autorizzazioni utilizzate per eseguire azioni durante la distribuzione vengono concesse ai ruoli IAM assunti durante il flusso di lavoro di distribuzione. Puoi limitare chi può eseguire le distribuzioni limitando chi può assumere questi ruoli. Puoi anche limitare le azioni che possono essere eseguite durante la distribuzione sostituendo questi ruoli IAM con i tuoi.
-
Le autorizzazioni per eseguire le distribuzioni vengono concesse a.
DeploymentActionRole
È possibile controllare le autorizzazioni per chi può eseguire le distribuzioni limitando chi può assumere questo ruolo. Utilizzando un ruolo per le distribuzioni, è possibile eseguire distribuzioni tra account poiché il ruolo può essere assunto dalle identità di un account diverso. AWS Per impostazione predefinita, questo ruolo può essere assunto da tutte le identità Account AWS associate alla dichiarazione politica appropriataAssumeRole
. -
Le autorizzazioni per la creazione e la modifica di risorse tramite AWS CloudFormation .
CloudFormationExecutionRole
Questo ruolo richiede anche il permesso di leggere dalle risorse di bootstrap. È possibile controllare le autorizzazioni di cui dispongono le distribuzioni CDK utilizzando una policy gestita perCloudFormationExecutionRole
e, facoltativamente, configurando un limite di autorizzazioni. Per impostazione predefinita, questo ruolo dispone di autorizzazioni senza limiti di autorizzazione.AdministratorAccess
-
Le autorizzazioni per interagire con le risorse di bootstrap vengono concesse a and.
FilePublishingRole
ImagePublishingRole
L'attore che esegue le distribuzioni deve avere il permesso di assumere questi ruoli. Per impostazione predefinita, possono assumere questo ruolo tutte le identità Account AWS con la dichiarazioneAssumeRole
politica appropriata. -
Le autorizzazioni per accedere alle risorse di bootstrap per eseguire ricerche vengono concesse a.
LookupRole
L'attore che esegue le distribuzioni deve avere il permesso di assumere questo ruolo. Per impostazione predefinita, questo ruolo hareadOnly
accesso alle risorse di bootstrap. Per impostazione predefinita, tutte le identità Account AWS associate alla dichiarazioneAssumeRole
politica appropriata possono assumere questo ruolo.
Per configurare le identità IAM del tuo account Account AWS con l'autorizzazione ad assumere questi ruoli, aggiungi alle identità una policy con la seguente dichiarazione di policy:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AssumeCDKRoles",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "*",
"Condition": {
"StringEquals": {
"iam:ResourceTag/aws-cdk:bootstrap-role": [
"image-publishing",
"file-publishing",
"deploy",
"lookup"
]
}
}
}]
}
Modifica le autorizzazioni per i ruoli assunti durante la distribuzione
Modificando le autorizzazioni per i ruoli assunti durante la distribuzione, è possibile gestire le azioni che possono essere eseguite durante la distribuzione. Per modificare le autorizzazioni, crei i tuoi ruoli IAM e li specifichi al momento del bootstrap dell'ambiente. Quando personalizzi il bootstrap, dovrai personalizzare la sintesi. Per istruzioni generali, vedere. Personalizza il AWS CDK bootstrap
Modificare le credenziali e i ruoli di sicurezza utilizzati durante la distribuzione
I ruoli e le risorse di bootstrap utilizzati durante le distribuzioni sono determinati dal sintetizzatore di stack CDK utilizzato. Per modificare questo comportamento, puoi personalizzare la sintesi. Per ulteriori informazioni, consulta Configurazione ed esecuzione della sintesi dello stack CDK.
Considerazioni per la concessione dell'accesso con privilegi minimi
La concessione dell'accesso con privilegi minimi è una best practice di sicurezza che consigliamo di prendere in considerazione durante lo sviluppo della strategia di sicurezza. Per ulteriori informazioni, vedere SEC03-BP02 Garantire l'accesso con privilegi minimi nella Well-Architected Framework Guide.AWS
Spesso, la concessione dell'accesso con il minimo privilegio implica limitare le policy IAM all'accesso minimo necessario per eseguire una determinata attività. Il tentativo di concedere l'accesso con il privilegio minimo tramite autorizzazioni granulari con CDK utilizzando questo approccio può influire sulle implementazioni CDK e comportare la necessità di creare autorizzazioni con un ambito più ampio di quanto si vorrebbe. Di seguito sono riportati alcuni aspetti da considerare quando si utilizza questo approccio:
-
Determinare un elenco esaustivo di autorizzazioni che consentano agli sviluppatori di utilizzare l'infrastruttura AWS CDK per il provisioning dell'infrastruttura CloudFormation è difficile e complesso.
-
Se si desidera essere precisi, le autorizzazioni potrebbero diventare troppo lunghe per rientrare nella lunghezza massima dei documenti relativi alle policy IAM.
-
Fornire un set incompleto di autorizzazioni può influire gravemente sulla produttività e sulle implementazioni degli sviluppatori.
Con il CDK, le distribuzioni vengono eseguite utilizzando. CloudFormation CloudFormation avvia una serie di chiamate AWS API in ordine utilizzando le autorizzazioni fornite. Le autorizzazioni necessarie in qualsiasi momento dipendono da molti fattori:
-
I Servizi AWS che vengono modificati. In particolare, le risorse e le proprietà che vengono utilizzate e modificate.
-
Lo stato attuale dello CloudFormation stack.
-
Problemi che possono verificarsi durante le distribuzioni e se sono necessari rollback, che richiederanno
Delete
autorizzazioni in aggiunta a.Create
Quando le autorizzazioni fornite sono incomplete, sarà necessario un intervento manuale. Di seguito sono riportati alcuni esempi:
-
Se scopri autorizzazioni incomplete durante il rollforward, dovrai sospendere la distribuzione e dedicare del tempo a discutere e fornire nuove autorizzazioni prima di continuare.
-
Se la distribuzione viene ripristinata e mancano le autorizzazioni per applicarlo, è possibile che lo CloudFormation stack rimanga in uno stato tale da richiedere molto lavoro manuale per il ripristino.
Poiché questo approccio può comportare complicazioni e limitare gravemente la produttività degli sviluppatori, non lo consigliamo. Consigliamo invece di implementare dei guardrail e di prevenire i bypass.
Implementazione dei guardrail e prevenzione del bypass
È possibile implementare barriere, regole di conformità, audit e monitoraggio utilizzando servizi come, AWS Control Tower, AWS Config e altri. AWS CloudTrail AWS Security Hub Con questo approccio, concedi agli sviluppatori il permesso di fare tutto, tranne la manomissione dei meccanismi di convalida esistenti. Gli sviluppatori hanno la libertà di implementare rapidamente le modifiche, purché rispettino le politiche. Questo è l'approccio che consigliamo quando si utilizza AWS CDK. Per ulteriori informazioni sui guardrail, consulta Controls in the Management and Governance Cloud Environment Guide.
Consigliamo inoltre di utilizzare i limiti delle autorizzazioni o le politiche di controllo dei servizi (SCPs) come metodo per implementare i guardrail. Per ulteriori informazioni sull'implementazione dei limiti delle autorizzazioni con il, consulta. AWS CDKCreare e applicare i limiti delle autorizzazioni per AWS CDK
Se utilizzi meccanismi di controllo della conformità, configurali durante la fase di avvio. Assicurati che alle identità accessibili agli sviluppatori siano associate politiche CloudFormationExecutionRole
o limiti di autorizzazione che impediscano di aggirare i meccanismi che hai messo in atto. Le politiche appropriate dipendono dai meccanismi specifici utilizzati.
Gestisci le autorizzazioni tra le risorse fornite da AWS CDK
Il modo in cui gestite le autorizzazioni tra le risorse fornite da AWS CDK dipende dal fatto che consentiate o meno al CDK di creare ruoli e politiche.
Quando si utilizzano i costrutti L2 della AWS Construct Library per definire l'infrastruttura, è possibile utilizzare i grant
metodi forniti per fornire le autorizzazioni tra le risorse. Con grant
i metodi, è possibile specificare il tipo di accesso desiderato tra le risorse e fornire ruoli IAM con privilegi minimi per raggiungere l' AWS CDK obiettivo. Questo approccio soddisfa i requisiti di sicurezza per la maggior parte delle organizzazioni e allo stesso tempo è efficiente per gli sviluppatori. Per ulteriori informazioni, consulta Definire le autorizzazioni per i costrutti L2 con AWS CDK.
Se desideri aggirare questa funzionalità sostituendo i ruoli generati automaticamente con ruoli creati manualmente, considera quanto segue:
-
I ruoli IAM dovranno essere creati manualmente, rallentando lo sviluppo delle applicazioni.
-
Quando i ruoli IAM devono essere creati e gestiti manualmente, le persone spesso combinano più ruoli logici in un unico ruolo per renderli più facili da gestire. Ciò è contrario al principio del privilegio minimo.
-
Poiché questi ruoli dovranno essere creati prima della distribuzione, le risorse a cui fare riferimento non esisteranno ancora. Pertanto, sarà necessario utilizzare i caratteri jolly, il che è contrario al principio del privilegio minimo.
-
Una soluzione alternativa comune all'uso dei caratteri jolly consiste nell'imporre che a tutte le risorse venga assegnato un nome prevedibile. Tuttavia, ciò interferisce con la capacità CloudFormation di sostituire le risorse quando necessario e può rallentare o bloccare lo sviluppo. Per questo motivo, ti consigliamo di consentire la creazione CloudFormation di nomi di risorse univoci per te.
-
Sarà impossibile eseguire una distribuzione continua poiché le azioni manuali devono essere eseguite prima di ogni implementazione.
Quando le organizzazioni vogliono impedire al CDK di creare ruoli, di solito lo fanno per impedire agli sviluppatori di creare ruoli IAM. La preoccupazione è che, concedendo agli sviluppatori il permesso di creare ruoli IAM utilizzando il AWS CDK, potrebbero eventualmente elevare i propri privilegi. Per ovviare a questo problema, consigliamo di utilizzare limiti di autorizzazione o politiche di controllo del servizio () SCPs. Con i limiti di autorizzazione, puoi impostare dei limiti per ciò che gli sviluppatori e il CDK sono autorizzati a fare. Per ulteriori informazioni sull'utilizzo dei limiti di autorizzazione con il CDK, consulta. Creare e applicare i limiti delle autorizzazioni per AWS CDK