Benachrichtigen von Benutzern über Alarmänderungen
In diesem Abschnitt wird erklärt, wie Sie AWS-Benutzerbenachrichtigungen oder Amazon Simple Notification Service verwenden können, um Benutzer über Alarmänderungen zu informieren.
Einrichten von AWS-Benutzerbenachrichtigungen
Sie können AWS-Benutzerbenachrichtigungen verwenden, um Zustellungskanäle einzurichten, die über CloudWatch-Alarmzustandsänderungen und Konfigurationsänderungen informieren.. Sie erhalten eine Benachrichtigung, wenn ein Ereignis einer von Ihnen angegebenen Regel entspricht. Sie können Benachrichtigungen für Ereignisse über mehrere Kanäle erhalten, einschließlich E-Mail, AWS-Chatbot-Chat-Benachrichtigungen oder Push-Benachrichtigungen der mobilen AWS-Konsolenanwendung. Benachrichtigungen werden auch im Console Notifications Center
Die Benachrichtigungskonfigurationen, die Sie mit den AWS-Benutzerbenachrichtigungen erstellen, zählen nicht zur Begrenzung der Anzahl der Aktionen, die Sie pro Zielalarmstatus konfigurieren können. Da AWS-Benutzerbenachrichtigungen mit den an Amazon EventBridge gesendeten Ereignissen übereinstimmen, werden Benachrichtigungen für alle Alarme in Ihrem Konto und ausgewählten Regionen gesendet, es sei denn, Sie geben einen erweiterten Filter an, um bestimmte Alarme oder Muster zuzulassen oder abzulehnen.
Das folgende Beispiel für einen erweiterten Filter entspricht einer Änderung des Alarmstatus von OK zu ALARM bei dem Alarm namens ServerCpuTooHigh.
{ "detail": { "alarmName": ["ServerCpuTooHigh"], "previousState": { "value": ["OK"] }, "state": { "value": ["ALARM"] } } }
Sie können alle Eigenschaften verwenden, die durch einen Alarm in EventBridge-Ereignissen veröffentlicht wurden, um einen Filter zu erstellen. Weitere Informationen finden Sie unter Alarmereignisse und EventBridge.
Einrichten von Amazon-SNS-Benachrichtigungen
Sie können Amazon Simple Notification Service verwenden, um sowohl Nachrichten von Anwendung zu Anwendung (A2A) als auch von Anwendung zu Person (A2P) zu versenden, einschließlich mobiler Textnachrichten (SMS) und E-Mail-Nachrichten. Weitere Informationen finden Sie unter Amazon-SNS-Ereignisziele.
Für jeden Zustand, den ein Alarm annehmen kann, können Sie den Alarm so konfigurieren, dass er eine Nachricht an ein SNS-Thema sendet. Jedes Amazon-SNS-Thema, das Sie für einen Status eines bestimmten Alarms konfigurieren, zählt zur Begrenzung der Anzahl der Aktionen, die Sie für diesen Alarm und diesen Status konfigurieren können. Sie können Nachrichten an dasselbe Amazon-SNS-Thema von allen Alarmen in Ihrem Konto aus senden und dasselbe Amazon-SNS-Thema sowohl für Anwendungs- (A2A) als auch für Personenkunden (A2P) verwenden. Da diese Konfiguration auf Alarmebene vorgenommen wird, senden nur die von Ihnen konfigurierten Alarme Nachrichten an das ausgewählte Amazon-SNS-Thema.
Zunächst erstellen und abonnieren Sie ein Thema. Sie können optional eine Testnachricht für das Thema veröffentlichen. Ein Beispiel finden Sie unter Einrichten eines Amazon-SNS-Themas mit AWS-Managementkonsole. Weitere Informationen finden Sie auch unter Erste Schritte mit Amazon SNS.
Wenn Sie planen, die AWS-Managementkonsole für die Erstellung Ihres CloudWatch-Alarms zu verwenden, können Sie diesen Vorgang auch überspringen, denn Sie können das Thema erstellen, wenn Sie den Alarm erstellen.
Wenn Sie einen CloudWatch-Alarm erstellen, können Sie Aktionen für jeden Zielstatus, in den der Alarm eintritt, Aktionen hinzufügen. Fügen Sie eine Amazon-SNS-Benachrichtigung für den Status hinzu, über den Sie benachrichtigt werden möchten, und wählen Sie das Amazon-SNS-Thema, das Sie im vorherigen Schritt erstellt haben, um eine E-Mail-Benachrichtigung zu senden, wenn der Alarm in den ausgewählten Status eintritt.
Anmerkung
Wenn Sie ein Amazon-SNS-Thema erstellen, wählen Sie, ob es ein Standardthema oder ein FIFO-Thema wird. CloudWatch garantiert die Veröffentlichung aller Alarmbenachrichtigungen bei beiden Arten von Themen. Selbst wenn Sie ein FIFO-Thema verwenden, sendet CloudWatch in seltenen Fällen die Benachrichtigungen an das inaktive Thema. Wenn Sie ein FIFO-Thema verwenden, legt der Alarm die Nachrichtengruppen-ID der Alarmbenachrichtigungen als Hash des ARN des Alarms fest.
Themen
Verhindern von Confused-Deputy-Sicherheitsproblemen
Das Confused-Deputy-Problem ist ein Sicherheitsproblem, bei dem eine Entität, die nicht über die Berechtigung zum Ausführen einer Aktion verfügt, eine Entität mit größeren Rechten zwingen kann, die Aktion auszuführen. In AWS kann der serviceübergreifende Identitätswechsel zu Confused-Deputy-Problem führen. Ein dienstübergreifender Identitätswechsel kann auftreten, wenn ein Dienst (der Anruf-Dienst) einen anderen Dienst anruft (den aufgerufenen Dienst). Der aufrufende Service kann manipuliert werden, um seine Berechtigungen zu verwenden, um Aktionen auf die Ressourcen eines anderen Kunden auszuführen, für die er sonst keine Zugriffsberechtigung haben sollte. Um dies zu verhindern, bietet AWS Tools, mit denen Sie Ihre Daten für alle Services mit Serviceprinzipalen schützen können, die Zugriff auf Ressourcen in Ihrem Konto erhalten haben.
Wir empfehlen die Verwendung der globalen Bedingungskontextschlüssel aws:SourceArn, aws:SourceAccount, aws:SourceOrgID und aws:SourceOrgPaths in ressourcenbasierten Richtlinien, um die Berechtigungen, die Amazon SNS einem anderen Service erteilt, auf eine bestimmte Ressource zu beschränken. Verwenden Sie aws:SourceArn, um nur einer Ressource den serviceübergreifenden Zugriff zuzuordnen. Verwenden Sie aws:SourceAccount, um jede Ressource in diesem Konto der serviceübergreifenden Nutzung zuzuordnen. Verwenden Sie aws:SourceOrgID, damit alle Ressourcen von allen Konten innerhalb einer Organisation der serviceübergreifenden Nutzung zugeordnet werden können. Verwenden Sie aws:SourceOrgPaths, um beliebige Ressourcen von Konten innerhalb eines AWS Organizations-Pfades der serviceübergreifenden Nutzung zuzuordnen. Weitere Informationen zu Pfaden und deren Verwendung finden Sie unter aws:SourceOrgPaths im IAM-Benutzerhandbuch.
Der effektivste Weg, um sich vor dem Confused-Deputy-Problem zu schützen, ist die Verwendung des globalen Bedingungskontext-Schlüssels aws:SourceArn mit dem vollständigen ARN der Ressource. Wenn Sie den vollständigen ARN der Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den globalen Kontextbedingungsschlüssel aws:SourceArn mit Platzhalterzeichen (*) für die unbekannten Teile des ARN. Beispiel, arn:aws:. servicename:*:123456789012:*
Wenn der aws:SourceArn-Wert die Konto-ID nicht enthält, z. B. einen Amazon-S3-Bucket-ARN, müssen Sie sowohl aws:SourceAccount als auch aws:SourceArn verwenden, um Berechtigungen einzuschränken.
Um sich vor dem Confused-Deputy-Problem im großen Maßstab zu schützen, verwenden Sie den globalen Bedingungskontextschlüssel aws:SourceOrgID oder aws:SourceOrgPaths mit der Organisations-ID oder dem Organisationspfad der Ressource in Ihren ressourcenbasierten Richtlinien. Richtlinien, die den Schlüssel aws:SourceOrgID oder aws:SourceOrgPaths enthalten, schließen automatisch die richtigen Konten ein und Sie müssen die Richtlinien nicht manuell aktualisieren, wenn Sie Konten in Ihrer Organisation hinzufügen, entfernen oder verschieben.
Der Wert von aws:SourceArn muss der ARN des Alarms sein, der Benachrichtigungen versendet.
Das folgende Beispiel zeigt, wie Sie die globalen Bedingungskontextschlüssel aws:SourceArn und aws:SourceAccount in CloudWatch verwenden können, um das Confused-Deputy-Problem zu vermeiden.
{ "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" } } }] }
Wenn ein Alarm-ARN irgendwelche Nicht-ASCII-Zeichen enthält, verwenden Sie nur den globalen Bedingungsschlüssel aws:SourceAccount zur Begrenzung der Berechtigungen.
Einrichten eines Amazon-SNS-Themas mit AWS-Managementkonsole
Zunächst erstellen und abonnieren Sie ein Thema. Sie können optional eine Testnachricht für das Thema veröffentlichen.
So erstellen Sie ein SNS-Thema
Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home
. -
Wählen Sie auf dem Amazon-SNS-Dashboard unter Common actions die Option Create Topic.
-
Geben Sie im Dialogfeld Create new topic (Neues Thema erstellen) unter Topic name (Themaname) einen Namen für das Thema ein (z. B.
my-topic). -
Wählen Sie Thema erstellen aus.
-
Kopieren Sie den Topic ARN (Themen-ARN) für die nächste Aufgabe (z. B. arn:aws:sns:us-east-1:111122223333:my-topic).
So abonnieren Sie ein SNS-Thema
Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home
. -
Wählen Sie im Navigationsbereich Abonnements und Abonnement erstellen aus.
-
Fügen Sie im Dialogfeld für Create subscription für Topic ARN den ARN des Themas ein, den Sie im vorherigen Schritt erstellt haben.
-
Wählen Sie unter Protocol (Protokoll) die Option Email (E-Mail) aus.
-
Geben Sie für Endpoint (Endpunkt) eine E-Mail-Adresse ein, mit der Sie die Benachrichtigung erhalten können, und wählen Sie dann Create subscription (Abonnement erstellen).
-
Öffnen Sie in Ihrer E-Mail-Anwendung die Nachricht von AWS Notifications und bestätigen Sie Ihr Abonnement.
Ihr Webbrowser zeigt eine Bestätigungsantwort vom Amazon SNS an.
So veröffentlichen Sie eine Testnachricht in einem SNS-Thema
-
Öffnen Sie die Amazon SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home
. -
Wählen Sie im Navigationsbereich Themen aus.
-
Wählen Sie auf der Seite Topics ein Thema und dann Publish to topic aus.
-
Geben Sie auf der Seite Publish a message (Veröffentlichen einer Nachricht) unter Subject (Betreff) eine Betreffzeile für Ihre Nachricht und unter Message (Nachricht) eine kurze Nachricht ein.
-
Wählen Sie Publish Message aus.
-
Überprüfen Sie Ihren E-Mail-Eingang, um zu bestätigen, dass Sie die Nachricht erhalten haben.
Einrichten eines SNS-Themas mit AWS CLI
Zuerst erstellen Sie ein SNS-Thema und veröffentlichen dann eine Nachricht direkt an das Thema, um zu testen, ob Sie es richtig konfiguriert haben.
So richten Sie ein SNS-Thema ein
-
Erstellen Sie das Thema mit dem Befehl create-topic wie folgt.
aws sns create-topic --namemy-topicAmazon SNS gibt einen ARN für das Thema im folgenden Format zurück:
{ "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" } -
Abonnieren Sie die E-Mail-Adresse für das Thema mit dem Befehl subscribe. Wenn die Abonnementanfrage erfolgreich ist, erhalten Sie eine Bestätigungs-E-Mail.
aws sns subscribe --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic--protocol email --notification-endpointmy-email-addressAmazon SNS gibt Folgendes zurück:
{ "SubscriptionArn": "pending confirmation" } -
Öffnen Sie in Ihrer E-Mail-Anwendung die Nachricht von AWS Notifications und bestätigen Sie Ihr Abonnement.
Ihr Webbrowser zeigt eine Bestätigungsantwort vom Amazon Simple Notification Service an.
-
Aktivieren Sie das Abonnement mit dem Befehl list-subscriptions-by-topic.
aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:us-east-1:111122223333:my-topicAmazon SNS gibt Folgendes zurück:
{ "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" } ] } -
(Optional) Veröffentlichen Sie mit dem Befehl publish eine Testnachricht für das Thema.
aws sns publish --message "Verification" --topic arn:aws:sns:us-east-1:111122223333:my-topicAmazon SNS gibt Folgendes zurück.
{ "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" } -
Überprüfen Sie Ihren E-Mail-Eingang, um zu bestätigen, dass Sie die Nachricht erhalten haben.
Schema der Amazon-SNS-Benachrichtigungen, wenn sich der Alarmstatus ändert
In diesem Abschnitt sind die Schemas der Benachrichtigungen aufgeführt, die an Amazon-SNS-Themen gesendet werden, wenn sich der Alarmstatus ändert.
Schema, wenn sich der Status eines Metrikalarms ändert
{ "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, wenn sich der Status eines zusammengesetzten Alarms ändert
{ "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] }