View a markdown version of this page

Verwenden von identitätsbasierten Richtlinien mit Amazon SNS - Amazon Simple Notification Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von identitätsbasierten Richtlinien mit Amazon SNS

Amazon Simple Notification Service ist in AWS Identity and Access Management (IAM) integriert, sodass Sie angeben können, welche Amazon SNS-Aktionen ein Benutzer in Ihrem System mit Amazon SNS-Ressourcen ausführen AWS-Konto kann. Sie können ein bestimmtes Thema in der Richtlinie festlegen. Sie können z. B. beim Erstellen einer IAM-Richtlinie Variablen verwenden, um bestimmten Benutzern in Ihrer Organisation die Verwendung der Publish-Aktion für bestimmte Themen in Ihrem AWS-Konto zu ermöglichen. Weitere Informationen finden Sie unter Richtlinienvariablen im Handbuch Verwenden von IAM.

Wichtig

Durch die Nutzung von IAM mit Amazon SNS ändert sich die Verwendung von Amazon SNS nicht. Es gibt keine geänderten Amazon SNS-Aktionen und keine neuen -Aktionen im Zusammenhang mit Benutzern und Zugriffskontrolle.

Beispiele von Richtlinien, die Amazon SNS Aktionen und Ressourcen abdecken, finden Sie unter Beispielrichtlinien für Amazon SNS.

Gemeinsame Nutzung von IAM- und Amazon SNS-Richtlinien

Sie verwenden eine IAM-Richtlinie, um den Zugriff des Benutzers auf Amazon SNS-Aktionen und -Themen einzuschränken. Eine IAM-Richtlinie kann den Zugriff nur auf Benutzer in Ihrem AWS Konto beschränken, nicht auf andere AWS-Konten.

Sie können eine Amazon SNS-Richtlinie mit einem bestimmten Thema verwenden, um einzuschränken, wer mit diesem Thema arbeiten kann (z. B., wer Nachrichten veröffentlichen kann, wer es abonnieren kann usw.). Amazon SNS-Richtlinien können anderen AWS-Konten Benutzern oder Benutzern innerhalb Ihres eigenen Unternehmens Zugriff gewähren. AWS-Konto

Um Ihren Benutzern Berechtigungen für Ihre Amazon SNS-Themen zu gewähren, können Sie IAM-Richtlinien, Amazon SNS-Richtlinien oder beide verwenden. In den meisten Fällen erzielen Sie mit beiden Systemen dieselben Ergebnisse. Die folgende Abbildung zeigt eine IAM-Richtlinie und eine entsprechende Amazon SNS-Richtlinie. Die IAM-Richtlinie ermöglicht die Amazon Subscribe SNS-Aktion für das Thema topic_xyz in Ihrem. Die IAM-Richtlinie ist an AWS-Konto die Benutzer Bob und Susan angehängt (was bedeutet, dass Bob und Susan über die in der Richtlinie angegebenen Berechtigungen verfügen). Die Amazon SNS-Richtlinie bietet Bob und Susan ebenfalls die Berechtigung für den Zugriff auf Subscribe für "topic_xyz".

Vergleicht eine IAM-Richtlinie und eine Amazon SNS-Richtlinie und zeigt, dass beide Richtlinien zwei Benutzern, Bob und Susan, die gleichen Berechtigungen gewähren, sodass sie ein bestimmtes Amazon SNS-Thema innerhalb einer abonnieren können. AWS-Konto Der hervorgehobene Hauptunterschied besteht darin, dass Amazon SNS-Richtlinien Benutzern Berechtigungen für verschiedene Benutzer gewähren können AWS-Konten, während IAM-Richtlinien dies nicht können.
Anmerkung

Das vorherige Beispiel veranschaulicht einfache Richtlinien ohne Bedingungen. Sie können eine bestimmte Bedingung in einer der Richtlinien angeben und erhalten dasselbe Ergebnis.

Es gibt einen Unterschied zwischen AWS IAM- und Amazon SNS-Richtlinien: Mit dem Amazon SNS-Richtliniensystem können Sie anderen Personen Berechtigungen gewähren AWS-Konten, während dies bei der IAM-Richtlinie nicht der Fall ist.

Sie entscheiden je nach Ihren Anforderungen, wie Sie beide Systeme zum Verwalten von Berechtigungen verwenden. Die folgenden Beispiele zeigen, wie die beiden Richtliniensysteme zusammenarbeiten.

Beispiel 1

In diesem Beispiel wird eine IAM-Richtlinie und eine Amazon SNS-Richtlinie auf Bob angewendet. Die IAM-Richtlinie gewährt ihm die Erlaubnis für Subscribe jedes der Themen, wohingegen ihm die AWS-Konto Amazon SNS-Richtlinie die Erlaubnis erteilt, es für ein bestimmtes Publish Thema (topic_xyz) zu verwenden. Das folgende Diagramm verdeutlicht das Konzept.

Zeigt, wie sowohl eine IAM-Richtlinie als auch eine Amazon SNS-Richtlinie für den Benutzer Bob gelten. Die IAM-Richtlinie ermöglicht es ihm, jedes Thema in der zu abonnieren AWS-Konto, und die Amazon SNS-Richtlinie gewährt ihm die Erlaubnis, Nachrichten zu einem bestimmten Thema mit dem Namen „topic_xyz“ zu veröffentlichen. Das Diagramm verdeutlicht den Unterschied zwischen allgemeinen Berechtigungen, die durch die IAM-Richtlinie gewährt werden, und spezifischen Berechtigungen, die durch die Amazon SNS-Richtlinie für ein bestimmtes Thema gewährt werden.

Wenn Bob eine Anfrage senden würde, um ein beliebiges Thema im AWS Konto zu abonnieren, würde die IAM-Richtlinie die Aktion zulassen. Wenn Bob eine Anforderung zum Veröffentlichen einer Nachricht an „topic_xyz“ sendet, lässt die Amazon-SNS-Richtlinie diese Aktion zu.

Beispiel 2

In diesem Beispiel bauen wir auf Beispiel 1 auf (wobei Bob zwei für ihn geltende Richtlinien hat). Angenommen, Bob veröffentlicht Nachrichten für das Thema „topic_xyz“, und sollte daran gehindert werden. In diesem Fall entfernen Sie seine Möglichkeit zur Veröffentlichung für diese Themen vollständig. Der einfachste Weg ist, eine IAM-Richtlinie hinzuzufügen, die ihm den Zugriff auf die Publish-Aktionen für alle Themen verweigert. Diese dritte Richtlinie überschreibt die Amazon SNS-Richtlinie, die ihm ursprünglich die Berechtigung zur Veröffentlichung in das Thema „topic_xyz“ gewährt hat. Eine explizite Verweigerung überschreibt grundsätzlich eine gewährte Berechtigung (weitere Informationen über die Logik der Richtlinienauswertung finden Sie unter Auswertungslogik). Das folgende Diagramm verdeutlicht das Konzept.

Veranschaulichung, wie das Hinzufügen einer IAM-Richtlinie, die die Aktion „Veröffentlichen“ für alle Themen ablehnt, eine bestehende Amazon SNS-Richtlinie außer Kraft setzen kann, die es dem Benutzer Bob ermöglichte, zu einem bestimmten Thema, „topic_xyz“, zu veröffentlichen. Die IAM-Ablehnungsrichtlinie hat Vorrang vor der Amazon SNS-Richtlinie, wodurch Bob effektiv daran gehindert wird, Beiträge zu einem beliebigen Thema, einschließlich „topic_xyz“, zu veröffentlichen.

Beispiele von Richtlinien, die Amazon SNS-Aktionen und -Ressourcen abdecken, finden Sie unter Beispielrichtlinien für Amazon SNS.

Amazon SNS Ressourcen - ARN Format

Bei Amazon SNS, können Sie in einer Richtlinie nur den Ressourcentyp „Thema“ festlegen. Im Folgenden finden Sie das Amazon-Ressourcenname (ARN)-Format für Themen:

arn:aws:sns:region:account_ID:topic_name

Weitere Informationen zu ARNs finden Sie unter ARNs im IAM-Benutzerhandbuch.

Beispiel

Im Folgenden finden Sie einen ARN für ein Thema, das MyTopic in der Region us-east-2 benannt ist und zu AWS-Konto 123456789012 gehört.

arn:aws:sns:us-east-2:123456789012:MyTopic
Beispiel

Wenn Sie MyTopic in jeder der verschiedenen Regionen, die Amazon SNS unterstützt, ein Thema benannt haben, könnten Sie die Themen mit dem folgenden ARN angeben.

arn:aws:sns:*:123456789012:MyTopic

Sie können im Namen des Themas die Platzhalterzeichen * und ? verwenden. Der folgende Namen könnte z. B. alle Themen bezeichnen, die von Bob erstellt wurden und den Präfix bob_. haben.

arn:aws:sns:*:123456789012:bob_*

Zur Vereinfachung gibt Amazon SNS beim Erstellen eines Themas den ARN in der Antwort zurück.

Amazon SNS API-Aktionen

In einer IAM-Richtlinie können Sie eine beliebige, von Amazon SNS unterstützte Aktion angeben. Die Aktionen ConfirmSubscription und Unsubscribe erfordern jedoch keine Authentifizierung. Dies bedeutet, dass &IAM; die Benutzer auch dann nicht beim Zugriff beschränkt, wenn Sie diese Aktionen in einer Richtlinie festlegen.

Jeder in einer Richtlinie angegebenen Aktion muss die Zeichenfolge sns: in Kleinbuchstaben vorangestellt werden. Zum Angeben von allen Amazon SNS -Aktionen würden Sie beispielsweise sns:* verwenden. Eine Liste der Aktionen finden Sie unterAmazon Simple Notification Service-API-Referenz.

Amazon SNS Richtlinienschlüssel

Amazon SNS implementiert die folgenden AWS allgemeinen Richtlinienschlüssel sowie einige dienstspezifische Schlüssel.

Eine Liste der jeweils AWS-Service unterstützten Bedingungsschlüssel finden Sie AWS-Services im IAM-Benutzerhandbuch unter Aktionen, Ressourcen und Bedingungsschlüssel für. Eine Liste der Bedingungsschlüssel, die mehrfach verwendet werden können AWS-Services, finden Sie im IAM-Benutzerhandbuch unter AWS Globale Bedingungskontextschlüssel.

Amazon SNS verwendet die folgenden servicespezifischen Schlüssel. Verwenden Sie diese Schlüssel in Richtlinien, die den Zugriff auf Subscribe-Anfragen beschränken.

  • sns:Endpoint: Die URL, die E-Mail-Adresse oder der ARN von einer Subscribe-Anfrage oder eines zuvor bestätigten Abonnements. Verwendung mit Bedingungen im Zusammenhang mit Zeichenfolgen (siehe Beispielrichtlinien für Amazon SNS), um den Zugriff auf bestimmte Endpunkte (z. B. *@yourcompany.com) zu beschränken.

  • sns:Protocol: Der protocol-Wert einer Subscribe-Anfrage oder eines zuvor bestätigten Abonnements. Verwendung mit Bedingungen im Zusammenhang mit Zeichenfolgen (siehe Beispielrichtlinien für Amazon SNS), um die Veröffentlichung auf bestimmte Bereitstellungsprotokolle (z. B. HTTPS) zu beschränken.

Beispielrichtlinien für Amazon SNS

Dieser Abschnitt zeigt mehrere einfache Richtlinien zum Steuern des Benutzerzugriffs auf Amazon SNS .

Anmerkung

In Zukunft können in Amazon SNS neue Aktionen hinzugefügt werden, die logisch in einer der folgenden Richtlinien eingeschlossen werden müssen, basierend auf den formulierten Zielen der Richtlinie.

Beispiel 1: Zulassen der Erstellung und Verwaltung von Themen für eine Gruppe

In diesem Beispiel erstellen wir eine Richtlinie, die Zugriff auf CreateTopic, ListTopics, SetTopicAttributes und DeleteTopic gewährt.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:DeleteTopic"], "Resource": "*" }] }
Beispiel 2: Zulassen der Veröffentlichung von Nachrichten zu einem bestimmten Thema für die IT-Gruppe

In diesem Beispiel erstellen wir eine Gruppe für die IT, die eine Richtlinie zuweist, die Zugriff auf Publish für das definierte Thema gewährt.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }
Beispiel 3: Geben Sie den Benutzern in AWS-Konto Möglichkeit, Themen zu abonnieren

In diesem Beispiel erstellen wir eine Richtlinie mit der Bedingungen für die Zeichenfolgenübereinstimmungen für die Richtlinienschlüssel sns:Protocol und sns:Endpoint, die den Zugriff auf die Subscribe-Aktion gewährt.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:Subscribe"], "Resource": "*", "Condition": { "StringLike": { "sns:Endpoint": "*@example.com" }, "StringEquals": { "sns:Protocol": "email" } } }] }
Beispiel 4: Zulassen der Veröffentlichung von Nachrichten zu einem bestimmten Thema für einen Partner

Sie können eine Amazon SNS-Richtlinie oder eine IAM-Richtlinie verwenden, um einem Partner das Veröffentlichen zu einem bestimmten Thema zu gewähren. Wenn Ihr Partner eine hat AWS-Konto, ist es möglicherweise einfacher, eine Amazon SNS-Richtlinie zu verwenden. Jeder im Unternehmen des Partners, der über die AWS Sicherheitsanmeldeinformationen verfügt, kann jedoch Nachrichten zu dem Thema veröffentlichen. In diesem Beispiel wird davon ausgegangen, dass Sie den Zugriff auf eine bestimmte Person (oder Anwendung) begrenzen möchten. Zu diesem Zweck müssen Sie den Partner wie einen Benutzer innerhalb Ihres eigenen Unternehmens behandeln. Verwenden Sie eine &IAM;-Richtlinie anstelle einer Amazon SNS-Richtlinie.

In diesem Beispiel erstellen wir eine Gruppe mit dem Namen WidgetCo , die für das Partnerunternehmen steht. Wir erstellen einen Benutzer für die bestimmte Person (oder Anwendung) im Partnerunternehmen, die Zugriff benötigt, und fügen den Benutzer dann der Gruppe hinzu.

Anschließend fügen wir eine Richtlinie hinzu, die der Gruppe Publish Zugriff auf das angegebene Thema gewährt WidgetPartnerTopic.

Wir möchten auch verhindern, dass die WidgetCo Gruppe etwas anderes mit Themen macht. Deshalb fügen wir eine Erklärung hinzu, die die Genehmigung für alle Amazon SNS-Aktionen verweigert, die sich nicht Publish auf andere Themen beziehen als. WidgetPartnerTopic Dies ist nur erforderlich, wenn eine umfassendere Richtlinie im System verwendet wird, die Benutzern einen breiten Zugriff auf Amazon SNS-Ressourcen ermöglicht.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }

Amazon SNS-Richtlinien für E-Mail-Endpunkte

Amazon SNS normalisiert E-Mail-Adressen in den Richtlinien für den Endpunktzugriff, indem führende und nachfolgende Leerzeichen entfernt, alle Zeichen in Kleinbuchstaben umgewandelt und Sonderzeichen und Escape-Sequenzen normalisiert werden. Aus diesem Grund müssen Sie in Ihren Richtliniendefinitionen E-Mail-Adressen in Kleinbuchstaben verwenden, um sicherzustellen, dass Abonnementanfragen korrekt abgeglichen werden.

Beispiel für eine Richtlinie:

{ "Condition": { "StringEquals": { "sns:Endpoint": "user.name@example.com" } } }

Die folgenden E-Mail-Adressen erfüllen die obige Bedingung:

  • user.name@example.com

  • USER.NAME@EXAMPLE.COM

  • User.N\ame@Example.com

Amazon SNS-Richtlinien für Endpunkte HTTP/HTTPs

Amazon SNS normalisiert HTTP/HTTPs Endpunkte in den Richtlinien für den Endpunktzugriff, indem das Schema und der Hostname in Kleinbuchstaben umgewandelt werden, wobei Port, Pfad, Abfrageparameter und Fragmente exakt beibehalten werden. Aus diesem Grund müssen Sie in Ihren Richtliniendefinitionen das Schema und den Hostnamen in Kleinbuchstaben verwenden, um eine korrekte Übereinstimmung der Abonnementanforderungen sicherzustellen.

{ "Condition": { "StringEquals": { "sns:Endpoint": "https://example.com:443/path?A=B" } } }

Folgendes HTTP/HTTPs entspricht der obigen Bedingung:

  • HTTPS://EXAMPLE.COM:443/path?A=B

  • HTTPS://example.com:443/path?A=B

  • HTTPS://ExAmPlE.cOm:443/path?A=B