Amazon DVA-C02: Sicurezza, IAM, KMS e Gestione dei segreti (Cognito, Secrets Manager, SSM) — Guida allo studio
Fa parte della AWS Developer Associate DVA-C02 — Guida allo studio. Esercitati con risposte verificate nel centro esami Amazon, oppure fai test cronometrati su ExamRoll.io.
IAM, ruoli, policy e accesso cross-account
La gestione delle identità e degli accessi (Identity and Access Management) dovrebbe essere progettata secondo il principio del privilegio minimo (least privilege), con credenziali a breve termine e una netta separazione tra identità di servizio e umane. Per le applicazioni in esecuzione su EC2, ECS o Lambda, è preferibile utilizzare ruoli di istanza/task/funzione anziché incorporare chiavi di accesso (access keys); gli SDK di AWS utilizzano automaticamente la catena di provider di credenziali fornita dall’ambiente e aggiornano le credenziali temporanee. L’accesso cross-account dovrebbe utilizzare AWS STS AssumeRole (API: sts:AssumeRole) con una policy di attendibilità (trust policy) esplicita per il ruolo nell’account di destinazione e una policy IAM nell’account chiamante che limiti quali ARN di ruolo possono essere assunti. Quando si richiede l’MFA per operazioni sensibili, è necessario imporla tramite una condizione nella policy del ruolo o della risorsa, utilizzando aws:MultiFactorAuthPresent o richiedendo sts:GetSessionToken per gli utenti umani. Per i client web o mobile, utilizzare AssumeRoleWithWebIdentity (sts:AssumeRoleWithWebIdentity) tramite Cognito Identity o provider federati per evitare credenziali a lungo termine. Attenzione alle trappole comuni: azioni/risorse eccessivamente permissive con wildcard, fare affidamento su policy basate sulle risorse (resource-based policies) senza condizioni di principal corrispondenti, e dimenticare di includere le condizioni SourceAccount o aws:SourceVpc per l’accesso cross-account a S3 o KMS. Per il debug, utilizzare l’IAM policy simulator e sts:GetCallerIdentity. Considerare l’uso di service control policies (SCP) a livello di organizzazione per imporre dei guardrail e un deny esplicito per azioni rischiose come kms:CreateGrant o iam:CreateAccessKey, dove appropriato.
KMS, pattern di crittografia e controllo dell’accesso alle chiavi
Utilizzare AWS KMS per la crittografia envelope (envelope encryption): chiamare GenerateDataKey/GenerateDataKeyWithoutPlaintext per produrre una chiave dati (data key) per la crittografia lato client o lato server, quindi chiamare Encrypt/Decrypt per payload di piccole dimensioni o utilizzare la chiave dati per la crittografia di massa (bulk encryption). Scegliere la CMK corretta: gestita da AWS (AWS owned) per convenienza, gestita da AWS per i servizi (AWS managed, aws/*) per l’integrazione con i servizi, o gestita dal cliente (customer-managed) per il pieno controllo e la rotazione. Le policy delle chiavi (key policies) sono il controllo primario per KMS; associare policy IAM che consentano kms:Decrypt, kms:Encrypt e utilizzare i grant quando è necessario un uso temporaneo e delegato della chiave per servizi come operazioni supportate da CloudHSM o invocazioni cross-account di Lambda. Includere un EncryptionContext per legare il testo cifrato (ciphertext) al contesto di utilizzo e richiederlo tramite una condizione kms:EncryptionContextEquals per una maggiore sicurezza. L’utilizzo cross-account di KMS richiede voci esplicite nella policy della chiave che concedano autorizzazioni al principal o al ruolo esterno e, in alcuni casi, i permessi CreateGrant/RetireGrant. Per l’auditing e la forensica, abilitare i data event di CloudTrail per KMS e S3 per catturare le chiamate GenerateDataKey e Decrypt; i log di CloudTrail includeranno l’arn:aws:kms e dettagli su quale principal ha utilizzato la chiave. Le insidie comuni (gotchas) includono dimenticare di consentire kms:CreateGrant per i servizi che utilizzano i grant “dietro le quinte”, non effettuare la rotazione delle chiavi gestite dal cliente e presumere che le sole policy IAM possano autorizzare operazioni KMS senza voci appropriate nella policy della chiave.
Gestione dei segreti: Secrets Manager vs Parameter Store
Secrets Manager e Systems Manager Parameter Store offrono entrambi l’archiviazione crittografata di segreti, ma differiscono per funzionalità e profilo di costo: Secrets Manager supporta la rotazione automatica (con template di rotazione Lambda), il versioning integrato e la replica, con un costo per segreto; Parameter Store (SecureString) rientra nel piano gratuito (free-tier) per molti parametri ed è più adatto per configurazioni semplici. L’accesso è controllato da policy IAM che concedono secretsmanager:GetSecretValue o ssm:GetParameter con WithDecryption=true, e la chiave KMS sottostante deve consentire l’operazione di decrypt per il principal. Utilizzare policy basate sulle risorse (resource-based policies) su Secrets Manager per i segreti cross-account, oppure la replica con la funzione di replicazione dei segreti. Quando si utilizzano gli SDK, chiamare secretsmanager.getSecretValue({ SecretId }) o ssm.getParameter({ Name, WithDecryption: true }) ed evitare di registrare i valori dei segreti nei log; impostare le variabili d’ambiente di Lambda per utilizzare riferimenti a Secrets Manager o Parameter Store con risoluzione dinamica in CloudFormation o SAM, oppure recuperare i segreti tramite SDK all’avvio. Gli errori comuni degli sviluppatori includono l’archiviazione di segreti in chiaro (plaintext) nel controllo di versione, l’affidarsi a variabili d’ambiente di Lambda per dati molto sensibili senza la protezione di KMS, e policy IAM eccessivamente permissive, come concedere secretsmanager:* a ruoli con ampi privilegi. Per la rotazione, assicurarsi che la Lambda di rotazione abbia i permessi corretti secretsmanager:RotateSecret e kms:GenerateDataKey e che il codice dell’applicazione possa reinizializzare le connessioni senza interruzioni quando le credenziali cambiano.
← Distribuzione e CI · Tutti i domini · Monitoraggio →
Esercitati su queste domande → · Pratica cronometrata su ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Supera l'esame →