Rileva le modifiche non gestite della configurazione di stack e risorse con il rilevamento della deviazione - AWS CloudFormation

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

Rileva le modifiche non gestite della configurazione di stack e risorse con il rilevamento della deviazione

Anche quando si gestiscono le risorse mediante CloudFormation, gli utenti possono modificare tali risorse al di fuori di CloudFormation. Gli utenti possono modificare le risorse direttamente utilizzando il servizio sottostante che ha creato la risorsa. Ad esempio, è possibile utilizzare la console Amazon EC2 per aggiornare un'istanza di server creata come parte di uno stack CloudFormation. Alcune modifiche potrebbero essere accidentali mentre altre potrebbero essere apportate intenzionalmente per rispondere a eventi operativi prioritari. Indipendentemente dalla natura delle modifiche, quelle apportate al di fuori di CloudFormation possono complicare le operazioni di aggiornamento o eliminazione di stack. È possibile utilizzare il rilevamento della deviazione per identificare risorse di stack alle quali sono state apportate modifiche di configurazione al di fuori della gestione di CloudFormation. Puoi quindi intraprendere un'azione correttiva per risincronizzare le risorse di stack con le relative definizioni nel modello di stack, ad esempio aggiornando direttamente le risorse deviate affinché corrispondano alla propria definizione di modello. La risoluzione della deviazione consente di assicurare la coerenza della configurazione e la riuscita delle operazioni di stack.

Cos'è una deviazione?

Il rilevamento della deviazione consente di stabilire se la configurazione effettiva di uno stack differisce, o risulta deviata, da quella prevista. Utilizzare CloudFormation per rilevare la deviazione su un intero stack o su una singola risorsa nello stack. Una risorsa è considerata come deviata se uno qualsiasi dei relativi valori di proprietà effettivi differisce dai valori di proprietà previsti. Ciò include l'eventuale eliminazione della proprietà o della risorsa. Uno stack è considerato come deviato se una o più delle relative risorse risultano deviate.

Per determinare se una risorsa è deviata, CloudFormation determina i valori di proprietà della risorsa previsti, come definiti nel modello di stack, e i valori specificati come parametri di modello. CloudFormation confronta quindi questi valori previsti con i valori effettivi di tali proprietà della risorsa come figurano attualmente nello stack. Una risorsa è considerata deviata se una o più delle relative proprietà sono state eliminate o se il valore delle stesse è stato modificato.

CloudFormation genera informazioni dettagliate su ogni risorsa nello stack deviato.

CloudFormation rileva la deviazione nelle risorse AWS che supportano il rilevamento della deviazione. Alle risorse che non supportano il rilevamento delle deviazione viene assegnato lo stato di deviazione NOT_CHECKED. Per un elenco delle risorse AWS che supportano il rilevamento della deviazione, consulta Supporto del tipo di risorse.

Inoltre, CloudFormation supporta le operazioni di rilevamento della deviazione per i tipi di risorse private che possono essere sottoposte a provisioning, ovvero il cui tipo di provisioning è FULLY_MUTABLE o IMMUTABLE. Per eseguire un rilevamento della deviazione su una risorsa di un tipo di risorsa privata, è necessario che per la versione predefinita del tipo di risorsa registrata nell'account sia possibile effettuare il provisioning. Per ulteriori informazioni sul tipo di provisioning delle risorse, vedi il parametro ProvisioningType dell’operazione DescribeType nella Documentazione di riferimento all’API di AWS CloudFormation e del comando DescribeType nella AWS CLI Command Reference. Per ulteriori informazioni sulle risorse private, consulta Gestione delle estensioni con il registro di sistema di CloudFormation.

Puoi eseguire il rilevamento della deviazione su stack il cui stato è: CREATE_COMPLETE, UPDATE_COMPLETE, UPDATE_ROLLBACK_COMPLETE o UPDATE_ROLLBACK_FAILED.

Quando si rileva la deviazione su uno stack, CloudFormation non la rileva sugli stack nidificati che appartengono a tale stack. Per ulteriori informazioni, consulta Dividi un modello in pezzi riutilizzabili usando stack nidificati. È invece possibile avviare un'operazione di rilevamento della deviazione direttamente sullo stack nidificato.

Nota

CloudFormation determina la deviazione solo per valori di proprietà impostati esplicitamente, tramite il modello di stack o specificando parametri di modello. Ciò non include i valori predefiniti delle proprietà di risorsa. Affinché CloudFormation monitori una proprietà della risorsa allo scopo di determinare la deviazione, impostare esplicitamente il valore di proprietà, anche se lo si imposta sul valore predefinito.

Codici di stato del rilevamento della deviazione

Le tabelle di questa sezione descrivono i vari tipi di stato utilizzati con il rilevamento della deviazione:

  • Lo stato dell'operazione di rilevamento della deviazione descrive lo stato corrente dell'operazione.

  • Drift status (Stato di deviazione

    Per i set di stack, questo descrive lo stato di deviazione del set di stack nel suo complesso, in base allo stato di deviazione delle istanze dello stack che lo appartengono.

    Per le istanze dello stack, questo descrive lo stato di deviazione dell'istanza dello stack, in base allo stato di deviazione dello stack associato.

    Lo stato di deviazione dello stack descrive lo stato di deviazione dell'intero stack, in base allo stato di deviazione delle relative risorse.

  • Lo stato di deviazione di risorsa descrive lo stato di deviazione di una singola risorsa.

La tabella seguente elenca i codici di stato che CloudFormation assegna alle operazioni di rilevamento della deviazione di stack.

Stato dell'operazione di rilevamento della deviazione Descrizione

DETECTION_COMPLETE

L'operazione di rilevamento della deviazione di stack è stata completata con successo per tutte le risorse nello stack che supportano il rilevamento della deviazione.

DETECTION_FAILED

L'operazione di rilevamento della deviazione di stack non è riuscita per almeno una risorsa nello stack. I risultati saranno disponibili per le risorse sulle quali CloudFormation ha completato con successo il rilevamento della deviazione.

DETECTION_IN_PROGRESS

L'operazione di rilevamento della deviazione di stack è attualmente in corso.

La tabella seguente elenca i codici di stato di deviazione che CloudFormation assegna agli stack.

Drift status (Stato di deviazione) Descrizione

DRIFTED

Per gli stack: lo stack differisce, o risulta deviato, dalla configurazione di modello prevista. Uno stack è considerato come deviato se una o più delle relative risorse risultano deviate.

Per le istanze dello stack: un'istanza dello stack è considerata deviata se lo stack ad esso associato è stato deviato.

Per i set di stack: un set di stack è considerato deviato se una o più istanze di stack sono state deviate.

NOT_CHECKED

CloudFormation non ha controllato se lo stack, il set di stack o l'istanza dello stack differisce dalla configurazione del modello prevista.

IN_SYNC

La configurazione corrente di ogni risorsa supportata corrisponde alla configurazione di modello prevista. Uno stack, un set di stack o un'istanza di stack senza risorse che supportano il rilevamento della deviazione avrà anche lo stato IN_SYNC.

La tabella seguente elenca i codici di stato di deviazione che CloudFormation assegna alle risorse di stack.

Stato di deviazione di risorsa Descrizione

DELETED

La risorsa differisce dalla relativa configurazione di modello prevista in quanto la risorsa è stata eliminata.

MODIFIED

La risorsa differisce, o risulta deviata, dalla relativa configurazione di modello prevista.

NOT_CHECKED

CloudFormation non ha verificato se la risorsa differisce dalla relativa configurazione di modello prevista.

IN_SYNC

La configurazione corrente della risorsa corrisponde alla configurazione di modello prevista.

La tabella seguente elenca i codici di stato di tipo di differenza che CloudFormation assegna alle proprietà di risorsa che differiscono dalla relativa configurazione di modello prevista.

Tipi di differenza di proprietà Descrizione

ADD

Un valore è stato aggiunto a una proprietà della risorsa che è un tipo di dati a matrice o elenco.

REMOVE

La proprietà è stata rimossa dalla configurazione di risorsa corrente.

NOT_EQUAL

Il valore di proprietà corrente differisce dal relativo valore previsto come definito nel modello di stack.

Considerazioni sul rilevamento della deviazione

Per eseguire con successo il rilevamento della deviazione su uno stack, un utente deve disporre delle autorizzazioni seguenti:

  • Autorizzazione di lettura per ogni risorsa che supporta il rilevamento della rilevazione inclusa nello stack. Ad esempio, se lo stack include una risorsa AWS::EC2::Instance, devi disporre dell'autorizzazione ec2:DescribeInstances per eseguire il rilevamento della deviazione sullo stack.

  • cloudformation:DetectStackDrift

  • cloudformation:DetectStackResourceDrift

  • cloudformation:BatchDescribeTypeConfigurations

Per ulteriori informazioni sull'impostazione di autorizzazioni in CloudFormation, consulta la sezione Controlla CloudFormation l'accesso con AWS Identity and Access Management.

In alcuni casi limite, CloudFormation potrebbe non essere in grado di restituire sempre risultati di deviazione accurati. Devi essere consapevole dell'esistenza di questi casi limite per interpretare in modo appropriato i risultati del rilevamento della deviazione.

  • In alcuni casi, gli oggetti contenuti in matrici di proprietà sono segnalati come deviazione, quando in realtà sono valori predefiniti forniti alla proprietà dal servizio sottostante responsabile della risorsa.

  • Alcune risorse hanno relazioni di collegamento con risorse correlate; una risorsa può quindi effettivamente collegare o rimuovere valori di proprietà per un'altra risorsa, definiti nello stesso modello o in un altro modello. Ad esempio, le risorse AWS::EC2::SecurityGroupIngress e AWS::EC2::SecurityGroupEgress possono essere utilizzate per collegare e rimuovere valori dalle risorse AWS::EC2::SecurityGroup. In questi casi, CloudFormation verifica la presenza di collegamenti nel modello di stack prima di eseguire il confronto delle deviazioni. Tuttavia, CloudFormation non può eseguire questa analisi negli stack e pertanto potrebbe non restituire risultati di deviazione accurati quando le risorse collegate si trovano in stack differenti.

    Le risorse che supportano il rilevamento della deviazione e consentono o necessitano collegamenti da altre risorse includono:

    Tipo di risorsa Tipo di risorsa di collegamento

    AWS::SNS::Topic

    AWS::SNS::Subscription

    AWS::IAM::User

    AWS::IAM::UserToGroupAddition

    AWS::IAM::Group

    AWS::IAM::Role

    AWS::IAM::User

    AWS::IAM::ManagedPolicy

    AWS::IAM::Policy

    AWS::IAM::RolePolicy

    AWS::ElasticLoadBalancingV2::Listener

    AWS::ElasticLoadBalancingV2::ListenerCertificate

    AWS::EC2::SecurityGroup

    AWS::EC2::SecurityGroupEgress

    AWS::EC2::SecurityGroupIngress

  • CloudFormation non esegue il rilevamento della deviazione sulla proprietà KMSKeyId di qualsiasi risorsa. Poiché è possibile fare riferimento alle chiavi AWS KMS mediante molteplici alias, CloudFormation non è in grado di garantire risultati di deviazione accurati per questa proprietà.

  • Esistono alcune proprietà di risorsa che è possibile specificare nel modello di stack e che, per loro natura, CloudFormation non potrà comparare alle proprietà nelle risorse di stack risultanti. Queste proprietà non possono quindi essere incluse nei risultati del rilevamento della deviazione. Tali proprietà rientrano in due categorie generali:

    • Valori di proprietà che CloudFormation non può mappare al relativo valore di proprietà di risorsa iniziale nel modello di stack.

      Ad esempio, CloudFormation non è in grado di mappare il codice sorgente di una funzione Lambda al tipo di proprietà Code della risorsa AWS::Lambda::Function e quindi CloudFormation non può includerlo nei risultati del rilevamento della deviazione.

    • Valori di proprietà che il servizio responsabile della risorsa non restituisce.

      Esistono alcuni valori di proprietà che, per concezione, non vengono mai restituiti dal servizio a cui la risorsa appartiene. Questi valori contengono in genere informazioni riservate, come password o altri dati sensibili che non devono essere esposti. Ad esempio, il servizio IAM non restituirà mai il valore della proprietà Password del tipo di proprietà AWS::IAM::User LoginProfile e quindi CloudFormation non può includerlo nei risultati del rilevamento della deviazione.

    • Gli oggetti in un array: possono essere in realtà impostazioni predefinite del servizio, non una deviazione aggiunta manualmente.

  • In caso di falsi positivi, inviaci commenti utilizzando l'apposito link per il feedback nella console CloudFormation oppure contattaci tramite AWS re:Post.

  • Alcune proprietà possono avere valori di input uguali ma non identici. Per evitare falsi positivi, è necessario assicurarsi che la configurazione prevista corrisponda alla configurazione effettiva.

    • Ad esempio, la configurazione prevista della proprietà della risorsa può essere 1.024 MB, mentre la configurazione effettiva della stessa proprietà può essere 1 GB. 1.024 MB e 1 GB sono valori uguali ma non identici.

      Quando su questa proprietà della risorsa viene eseguito il rilevamento delle deviazioni, verranno segnalate le deviazioni.

      Per evitare questo falso positivo, modifica la configurazione prevista della proprietà della risorsa a 1.024 MB, quindi esegui il rilevamento delle deviazioni.