Notifica agli utenti delle modifiche agli allarmi
In questa sezione viene spiegato come utilizzare Notifiche AWS agli utenti o Amazon Simple Notification Service per far sì che gli utenti vengano informati delle modifiche agli allarmi.
Configurazione di Notifiche AWS agli utenti
Puoi utilizzare Notifiche AWS agli utenti per configurare i canali di distribuzione per ricevere notifiche sulle modifiche dello stato degli allarmi di CloudWatch e sugli eventi di modifica della configurazione. L'utente riceverà una notifica quando un evento corrisponde a una regola specificata. È possibile ricevere notifiche per gli eventi tramite più canali, tra cui e-mail, notifiche chat di AWS Chatbot o notifiche push di AWS Console Mobile Application. È possibile visualizzare le notifiche anche nel Centro notifiche della console
Le configurazioni di notifica create con Notifiche AWS agli utenti non vengono conteggiate ai fini del limite del numero di azioni che è possibile configurare per lo stato di allarme della destinazione. Poiché Notifiche AWS agli utenti corrisponde agli eventi emessi su Amazon EventBridge, invia notifiche per tutti gli allarmi nel tuo account e nelle Regioni selezionate, a meno che tu non specifichi un filtro avanzato per consentire o negare allarmi o schemi specifici.
L'esempio seguente di filtro avanzato corrisponde a una modifica dello stato dell'allarme da OK a ALARM sull'allarme denominato ServerCpuTooHigh.
{ "detail": { "alarmName": ["ServerCpuTooHigh"], "previousState": { "value": ["OK"] }, "state": { "value": ["ALARM"] } } }
È possibile utilizzare qualsiasi proprietà pubblicata da un allarme negli eventi EventBridge per creare un filtro. Per ulteriori informazioni, consulta Eventi di allarme ed EventBridge.
Impostazione delle notifiche Amazon SNS
Puoi utilizzare Amazon Simple Notification Service per inviare messaggi da applicazione a applicazione (A2A) e messaggi da applicazione a persona (A2P), inclusi i messaggi di testo (SMS) e i messaggi e-mail. Per ulteriori informazioni, consulta le Destinazioni di eventi Amazon SNS.
Per ogni stato in cui può verificarsi un allarme, puoi configurarlo per inviare un messaggio a un argomento SNS. Ogni argomento di Amazon SNS che configuri per uno stato di un determinato allarme conta ai fini del limite del numero di azioni che puoi configurare per tale allarme e stato. Puoi inviare messaggi allo stesso argomento Amazon SNS da qualsiasi allarme presente nel tuo account e utilizzare lo stesso argomento Amazon SNS per i consumer di applicazioni (A2A) e persone (A2P). Poiché questa configurazione viene eseguita a livello di allarme, solo gli allarmi che hai configurato invieranno messaggi all'argomento Amazon SNS selezionato.
Come prima cosa crea e sottoscrivi un argomento. Puoi anche pubblicare un messaggio di prova per l'argomento. Per vedere un esempio, consulta Configurazione di un argomento Amazon SNS tramite Console di gestione AWS. Per ulteriori informazioni, consulta Nozioni di base su Amazon SNS.
In alternativa, se pensi di usare la Console di gestione AWS per creare l'allarme CloudWatch, è possibile ignorare questa procedura perché puoi creare l'argomento quando crei l'allarme.
Quando crei un allarme CloudWatch, puoi aggiungere azioni per qualsiasi stato di destinazione in cui l'allarme entra. Aggiungi una notifica Amazon SNS per lo stato di cui desideri ricevere una notifica e seleziona l'argomento Amazon SNS che hai creato nel passaggio precedente per inviare una notifica e-mail quando l'allarme entra nello stato selezionato.
Nota
Quando crei un argomento Amazon SNS, scegliere di renderlo un argomento standard o a Argomento FIFO. CloudWatch garantisce la pubblicazione di tutte le notifiche di allarme per entrambi i tipi di argomenti. Tuttavia, anche se utilizzi un argomento FIFO, in rari casi CloudWatch invia le notifiche all'argomento fuori uso. Se si utilizza un argomento FIFO, l'allarme imposta l'ID del gruppo di messaggi delle notifiche di avviso come hash dell'ARN dell'allarme.
Argomenti
Prevenzione dei problemi di sicurezza “confused deputy”
Il problema confused deputy è un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire un'azione può costringere un'entità maggiormente privilegiata a eseguire l'azione. In AWS, la rappresentazione cross-service può comportare il problema confused deputy. La rappresentazione tra servizi può verificarsi quando un servizio (il servizio chiamante) effettua una chiamata a un altro servizio (il servizio chiamato). Il servizio chiamante può essere manipolato per utilizzare le proprie autorizzazioni e agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso. Per evitare ciò, AWS fornisce strumenti per poterti a proteggere i tuoi dati per tutti i servizi con entità di servizio a cui è stato concesso l'accesso alle risorse del tuo account.
Ti consigliamo di utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn, aws:SourceAccount, aws:SourceOrgID e aws:SourceOrgPaths nelle policy delle risorse per limitare le autorizzazioni alla risorsa che Amazon SNS fornisce a un altro servizio. Utilizza aws:SourceArn per associare una sola risorsa all'accesso tra servizi. Utilizza aws:SourceAccount se desideri consentire l'associazione di qualsiasi risorsa in tale account all'uso tra servizi. Utilizza aws:SourceOrgID se desideri consentire l'associazione di qualsiasi risorsa di qualsiasi account interno a un'organizzazione all'uso tra servizi. Utilizza aws:SourceOrgPaths per associare qualsiasi risorsa dagli account in un percorso AWS Organizations all'uso tra servizi. Per ulteriori informazioni sull'utilizzo e sulla comprensione dei percorsi, consulta aws:SourceOrgPaths nella Guida per l'utente di IAM.
Il modo più efficace per proteggersi dal problema "confused deputy" è quello di usare la chiave di contesto della condizione globale aws:SourceArncon l'ARN completo della risorsa. Se non conosci l'ARN completo della risorsa o scegli più risorse, utilizza la chiave di contesto della condizione globale aws:SourceArn con caratteri jolly (*) per le parti sconosciute dell'ARN. Ad esempio, arn:aws:. servicename:*:123456789012:*
Se il valore aws:SourceArn non contiene l'ID account, ad esempio un ARN di un bucket Amazon S3, è necessario utilizzare sia aws:SourceAccount che aws:SourceArn per limitare le autorizzazioni.
Per proteggersi dal problema "confused deputy" su larga scala, nelle policy basate sulle risorse utilizza la chiave di contesto della condizione globale aws:SourceOrgID o aws:SourceOrgPaths con l'ID dell'organizzazione o il percorso dell'organizzazione della risorsa. Quando aggiungi, rimuovi o sposti degli account all'interno dell'organizzazione, le policy che includono la chiave aws:SourceOrgID o aws:SourceOrgPaths includono automaticamente anche gli account corretti e non necessitano dell'aggiornamento manuale.
Il valore di aws:SourceArn deve essere l'ARN dell'allarme che invia le notifiche.
L'esempio seguente mostra il modo in cui puoi utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn e aws:SourceAccount per prevenire il problema “confused deputy”.
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }] }
Se un ARN di allarme include caratteri non ASCII, utilizza solo la chiave di condizione globale aws:SourceAccount per limitare le autorizzazioni.
Configurazione di un argomento Amazon SNS tramite Console di gestione AWS
Come prima cosa crea e sottoscrivi un argomento. Puoi anche pubblicare un messaggio di prova per l'argomento.
Creazione di un argomento SNS
Apri la console Amazon SNS all'indirizzo https://console.aws.amazon.com/sns/v3/home
. -
Sul pannello di controllo Amazon SNS sotto Common actions (Operazioni comuni), scegli Create Topic (Crea argomento).
-
Nella finestra di dialogo Create new topic (Crea nuovo argomento) per Topic name (Nome argomento), digita un nome per l'argomento (ad esempio,
my-topic). -
Scegli Create topic (Crea argomento).
-
Copia il valore di Topic ARN (ARN argomento) per l'attività successiva (ad esempio, arn:aws:sns:us-east-1:111122223333:my-topic).
Abbonamento a un argomento SNS
Apri la console Amazon SNS all'indirizzo https://console.aws.amazon.com/sns/v3/home
. -
Nel pannello di navigazione, scegli Subscriptions (Abbonamenti), quindi Create subscription (Crea abbonamento).
-
Nella finestra di dialogo Create subscription (Crea abbonamento), per Topic ARN (ARN argomento), copia l'ARN dell'argomento creato durante la precedente attività.
-
Per Protocol, scegli Email.
-
Per Endpoint, digita un indirizzo e-mail che puoi utilizzare per ricevere la notifica, quindi scegli Create subscription (Crea abbonamento).
-
Nell'applicazione e-mail, apri il messaggio da AWS Notifications e conferma l'abbonamento.
Nel Web browser viene visualizzata una risposta di conferma di Amazon SNS.
Pubblicazione di messaggio test su un argomento SNS
-
Apri la console Amazon SNS all'indirizzo https://console.aws.amazon.com/sns/v3/home
. -
Nel pannello di navigazione, scegli Topics (Argomenti).
-
Nella pagina Topics (Argomenti), seleziona un argomento e scegli Publish to topic (Pubblica nell'argomento).
-
Nella pagina Publish a message (Pubblica un messaggio), per Subject (Oggetto), digita l'oggetto del messaggio e per Message (Messaggio) digita un breve messaggio.
-
Seleziona Publish Message (Pubblica messaggio).
-
Controlla la tua e-mail per la conferma di ricezione del messaggio.
Configurazione di un argomento SNS tramite AWS CLI
In primo luogo crea un argomento SNS, quindi pubblica un messaggio direttamente sull'argomento per verificare di averlo configurato correttamente.
Per configurare un argomento SNS
-
Crea l'argomento usando il comando create-topic come segue.
aws sns create-topic --namemy-topicAmazon SNS restituisce un ARN dell'argomento con il seguente formato:
{ "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" } -
Sottoscrivi l'indirizzo e-mail per l'argomento utilizzando il comando subscribe. Se la richiesta di abbonamento va a buon fine, riceverai un'e-mail di conferma.
aws sns subscribe --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic--protocol email --notification-endpointmy-email-addressAmazon SNS restituisce quanto segue:
{ "SubscriptionArn": "pending confirmation" } -
Nell'applicazione e-mail, apri il messaggio da AWS Notifications e conferma l'abbonamento.
Nel Web browser viene visualizzata una risposta di conferma da Amazon Simple Notification Service.
-
Controlla l'abbonamento utilizzando il comando list-subscriptions-by-topic.
aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:us-east-1:111122223333:my-topicAmazon SNS restituisce quanto segue:
{ "Subscriptions": [ { "Owner": "111122223333", "Endpoint": "me@mycompany.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic", "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3" } ] } -
(Facoltativo) Pubblica un messaggio test per l'argomento utilizzando il comando publish.
aws sns publish --message "Verification" --topic arn:aws:sns:us-east-1:111122223333:my-topicAmazon SNS restituisce quanto segue:
{ "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" } -
Controlla la tua e-mail per la conferma di ricezione del messaggio.
Schema delle notifiche Amazon SNS quando gli allarmi cambiano stato
Questa sezione elenca gli schemi delle notifiche inviate agli argomenti di Amazon SNS quando gli allarmi cambiano stato.
Schema quando un allarme per la metrica cambia stato
{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "AlarmConfigurationUpdatedTimestamp": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OldStateValue": "string", "OKActions": ["string"], "AlarmActions": ["string"], "InsufficientDataActions": ["string"], "Trigger": { "MetricName": "string", "Namespace": "string", "StatisticType": "string", "Statistic": "string", "Unit": "string or null", "Dimensions": [ { "value": "string", "name": "string" } ], "Period": "integer", "EvaluationPeriods": "integer", "DatapointsToAlarm": "integer", "ComparisonOperator": "string", "Threshold": "number", "TreatMissingData": "string", "EvaluateLowSampleCountPercentile": "string or null" } }
Schema quando un allarme composito cambia stato
{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OKActions": [String], "AlarmActions": [String], "InsufficientDataActions": [String], "OldStateValue": "string", "AlarmRule": "string", "TriggeringChildren": [String] }