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.
Themen
- AWS-Konto Zugriff auf ein Thema gewähren
- Beschränken Sie Abonnements auf HTTPS
- Nachrichten in einer SQS Amazon-Warteschlange veröffentlichen
- Erlauben Sie Amazon S3 Ereignisbenachrichtigungen für ein Thema
- Erlauben Sie AmazonSES, zu einem Thema zu veröffentlichen, das einem anderen Konto gehört
- aws:SourceAccount im Vergleich zu aws:SourceOwner
- Erlauben Sie Konten in einer Organisation AWS Organizations , Beiträge zu einem Thema in einem anderen Konto zu veröffentlichen
- Erlauben Sie jedem CloudWatch Alarm, zu einem Thema in einem anderen Konto zu veröffentlichen
- Beschränken Sie die Veröffentlichung auf ein SNS Amazon-Thema nur von einem bestimmten VPC Endpunkt aus
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:SourceOwner
ist 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.
-
Hier finden Sie Informationen Erlauben Sie Amazon S3 Ereignisbenachrichtigungen für ein Thema zur Verwendung von Amazon S3 S3-Benachrichtigungen
aws:SourceAccount
und eine Liste der AWS Dienste, die diese Bedingung unterstützen. -
Informationen Erlauben Sie AmazonSES, zu einem Thema zu veröffentlichen, das einem anderen Konto gehört zur SES Nutzung durch Amazon
aws:SourceOwner
und eine Liste der AWS Dienste, die diese Bedingung unterstützen, finden Sie hier.
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
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" } } }] }