Beispielfälle für Amazon SNS Access Control - 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.

Beispielfälle für Amazon SNS Access Control

In diesem Abschnitt finden Sie einige typische Anwendungsfälle für die Zugriffskontrolle.

AWS-Konto Zugriff auf ein Thema gewähren

Nehmen wir an, Sie haben ein Thema im SNS Amazon-System. Im einfachsten Fall möchten Sie einer oder mehreren Personen AWS-Konten Zugriff auf eine bestimmte Themenaktion (z. B. Veröffentlichen) gewähren.

Sie können dies mit der SNS API Amazon-Aktion tunAddPermission. Sie verwendet ein Thema, eine Liste von AWS-Konto IDs, eine Liste von Aktionen und eine Bezeichnung und erstellt automatisch eine neue Erklärung in der Zugriffskontrollrichtlinie des Themas. In diesem Fall schreiben Sie keine Richtlinie selbst, da Amazon die neue Richtlinienerklärung SNS automatisch für Sie generiert. Sie können die Richtlinienanweisung zu einem späteren Zeitpunkt entfernen, indem Sie RemovePermission mit der zugehörigen Bezeichnung aufrufen.

Wenn Sie beispielsweise das AddPermission Thema arn:aws:sns:us-east- 2:444455556666: mit der AWS-Konto ID 1111-2222-3333, der Aktion und dem Label aufrufenMyTopic, würde Amazon die folgende Erklärung zur Zugriffskontrollrichtlinie generieren und einfügen: Publish grant-1234-publish SNS

{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }

Sobald diese Aussage AWS-Konto hinzugefügt wurde, kann der Benutzer mit 1111-2222-3333 Nachrichten zu dem Thema veröffentlichen.

Beschränken Sie Abonnements auf HTTPS

Im folgenden Beispiel beschränken Sie das Protokoll für die Übermittlung von Benachrichtigungen aufHTTPS.

Sie müssen wissen, wie Sie Ihre eigene Richtlinie für das Thema schreiben, da Sie mit der SNS AddPermission Amazon-Aktion keine Protokolleinschränkung angeben können, wenn Sie jemandem Zugriff auf Ihr Thema gewähren. In diesem Fall würden Sie eine eigene Richtlinie schreiben und dann die Aktion SetTopicAttributes verwenden, um das Policy-Attribut des Themas für Ihre neue Richtlinie festzulegen.

Das folgende Beispiel für eine vollständige Richtlinie gewährt der AWS-Konto ID 1111-2222-3333 die Möglichkeit, Benachrichtigungen zu einem Thema zu abonnieren.

{ "Statement": [{ "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Subscribe"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "sns:Protocol": "https" } } }] }

Nachrichten in einer SQS Amazon-Warteschlange veröffentlichen

In diesem Anwendungsfall möchten Sie Nachrichten aus Ihrem Thema in Ihrer SQS Amazon-Warteschlange veröffentlichen. Wie Amazon SNS SQS verwendet Amazon die Sprache der Zugriffskontrollrichtlinien von Amazon. Damit Amazon SNS Nachrichten senden kann, müssen Sie die SQS Amazon-Aktion verwenden, SetQueueAttributes um eine Richtlinie für die Warteschlange festzulegen.

Auch hier müssen Sie wissen, wie Sie Ihre eigene Richtlinie verfassen, da die SQS AddPermission Amazon-Aktion keine Richtlinienerklärungen mit Bedingungen erstellt.

Anmerkung

Das unten dargestellte Beispiel ist eine SQS Amazon-Richtlinie (Kontrolle des Zugriffs auf Ihre Warteschlange), keine SNS Amazon-Richtlinie (Steuerung des Zugriffs auf Ihr Thema). Die Aktionen sind SQS Amazon-Aktionen, und die Ressource ist der Amazon-Ressourcenname (ARN) der Warteschlange. Sie können die Warteschlange ermitteln, ARN indem Sie das QueueArn Attribut der Warteschlange mit der GetQueueAttributes Aktion abrufen.

{ "Statement": [{ "Sid": "Allow-SNS-SendMessage", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": ["sqs:SendMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:444455556666:MyTopic" } } }] }

Diese Richtlinie verwendet die Bedingung aws:SourceArn, um den Zugriff auf die Queue basierend auf der Quelle der Nachricht, die an die Queue gesendet wird, zu beschränken. Mit dieser Art von Richtlinie können Sie Amazon nur dann erlauben, Nachrichten SNS an Ihre Warteschlange zu senden, wenn die Nachrichten aus einem Ihrer eigenen Themen stammen. In diesem Fall geben Sie ein bestimmtes Thema an, das arn:aws:sns:us-east- ARN 2:444455556666: lautet. MyTopic

Die obige Richtlinie ist ein Beispiel für die SQS Amazon-Richtlinie, die Sie schreiben und zu einer bestimmten Warteschlange hinzufügen könnten. Es würde den Zugang zu Amazon SNS und anderen AWS Diensten gewähren. Amazon SNS gewährt allen neu erstellten Themen eine Standardrichtlinie. Die Standardrichtlinie gewährt allen anderen AWS Diensten Zugriff auf Ihr Thema. Diese Standardrichtlinie verwendet eine aws:SourceArn Bedingung, um sicherzustellen, dass AWS Dienste nur im Namen von AWS Ressourcen, die Sie besitzen, auf Ihr Thema zugreifen.

Erlauben Sie Amazon S3 Ereignisbenachrichtigungen für ein Thema

In diesem Fall möchten Sie die Richtlinie eines Themas so konfigurieren, dass der Amazon S3 S3-Bucket AWS-Konto eines anderen Themas zu Ihrem Thema veröffentlichen kann. Weitere Informationen zum Veröffentlichen von Benachrichtigungen von Amazon S3 finden Sie unter Setting Up Notifications of Bucket Events.

Bei diesem Beispiel wird davon ausgegangen, dass Sie eine eigene Richtlinie schreiben und dann die Aktion SetTopicAttributes verwenden, um das Policy-Attribut des Themas für Ihre neue Richtlinie festzulegen.

Die folgende Beispielanweisung verwendet die Bedingung SourceAccount, um sicherzustellen, dass nur das Amazon S3-Eigentümerkonto auf das Thema zugreifen kann. In diesem Beispiel ist der Themeneigentümer „111122223333“ und der Amazon S3 Eigentümer „444455556666“. Das Beispiel besagt, dass jeder Amazon S3 S3-Bucket, der 444455556666 gehört, veröffentlichen darf. MyTopic

{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic", "Condition": { "StringEquals": { "AWS:SourceAccount": "444455556666" } } }] }

Bei der Veröffentlichung von Veranstaltungen auf Amazon SNS unterstützen die folgenden Diensteaws:SourceAccount:

  • APIAmazon-Gateway

  • Amazon CloudWatch

  • DevOpsAmazon-Guru

  • Amazon ElastiCache

  • Amazon EventBridge

  • Amazon GameLift

  • Amazon Pinpoint SMS und Voice API

  • Amazon RDS

  • Amazon-Redshift

  • Amazon S3 Glacier

  • Amazon SES

  • Amazon Simple Storage Service

  • AWS CodeCommit

  • AWS Directory Service

  • AWS Lambda

  • AWS Systems Manager Incident Manager

Erlauben Sie AmazonSES, zu einem Thema zu veröffentlichen, das einem anderen Konto gehört

Sie können einem anderen AWS Dienst erlauben, zu einem Thema zu veröffentlichen, das einem anderen gehört AWS-Konto. Angenommen, Sie haben sich mit dem 111122223333-Konto angemeldetSES, Amazon eröffnet und eine E-Mail erstellt. Um Benachrichtigungen zu dieser E-Mail zu einem SNS Amazon-Thema zu veröffentlichen, das dem 444455556666-Konto gehört, würden Sie eine Richtlinie wie die folgende erstellen. Um dies zu tun, müssen Sie Informationen über den Prinzipal (den anderen Dienst) und den Besitz jeder Ressource angeben. Die Resource Erklärung enthält das ThemaARN, einschließlich der Konto-ID des Eigentümers des Themas, 444455556666. Die"aws:SourceOwner": "111122223333"-Anweisung gibt an, dass Ihr Konto Eigentümer der E-Mail ist.

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:SourceOwner": "111122223333" } } } ] }

Bei der Veröffentlichung von Veranstaltungen auf Amazon SNS unterstützen die folgenden Diensteaws:SourceOwner:

  • APIAmazon-Gateway

  • Amazon CloudWatch

  • DevOpsAmazon-Guru

  • Amazon ElastiCache

  • Amazon GameLift

  • Amazon Pinpoint SMS und Voice API

  • Amazon RDS

  • Amazon-Redshift

  • Amazon SES

  • AWS CodeCommit

  • AWS Directory Service

  • AWS Lambda

  • AWS Systems Manager Incident Manager

aws:SourceAccount im Vergleich zu aws:SourceOwner

Wichtig

aws:SourceOwnerist veraltet und neue Dienste können SNS nur über aws:SourceArn und in Amazon integriert werden. aws:SourceAccount Amazon behält SNS weiterhin die Abwärtskompatibilität für bestehende Dienste bei, die derzeit unterstützt aws:SourceOwner werden.

Die Schlüssel aws:SourceAccount und die aws:SourceOwner Bedingungsschlüssel werden jeweils von einigen festgelegt AWS -Services , wenn sie zu einem SNS Amazon-Thema veröffentlichen. Sofern unterstützt, entspricht der Wert der 12-stelligen AWS Konto-ID, in deren Namen der Service Daten veröffentlicht. Einige Dienste unterstützen einen, andere unterstützen den anderen.

Erlauben Sie Konten in einer Organisation AWS Organizations , Beiträge zu einem Thema in einem anderen Konto zu veröffentlichen

Der AWS Organizations Service hilft Ihnen dabei, die Abrechnung zentral zu verwalten, den Zugriff und die Sicherheit zu kontrollieren und Ressourcen gemeinsam zu nutzen AWS-Konten.

Sie finden Ihre Organisations-ID in der Organisationskonsole. Weitere Informationen finden Sie unter Anzeigen von Details zu einer Organisation vom Masterkonto aus.

In diesem Beispiel myOrgId kann jede AWS-Konto interne Organisation ein SNS Thema MyTopic im Konto bei Amazon veröffentlichen444455556666. Die Richtlinie überprüft den Organisations-ID-Wert mithilfe des globalen Bedingungsschlüssels aws:PrincipalOrgID.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "myOrgId" } } } ] }

Erlauben Sie jedem CloudWatch Alarm, zu einem Thema in einem anderen Konto zu veröffentlichen

In diesem Fall 111122223333 dürfen alle CloudWatch Alarme im Konto in einem SNS Amazon-Themenkonto veröffentlicht werden444455556666.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" } } } ] }

Beschränken Sie die Veröffentlichung auf ein SNS Amazon-Thema nur von einem bestimmten VPC Endpunkt aus

In diesem Fall darf das Thema im Konto 444455556666 nur vom Endpunkt mit der ID veröffentlicht werden. VPC vpce-1ab2c34d

{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }