Sie können die JSON-Konfiguration bearbeiten, die verwendet wird, wenn Sie Ereignisweiterleitung zu Amazon SNS-Themen aktiviert haben. Sie definiert, welche Bedingungen ein Ereignis erfüllen muss, um in ein Thema
veröffentlicht zu werden. Die Konfigurationssprache ist nach Amazon's Policy-Sprache für SNS modelliert.
Jedes Feld wird unten angegeben. Die grundlegende SNS-Konfiguration sieht folgendermaßen
aus:
{
"Version": "2014-09-24",
"Statement": [statement1, statement2, ...]
}
Beispiele finden Sie unter Beispiel für die SNS-Konfiguration.
Version
Das Version-Element gibt die Version der Konfigurationssprache an.
HinweisDer einzige derzeit gültige Wert von "Version" ist der String "2014-09-24".
|
"Version": "2014-09-24",
Erklärung
Das Erklärung-Element ist ein Array von einzelnen Anweisungen. Jede einzelne Anweisung ist ein
eigenständiges JSON-Objekt, das das SNS-Thema angibt, an das gesendet werden soll,
wenn ein Ereignis bestimmte Bedingungen erfüllt.
"Statement": [{...}, {...}, ...]
Eine einzelne Anweisung hat die Form:
{
"Topic": "destination topic",
"Condition": {conditions event must meet to be published to the destination topic}
}
Thema
Das Topic-Element muss der Amazon Resource Name des SNS-Themas sein, an das veröffentlicht
werden soll.
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic"
Bedingung:
Das !!Condition!!-Element ist der komplexeste Teil der Konfiguration. Es enthält eine oder mehrere
Bedingungen, die ein Ereignis erfüllen muss, um im Thema veröffentlicht zu werden.
Jede Bedingung kann ein oder mehrere Schlüssel-Wert-Paare haben, die das Ereignis
erfüllen muss (oder nicht erfüllen muss, je nach Art der Bedingung), um in das Thema
aufgenommen zu werden. Schlüssel sind jede gültige Ereigniseigenschaft. (Für Ereigniseigenschaften
siehe Ereignisse im JSON-Format). Gültige Werte variieren je nach Schlüssel. Einige Schlüssel unterstützen mehrere
Werte.
"Condition": {
"ConditionName": {
"key1": [value1, value2],
"key2": value3
},
"ConditionName2": {
"key3": [value4]
},
...
}
Gültige Bedingungsnamen und deren Syntax werden unten beschrieben.
Bool
Die Bool-Bedingung führt einen Booleschen Abgleich durch. Um übereinzustimmen, muss ein Ereignis
eine Eigenschaft mit dem gewünschten Booleschen Wert haben. Wenn die Eigenschaft im
Ereignis existiert, aber selbst kein Boolescher Wert ist, wird die Eigenschaft wie
folgt getestet:
- Zahlen, die gleich 0 sind, werden als falsch bewertet. Zahlen, die nicht gleich 0 sind, werden als wahr bewertet.
- Leere Zeichenfolgen und die speziellen Zeichenfolgen "false" und "0" werden als falsch ausgewertet. Andere Zeichenfolgen werden als wahr ausgewertet.
- Jeder andere Eigenschaftswert in einem Ereignis kann nicht in einen Booleschen Wert umgewandelt werden und wird nicht übereinstimmen.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, die
eine "DetectOnly"-Eigenschaft mit dem Wert false haben:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"Bool": {
"DetectOnly": false
}
}
}
]
}
Existiert
Die Exists-Bedingung prüft auf das Vorhandensein oder Nichtvorhandensein einer Eigenschaft in
einem Ereignis. Der Wert der Eigenschaft wird nicht berücksichtigt.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Schweregrad" hat, aber nicht die Eigenschaft "Titel":
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"Exists": {
"Severity": true,
"Title": false
}
}
}
]
}
IpAdresse
Die IpAddress-Bedingung prüft, ob der Wert einer Ereigniseigenschaft eine IP-Adresse in einem Bereich
im CIDR-Format ist oder genau einer einzelnen IP-Adresse entspricht.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "DestinationIP" mit einer IP-Adresse im Bereich 10.0.1.0/24
oder zu 10.0.0.5 hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"IpAddress": {
"DestinationIP": ["10.0.1.0/24", "10.0.0.5"]
}
}
}
]
}
KeineIpAdresse
Die NotIpAddress-Bedingung prüft, ob der Wert einer Ereigniseigenschaft keine IP-Adresse in einem
der angegebenen IP-Adressbereiche ist.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "DestinationIP" mit einer IP-Adresse hat, die nicht im
Bereich 10.0.0.0/8 liegt:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NotIpAddress": {
"DestinationIP": "10.0.0.0/8"
}
}
}
]
}
NumericEquals
Die NumericEquals-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft einem oder mehreren
gewünschten Werten entspricht. Wenn die Eigenschaft im Ereignis existiert, aber selbst
kein numerischer Wert ist, wird die Eigenschaft wie folgt getestet:
- Zeichenfolgen werden in Zahlen umgewandelt. Zeichenfolgen, die nicht in Zahlen umgewandelt werden können, stimmen nicht überein.
- Jeder andere Eigenschaftswert in einem Ereignis kann nicht in eine Zahl umgewandelt werden und wird nicht übereinstimmen.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Protokoll" mit dem Wert 6 oder 17 hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericEquals": {
"Protocol": [6, 17]
}
}
}
]
}
NumericNotEquals
Die NumericNotEquals-Bedingung prüft, ob der Zahlenwert einer Ereigniseigenschaft nicht einem der unerwünschten
Werte entspricht.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
die Eigenschaft "Protokoll" ungleich 6 ist und die Eigenschaft "Risiko" ungleich 2
oder 3 ist:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericNotEquals": {
"Protocol": 6,
"Risk" : [2, 3]
}
}
}
]
}
NumericGreaterThan
Die NumericGreaterThan-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft strikt größer als
ein gewünschter Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst
kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals
beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Protokoll" mit einem Wert größer als 6 hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericGreaterThan": {
"Protocol": 6
}
}
}
]
}
NumericGreaterThanEquals
Die NumericGreaterThanEquals-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft größer oder gleich
einem gewünschten Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst
kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals
beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Nummer" mit einem Wert größer oder gleich 600 hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericGreaterThanEquals": {
"Number": 600
}
}
}
]
}
NumericLessThan
Die NumericLessThan-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft strikt kleiner
als ein gewünschter Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst
kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals
beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Nummer" mit einem Wert größer als 1000 hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericLessThan": {
"Number": 1000
}
}
}
]
}
NumericLessThanEquals
Die NumericLessThanEquals-Bedingung prüft, ob der numerische Wert einer Ereigniseigenschaft kleiner oder gleich
einem gewünschten Wert ist. Wenn die Eigenschaft im Ereignis existiert, aber selbst
kein numerischer Wert ist, wird sie in eine Zahl umgewandelt, wie bei NumericEquals
beschrieben.
Erlaubt mehrere Werte? Nein
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Nummer" mit einem Wert kleiner oder gleich 500 hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericLessThanEquals": {
"Number": 500
}
}
}
]
}
StringEquals
Die StringEquals-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft genau gleich
oder mehr gewünschte Werte ist.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "EventType" gleich "SystemEvent" und die Eigenschaft
"TargetType" gleich "User" oder "Role" hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringEquals": {
"EventType": ["SystemEvent"],
"TargetType" : ["User", "Role"]
}
}
}
]
}
StringNichtGleich
Die StringNotEquals-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft keinem unerwünschten
Satz von Werten entspricht.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "EventType" ungleich "PacketLog" oder "IntegrityEvent"
hat:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringNotEquals": {
"EventType": ["PacketLog", "IntegrityEvent"]
}
}
}
]
}
StringEqualsIgnoreCase
Die StringEqualsIgnoreCase-Bedingung ist dieselbe wie die StringEquals-Bedingung, außer dass der Zeichenfolgenvergleich
ohne Berücksichtigung der Groß- und Kleinschreibung erfolgt.
StringNotEqualsIgnoreCase
Die StringNotEqualsIgnoreCase-Bedingung ist dieselbe wie die StringNotEquals-Bedingung, außer dass die Zeichenfolgenübereinstimmung
ohne Berücksichtigung der Groß- und Kleinschreibung erfolgt.
StringLike
Die StringLike-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft gleich oder mehr
gewünschte Werte enthält, wobei die gewünschten Werte das Platzhalterzeichen '*' enthalten
können, um eine beliebige Anzahl von Zeichen zu entsprechen, oder '?' um ein einzelnes
Zeichen zu entsprechen. Zeichenfolgenvergleiche sind groß- und kleinschreibungssensitiv.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Titel" hat, die den String "Benutzer" oder "Rolle" enthält:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringLike": {
"Title": ["\*User\*", "\*Role\*"]
}
}
}
]
}
StringNotLike
Die StringNotLike-Bedingung prüft, ob der Zeichenfolgenwert einer Ereigniseigenschaft nicht mit einem
der unerwünschten Werte übereinstimmt, wobei die Werte das Platzhalterzeichen '*'
enthalten können, um eine beliebige Anzahl von Zeichen zu entsprechen, oder '?' für
ein einzelnes Zeichen. Zeichenfolgenvergleiche sind groß- und kleinschreibungssensitiv.
Erlaubt mehrere Werte? Ja
Das folgende Beispiel zeigt eine Konfiguration, die alle Ereignisse außer dem Ereignis
"Systemeinstellungen gespeichert" veröffentlicht:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringNotLike": {
"Title":"System Settings Saved"
}
}
}
]
}
Das nächste Beispiel zeigt eine Konfiguration, die Ereignisse veröffentlicht, wenn
das Ereignis die Eigenschaft "Titel" hat, die nicht mit "Benutzer" beginnt und nicht
mit "Erstellt" endet:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringNotLike": {
"Title": ["User\*", "\*Created"]
}
}
}
]
}
Mehrere Anweisungen vs. mehrere Bedingungen
Wenn Sie mehrere Anweisungen für dasselbe SNS-Thema erstellen, werden diese Anweisungen
so bewertet, als ob sie durch "oder" verbunden wären. Wenn eine Anweisung mehrere
Bedingungen enthält, werden diese Bedingungen so bewertet, als ob sie durch "und"
verbunden wären.
Mehrere Anweisungen
Dies ist ein Beispiel dafür, was man nicht tun sollte. Die erste Aussage besagt, dass
alle Ereignisse außer "Systemeinstellungen gespeichert" weitergeleitet werden sollen.
Die zweite Aussage besagt, dass alle "Systemeinstellungen gespeichert"-Ereignisse
weitergeleitet werden sollen. Das Ergebnis ist, dass alle Ereignisse weitergeleitet
werden, da jedes Ereignis entweder die Bedingung in der ersten Aussage oder oder die in der zweiten Aussage erfüllt:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringNotLike" : {
"Title" : "System Settings Saved"
}
}
},
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringLike" : {
"Title" : "System Settings Saved"
}
}
}
]
}
Mehrere Bedingungen
Dies ist ein weiteres Beispiel dafür, was man nicht tun sollte. Die erste Bedingung
besagt, dass alle Ereignisse weitergeleitet werden sollen, außer "Systemeinstellungen
gespeichert". Die zweite Bedingung besagt, dass alle "Systemeinstellungen gespeichert"-Ereignisse
weitergeleitet werden sollen. Das Ergebnis ist, dass keine Ereignisse weitergeleitet
werden, da keine Ereignisse sowohl die Bedingung in der ersten Aussage und als auch die in der zweiten Aussage erfüllen:
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"StringNotLike" : {
"Title" : "System Settings Saved"
},
"StringLike" : {
"Title" : "System Settings Saved"
}
}
}
]
}
Beispielkonfigurationen für SNS
Diese Konfigurationen senden übereinstimmende Ereignisse für einige spezifische Szenarien.
Weitere Ereigniseigenschaftsnamen und -werte, die Sie zur Filterung von SNS-Themen
verwenden können, finden Sie unter Ereignisse im JSON-Format.
Senden Sie alle kritischen Ereignisse zur Eindringprävention an ein SNS-Thema
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:myTopic",
"Condition": {
"NumericEquals": {
"Severity": 4
},
"StringEquals" : {
"EventType" : "PayloadLog"
}
}
}
]
}
Verschiedene Ereignisse an verschiedene SNS-Themen senden
Dieses Beispiel zeigt, wie alle Systemereignisse an ein Thema und alle Integritätsüberwachungsereignisse
an ein anderes Thema gesendet werden.
{
"Version": "2014-09-24",
"Statement": [
{
"Topic": "arn:aws:sns:us-east-1:012345678901:systemEventsTopic",
"Condition": {
"StringEquals" : {
"EventType" : "SystemEvent"
}
}
},
{
"Topic": "arn:aws:sns:us-east-1:012345678901:integrityTopic",
"Condition": {
"StringEquals" : {
"EventType" : "IntegrityEvent"
}
}
}
]
}
