Sicurezza in AWS AppConfig - AWS AppConfig

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à.

Sicurezza in AWS AppConfig

La sicurezza del cloud AWS è la massima priorità. In qualità di AWS cliente, puoi beneficiare di un data center e di un'architettura di rete progettati per soddisfare i requisiti delle organizzazioni più sensibili alla sicurezza.

La sicurezza è una responsabilità condivisa tra AWS te e te. Il modello di responsabilità condivisa descrive questo aspetto come sicurezza del cloud e sicurezza nel cloud:

  • Sicurezza del cloud: AWS è responsabile della protezione dell'infrastruttura che gestisce AWS i servizi in Cloud AWS. AWS fornisce inoltre servizi che è possibile utilizzare in modo sicuro. I revisori esterni testano e verificano regolarmente l'efficacia della nostra sicurezza nell'ambito dei AWS Programmi di AWS conformità dei Programmi di conformità dei di . Per ulteriori informazioni sui programmi di conformità applicabili AWS Systems Manager, consulta AWS Servizi nell'ambito del programma di conformitàAWS .

  • Sicurezza nel cloud: la tua responsabilità è determinata dal AWS servizio che utilizzi. Sei anche responsabile di altri fattori, tra cui la riservatezza dei dati, i requisiti della tua azienda e le leggi e normative vigenti.

AWS AppConfig è una capacità di AWS Systems Manager. Per capire come applicare il modello di responsabilità condivisa durante l'utilizzo AWS AppConfig, consulta Security in AWS Systems Manager. Questa sezione descrive come configurare Systems Manager per soddisfare gli obiettivi di sicurezza e conformità per AWS AppConfig.

Implementazione dell'accesso con privilegi minimi

Come best practice di sicurezza, concedi le autorizzazioni minime richieste dalle identità per eseguire azioni specifiche su risorse specifiche in condizioni specifiche. AWS AppConfig L'agente offre due funzionalità che consentono all'agente di accedere al file system di un'istanza o di un contenitore: backup e scrittura su disco. Se abiliti queste funzionalità, verifica che solo l' AWS AppConfig agente disponga delle autorizzazioni di scrittura sui file di configurazione designati sul file system. Verifica inoltre che solo i processi necessari per leggere da questi file di configurazione siano in grado di farlo. L'applicazione dell'accesso con privilegio minimo è fondamentale per ridurre i rischi di sicurezza e l'impatto risultante da errori o intenzioni dannose.

Per ulteriori informazioni sull'implementazione dell'accesso con privilegi minimi, vedere SEC03-BP02 Garantire l'accesso con privilegi minimi nella Guida per l'utente.AWS Well-Architected Tool Per ulteriori informazioni sulle funzionalità dell' AWS AppConfig agente menzionate in questa sezione, vedere. Utilizzo di un manifesto per abilitare funzionalità di recupero aggiuntive

Crittografia dei dati a riposo per AWS AppConfig

AWS AppConfig fornisce la crittografia di default per proteggere i dati inattivi dei clienti utilizzando Chiavi di proprietà di AWS.

Chiavi di proprietà di AWS— AWS AppConfig utilizza queste chiavi per impostazione predefinita per crittografare automaticamente i dati distribuiti dal servizio e ospitati nell'archivio AWS AppConfig dati. Non è possibile visualizzare, gestire Chiavi di proprietà di AWS, utilizzare o controllare il loro utilizzo. Tuttavia, non è necessario effettuare alcuna operazione o modificare programmi per proteggere le chiavi che eseguono la crittografia dei dati. Per ulteriori informazioni, consulta la sezione Chiavi di proprietà di AWS nella Guida per gli sviluppatori di AWS Key Management Service .

Sebbene non sia possibile disabilitare questo livello di crittografia o selezionare un tipo di crittografia alternativo, è possibile specificare una chiave gestita dal cliente da utilizzare quando si salvano i dati di configurazione ospitati nel AWS AppConfig data store e quando si distribuiscono i dati di configurazione.

Chiavi gestite dal cliente: AWS AppConfig supporta l'uso di una chiave simmetrica gestita dal cliente che puoi creare, possedere e gestire per aggiungere un secondo livello di crittografia rispetto a quello esistente. Chiave di proprietà di AWS Avendo il pieno controllo di questo livello di crittografia, è possibile eseguire operazioni quali:

  • Stabilire e mantenere politiche e sovvenzioni chiave

  • Stabilire e mantenere politiche IAM

  • Abilitare e disabilitare le policy delle chiavi

  • Ruotare i materiali crittografici delle chiavi

  • Aggiungere tag

  • Creare alias delle chiavi

  • Pianificare l’eliminazione delle chiavi

Per ulteriori informazioni, consulta Customer managed key nella AWS Key Management Service Developer Guide.

AWS AppConfig supporta chiavi gestite dal cliente

AWS AppConfig offre supporto per la crittografia a chiave gestita dal cliente per i dati di configurazione. Per le versioni di configurazione salvate nell'archivio dati AWS AppConfig ospitato, i clienti possono impostare un profilo di configurazione KmsKeyIdentifier sul profilo di configurazione corrispondente. Ogni volta che viene creata una nuova versione dei dati di configurazione utilizzando l'CreateHostedConfigurationVersionAPIoperazione, AWS AppConfig genera una chiave AWS KMS dati da cui KmsKeyIdentifier crittografare i dati prima di archiviarli. Quando si accede successivamente ai dati, durante le StartDeployment API operazioni GetHostedConfigurationVersion o, AWS AppConfig decrittografa i dati di configurazione utilizzando le informazioni sulla chiave dati generata.

AWS AppConfig offre inoltre supporto per la crittografia a chiave gestita dal cliente per i dati di configurazione distribuiti. Per crittografare i dati di configurazione, i clienti possono fornire una procedura KmsKeyIdentifier di implementazione. AWS AppConfig genera la chiave AWS KMS dati con questa chiave KmsKeyIdentifier per crittografare i dati relativi all'StartDeploymentAPIoperazione.

AWS AppConfig accesso alla crittografia

Quando crei una chiave gestita dal cliente, utilizza la seguente politica di chiave per assicurarti che la chiave possa essere utilizzata.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_ID:role/role_name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ]

Per crittografare i dati di configurazione ospitati con una chiave gestita dal cliente, la chiamata di identità CreateHostedConfigurationVersion richiede la seguente dichiarazione di politica, che può essere assegnata a un utente, gruppo o ruolo:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:GenerateDataKey, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Se utilizzi un segreto di Secrets Manager o qualsiasi altro dato di configurazione crittografato con una chiave gestita dal cliente, retrievalRoleArn dovrai kms:Decrypt decrittografare e recuperare i dati.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:account_ID:configuration source/object" } ] }

Quando si richiama l' AWS AppConfig StartDeploymentAPIoperazione, la chiamata di identità StartDeployment richiede la seguente IAM politica, che può essere assegnata a un utente, gruppo o ruolo:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Quando si chiama l' AWS AppConfig GetLatestConfigurationAPIoperazione, la chiamata di identità GetLatestConfiguration richiede la seguente politica che può essere assegnata a un utente, gruppo o ruolo:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Contesto di crittografia

Un contesto di crittografia è un set facoltativo di coppie chiave-valore che contengono ulteriori informazioni contestuali sui dati.

AWS KMS utilizza il contesto di crittografia come dati autenticati aggiuntivi per supportare la crittografia autenticata. Quando includi un contesto di crittografia in una richiesta di crittografia dei dati, AWS KMS associa il contesto di crittografia ai dati crittografati. Per decrittografare i dati, nella richiesta deve essere incluso lo stesso contesto di crittografia.

AWS AppConfig contesto di crittografia: AWS AppConfig utilizza un contesto di crittografia in tutte le operazioni AWS KMS crittografiche per i dati e le distribuzioni di configurazione ospitati crittografati. Il contesto contiene una chiave corrispondente al tipo di dati e un valore che identifica l'elemento di dati specifico.

Monitoraggio delle chiavi di crittografia per AWS

Quando utilizzi chiavi gestite AWS KMS dal cliente con AWS AppConfig, puoi utilizzare AWS CloudTrail o Amazon CloudWatch Logs per tenere traccia delle richieste AWS AppConfig inviate a AWS KMS.

L'esempio seguente è un CloudTrail evento per Decrypt monitorare AWS KMS le operazioni richiamate per accedere AWS AppConfig ai dati crittografati dalla chiave gestita dal cliente:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "appconfig.amazonaws.com" }, "eventTime": "2023-01-03T02:22:28z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "Region", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:appconfig:deployment:arn": "arn:aws:appconfig:Region:account_ID:application/application_ID/environment/environment_ID/deployment/deployment_ID" }, "keyId": "arn:aws:kms:Region:account_ID:key/key_ID", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "account_ID", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:Region:account_ID:key_ID" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "account_ID", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }

Accesso AWS AppConfig tramite un'interfaccia endpoint ()AWS PrivateLink

Puoi usare AWS PrivateLink per creare una connessione privata tra il tuo VPC e AWS AppConfig. Puoi accedere AWS AppConfig come se fossi nel tuoVPC, senza l'uso di un gateway, NAT dispositivo, VPN connessione o AWS Direct Connect connessione Internet. Le istanze del tuo account VPC non hanno bisogno di indirizzi IP pubblici per accedervi AWS AppConfig.

Stabilisci questa connessione privata creando un endpoint di interfaccia attivato da AWS PrivateLink. In ciascuna sottorete viene creata un'interfaccia di rete endpoint da abilitare per l'endpoint di interfaccia. Queste sono interfacce di rete gestite dal richiedente che fungono da punto di ingresso per il traffico destinato a AWS AppConfig.

Per ulteriori informazioni, consulta la sezione Accesso a Servizi AWS tramite AWS PrivateLink nella Guida di AWS PrivateLink .

Considerazioni per AWS AppConfig

Prima di configurare un endpoint di interfaccia per AWS AppConfig, consulta le considerazioni nella Guida.AWS PrivateLink

AWS AppConfig supporta l'effettuazione di chiamate verso appconfige appconfigdataservizi tramite l'endpoint dell'interfaccia.

Crea un endpoint dell'interfaccia per AWS AppConfig

Puoi creare un endpoint di interfaccia per AWS AppConfig utilizzare la VPC console Amazon o AWS Command Line Interface (AWS CLI). Per ulteriori informazioni, consulta la sezione Creazione di un endpoint di interfaccia nella Guida per l'utente di AWS PrivateLink .

Crea un endpoint di interfaccia per AWS AppConfig utilizzare i seguenti nomi di servizio:

com.amazonaws.region.appconfig
com.amazonaws.region.appconfigdata

Se abiliti private DNS per l'endpoint dell'interfaccia, puoi effettuare API richieste AWS AppConfig utilizzando il nome regionale DNS predefinito. Ad esempio appconfig.us-east-1.amazonaws.com e appconfigdata.us-east-1.amazonaws.com.

Creazione di una policy dell' endpoint per l'endpoint dell'interfaccia

Una policy per gli endpoint è una IAM risorsa che è possibile collegare a un endpoint di interfaccia. La policy predefinita per gli endpoint consente l'accesso completo AWS AppConfig tramite l'endpoint dell'interfaccia. Per controllare l'accesso consentito AWS AppConfig dal tuo dispositivoVPC, allega una policy personalizzata per l'endpoint all'endpoint di interfaccia.

Una policy di endpoint specifica le informazioni riportate di seguito:

  • I principali che possono eseguire azioni (IAMutenti Account AWS e IAM ruoli).

  • Le azioni che possono essere eseguite.

  • Le risorse in cui è possibile eseguire le operazioni.

Per ulteriori informazioni, consulta la sezione Controllo dell'accesso ai servizi con policy di endpoint nella Guida di AWS PrivateLink .

Esempio: politica VPC degli endpoint per le azioni AWS AppConfig

Di seguito è riportato l'esempio di una policy dell'endpoint personalizzata. Se collegata a un endpoint dell'interfaccia, questa policy concede l'accesso alle operazioni AWS AppConfig elencate per tutti i principali su tutte le risorse.

{ "Statement": [ { "Principal": "*", "Effect": "Allow", "Action": [ "appconfig:CreateApplication", "appconfig:CreateEnvironment", "appconfig:CreateConfigurationProfile", "appconfig:StartDeployment", "appconfig:GetLatestConfiguration" "appconfig:StartConfigurationSession" ], "Resource":"*" } ] }

Rotazione dei tasti di Secrets Manager

Questa sezione descrive importanti informazioni di sicurezza sull' AWS AppConfig integrazione con Secrets Manager. Per informazioni su Secrets Manager, vedi Cos'è AWS Secrets Manager? nella Guida AWS Secrets Manager per l'utente.

Impostazione della rotazione automatica dei segreti di Secrets Manager distribuita da AWS AppConfig

La rotazione è il processo di aggiornamento periodico di un segreto archiviato in Secrets Manager. Quando si ruota un segreto, vengono aggiornati sia il segreto in Secrets Manager che le credenziali del database o del servizio. È possibile configurare la rotazione automatica dei segreti in Secrets Manager utilizzando una AWS Lambda funzione per aggiornare il segreto e il database. Per ulteriori informazioni, consulta Ruotare AWS Secrets Manager i segreti nella Guida per l'AWS Secrets Manager utente.

Per abilitare la rotazione delle chiavi dei segreti di Secrets Manager distribuiti da AWS AppConfig, aggiorna la funzione di rotazione Lambda e distribuisci il segreto ruotato.

Nota

Implementa il tuo profilo di AWS AppConfig configurazione dopo che il segreto è stato ruotato e completamente aggiornato alla nuova versione. Puoi determinare se il segreto è ruotato perché lo stato VersionStage cambia da a. AWSPENDING AWSCURRENT Il completamento della rotazione segreta avviene all'interno della finish_secret funzione Secrets Manager Rotation Templates.

Ecco un esempio di funzione che avvia una AWS AppConfig distribuzione dopo la rotazione di un segreto.

import time import boto3 client = boto3.client('appconfig') def finish_secret(service_client, arn, new_version): """Finish the rotation by marking the pending secret as current This method finishes the secret rotation by staging the secret staged AWSPENDING with the AWSCURRENT stage. Args: service_client (client): The secrets manager service client arn (string): The secret ARN or other identifier new_version (string): The new version to be associated with the secret """ # First describe the secret to get the current version metadata = service_client.describe_secret(SecretId=arn) current_version = None for version in metadata["VersionIdsToStages"]: if "AWSCURRENT" in metadata["VersionIdsToStages"][version]: if version == new_version: # The correct version is already marked as current, return logger.info("finishSecret: Version %s already marked as AWSCURRENT for %s" % (version, arn)) return current_version = version break # Finalize by staging the secret version current service_client.update_secret_version_stage(SecretId=arn, VersionStage="AWSCURRENT", MoveToVersionId=new_version, RemoveFromVersionId=current_version) # Deploy rotated secret response = client.start_deployment( ApplicationId='TestApp', EnvironmentId='TestEnvironment', DeploymentStrategyId='TestStrategy', ConfigurationProfileId='ConfigurationProfileId', ConfigurationVersion=new_version, KmsKeyIdentifier=key, Description='Deploy secret rotated at ' + str(time.time()) ) logger.info("finishSecret: Successfully set AWSCURRENT stage to version %s for secret %s." % (new_version, arn))