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
- Gewähren AWS-Konto Sie Zugriff auf ein Thema
- Beschränken Sie Ihre 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 , 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
Gewähren AWS-Konto Sie Zugriff auf ein Thema
Nehmen wir anSNS, Sie haben ein Thema bei Amazon und möchten einem oder mehreren Personen erlauben, eine bestimmte Aktion AWS-Konten
zu diesem Thema auszuführen, z. B. das Veröffentlichen von Nachrichten. Sie können dies mithilfe der SNS API Amazon-Aktion erreichenAddPermission
.
Mit der AddPermission
Aktion können Sie ein Thema AWS-Konto IDs, eine Liste von Aktionen und eine Bezeichnung angeben. Amazon generiert SNS dann automatisch eine neue Grundsatzerklärung und fügt sie der Zugriffskontrollrichtlinie des Themas hinzu. Sie müssen die Grundsatzerklärung nicht selbst verfassen — Amazon SNS erledigt das für Sie. Wenn Sie die Richtlinie später entfernen müssen, können Sie dies tun, indem Sie anrufen RemovePermission
und das Label angeben, das Sie beim Hinzufügen der Genehmigung verwendet haben.
Wenn Sie beispielsweise das AddPermission
Thema arn:aws:sns:us-east- 2:444455556666: aufrufen und die AWS-Konto ID 1111-2222-3333, die Publish
Aktion und das Label angebenMyTopic, generiert Amazon die folgende Richtlinienerklärung und fügt sie in die Zugriffskontrollrichtlinie des Themas ein: 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" }] }
Nachdem diese Erklärung hinzugefügt wurde, ist 1111-2222-3333 berechtigt, Nachrichten zu diesem Thema zu veröffentlichen. AWS-Konto
Zusätzliche Informationen:
-
Benutzerdefiniertes Richtlinienmanagement: Es
AddPermission
ist zwar praktisch, um Berechtigungen zu erteilen, aber in komplexeren Szenarien wie dem Hinzufügen von Bedingungen oder dem Erteilen von Berechtigungen für bestimmte Rollen oder Dienste ist es oft nützlich, die Zugriffskontrollrichtlinie des Themas manuell zu verwalten. IAM Sie können dies tun, indem Sie den verwendenSetTopicAttributes
API, um das Richtlinienattribut direkt zu aktualisieren. -
Bewährte Sicherheitsmethoden: Seien Sie vorsichtig, wenn Sie Berechtigungen erteilen, um sicherzustellen, dass nur vertrauenswürdige AWS-Konten oder Entitäten Zugriff auf Ihre SNS Amazon-Themen haben. Überprüfen und überprüfen Sie regelmäßig die mit Ihren Themen verknüpften Richtlinien, um die Sicherheit zu gewährleisten.
-
Richtlinienbeschränkungen: Beachten Sie, dass der Umfang und die Komplexität der SNS Amazon-Richtlinien begrenzt sind. Wenn Sie viele Berechtigungen oder komplexe Bedingungen hinzufügen müssen, stellen Sie sicher, dass Ihre Richtlinie diese Grenzen nicht überschreitet.
Beschränken Sie Ihre Abonnements auf HTTPS
Um das Benachrichtigungszustellungsprotokoll für Ihr SNS Amazon-Thema auf zu beschränkenHTTPS, müssen Sie eine benutzerdefinierte Richtlinie erstellen. Mit der AddPermission
Aktion in Amazon können Sie SNS keine Protokolleinschränkungen angeben, wenn Sie Zugriff auf Ihr Thema gewähren. Daher müssen Sie manuell eine Richtlinie schreiben, die diese Einschränkung durchsetzt, und dann die SetTopicAttributes
Aktion verwenden, um die Richtlinie auf Ihr Thema anzuwenden.
So können Sie eine Richtlinie erstellen, die Abonnements beschränkt aufHTTPS:
-
Schreiben Sie die Richtlinie. In der Richtlinie muss die AWS-Konto ID angegeben werden, der Sie Zugriff gewähren möchten, und die Bedingung durchsetzen, dass nur HTTPS Abonnements zulässig sind. Im Folgenden finden Sie ein Beispiel für eine Richtlinie, die der AWS-Konto ID 1111-2222-3333 die Erlaubnis erteilt, das Thema zu abonnieren, jedoch nur, wenn das verwendete Protokoll HTTPS
{ "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" } } }] }
-
Wenden Sie die Richtlinie an. Verwenden Sie die
SetTopicAttributes
Aktion im Amazon SNSAPI, um diese Richtlinie auf Ihr Thema anzuwenden. Legen Sie dasPolicy
Attribut des Themas auf die JSON Richtlinie fest, die Sie erstellt haben.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:444455556666:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Zusätzliche Informationen:
-
Anpassen der Zugriffskontrolle. Mit diesem Ansatz können Sie detailliertere Zugriffskontrollen durchsetzen, z. B. die Einschränkung von Abonnementprotokollen, was mit dieser Aktion allein nicht möglich ist.
AddPermission
Benutzerdefinierte Richtlinien bieten Flexibilität für Szenarien, die bestimmte Bedingungen erfordern, wie z. B. die Durchsetzung von Protokollen oder IP-Adressbeschränkungen. -
Bewährte Sicherheitsmethoden. Die Beschränkung von Abonnements auf HTTPS erhöht die Sicherheit Ihrer Benachrichtigungen, indem sichergestellt wird, dass Daten während der Übertragung verschlüsselt werden. Überprüfen Sie regelmäßig Ihre Themenrichtlinien, um sicherzustellen, dass sie Ihren Sicherheits- und Compliance-Anforderungen entsprechen.
-
Testen von Richtlinien. Bevor Sie die Richtlinie in einer Produktionsumgebung anwenden, testen Sie sie in einer Entwicklungsumgebung, um sicherzustellen, dass sie sich erwartungsgemäß verhält. Dies trägt dazu bei, versehentliche Zugriffsprobleme oder unbeabsichtigte Einschränkungen zu vermeiden.
Nachrichten in einer SQS Amazon-Warteschlange veröffentlichen
Um Nachrichten aus Ihrem SNS Amazon-Thema in einer SQS Amazon-Warteschlange zu veröffentlichen, müssen Sie die richtigen Berechtigungen für die SQS Amazon-Warteschlange konfigurieren. SNSSowohl Amazon als auch Amazon SQS verwenden zwar die Sprache AWS der Zugriffskontrollrichtlinien, Sie müssen jedoch explizit eine Richtlinie für die SQS Amazon-Warteschlange festlegen, damit Nachrichten aus dem SNS Amazon-Thema gesendet werden können.
Sie können dies erreichen, indem Sie die SetQueueAttributes
Aktion verwenden, um eine benutzerdefinierte Richtlinie auf die SQS Amazon-Warteschlange anzuwenden. Im Gegensatz zu Amazon SNS SQS unterstützt Amazon die AddPermission
Aktion zur Erstellung von Grundsatzerklärungen mit Bedingungen nicht. Daher müssen Sie die Richtlinie manuell schreiben.
Das Folgende ist ein Beispiel für eine SQS Amazon-Richtlinie, die Amazon die SNS Erlaubnis erteilt, Nachrichten an Ihre Warteschlange zu senden. Beachten Sie, dass diese Richtlinie mit der SQS Amazon-Warteschlange und nicht mit dem SNS Amazon-Thema verknüpft ist. Die angegebenen Aktionen sind SQS Amazon-Aktionen, und die Ressource ist der Amazon-Ressourcenname (ARN) der Warteschlange. Sie können die Warteschlangen abrufen, ARN indem Sie die GetQueueAttributes
Aktion verwenden.
{ "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 aws:SourceArn
Bedingung, um den Zugriff auf die SQS Warteschlange auf der Grundlage der Quelle der gesendeten Nachrichten einzuschränken. Dadurch wird sichergestellt, dass nur Nachrichten, die aus dem angegebenen SNS Thema stammen (in diesem Fall arn:aws:sns:us-east- 2:444455556666:), an die Warteschlange zugestellt werden dürfen. MyTopic
Zusätzliche Informationen:
-
Warteschlange. ARN Stellen Sie sicher, dass Sie mit ARN der
GetQueueAttributes
Aktion die richtige aus Ihrer SQS Amazon-Warteschlange abrufen. Dies ARN ist wichtig, um die richtigen Berechtigungen festzulegen. -
Bewährte Sicherheitsmethoden. Halten Sie sich bei der Einrichtung von Richtlinien immer an das Prinzip der geringsten Rechte. Gewähren Sie dem SNS Amazon-Thema nur die erforderlichen Berechtigungen, um mit der SQS Amazon-Warteschlange zu interagieren, und überprüfen Sie regelmäßig Ihre Richtlinien, um sicherzustellen, dass sie sicher sind up-to-date
-
Standardrichtlinien in AmazonSNS. Entgegen einiger Missverständnisse gewährt Amazon SNS nicht automatisch eine Standardrichtlinie, die anderen AWS-Services Zugriff auf neu erstellte Themen ermöglicht. Sie müssen explizit Richtlinien definieren und anhängen, um den Zugriff auf Ihre SNS Amazon-Themen zu kontrollieren.
-
Testen und Validieren. Nachdem Sie die Richtlinie festgelegt haben, testen Sie die Integration, indem Sie Nachrichten zum SNS Amazon-Thema veröffentlichen und überprüfen, ob sie erfolgreich an die SQS Amazon-Warteschlange zugestellt wurden. Auf diese Weise kann bestätigt werden, dass die Richtlinie korrekt konfiguriert ist.
Erlauben Sie Amazon S3 Ereignisbenachrichtigungen für ein Thema
Damit ein Amazon S3 S3-Bucket aus einem anderen AWS-Konto Bucket Ereignisbenachrichtigungen zu Ihrem SNS Amazon-Thema veröffentlichen kann, müssen Sie die Zugriffsrichtlinie des Themas entsprechend konfigurieren. Dazu müssen Sie eine benutzerdefinierte Richtlinie schreiben, die dem Amazon S3 S3-Service die Erlaubnis erteilt, AWS-Konto und diese Richtlinie dann auf Ihr SNS Amazon-Thema anwenden.
So können Sie es einrichten:
-
Schreiben Sie die Richtlinie. Die Richtlinie sollte den Amazon S3 S3-Service gewähren (s3.amazonaws.com) die erforderlichen Berechtigungen, um in Ihrem SNS Amazon-Thema zu veröffentlichen. Sie verwenden die
SourceAccount
Bedingung, um sicherzustellen, dass nur der angegebene Benutzer AWS-Konto, dem der Amazon S3 S3-Bucket gehört, Benachrichtigungen zu Ihrem Thema veröffentlichen kann.Folgendes ist eine Beispielrichtlinie:
{ "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" } } }] }
-
Eigentümer des Themas — 111122223333 ist die AWS-Konto ID, der das Amazon-Thema gehört. SNS
-
Besitzer des Amazon S3 S3-Buckets — 444455556666 ist die AWS-Konto ID, der der Amazon S3 S3-Bucket gehört, der Benachrichtigungen sendet.
-
-
Wenden Sie die Richtlinie an. Verwenden Sie die
SetTopicAttributes
Aktion, um diese Richtlinie für Ihr SNS Amazon-Thema festzulegen. Dadurch wird die Zugriffskontrolle für das Thema aktualisiert und umfasst nun die in Ihrer benutzerdefinierten Richtlinie angegebenen Berechtigungen.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:111122223333:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Zusätzliche Informationen:
-
SourceAccount
Bedingung wird verwendet. DieSourceAccount
Bedingung stellt sicher, dass nur Ereignisse, die vom angegebenen Thema stammen AWS-Konto (in diesem Fall 444455556666), das Amazon-Thema auslösen können. SNS Dies ist eine Sicherheitsmaßnahme, um zu verhindern, dass nicht autorisierte Konten Benachrichtigungen zu Ihrem Thema senden. -
Andere unterstützende Dienste
SourceAccount
. DieSourceAccount
Bedingung wird durch die folgenden Dienste unterstützt. Es ist wichtig, diese Bedingung zu verwenden, wenn Sie den Zugriff auf Ihr SNS Amazon-Thema basierend auf dem ursprünglichen Konto einschränken möchten.-
APIAmazon-Gateway
-
Amazon CloudWatch
-
DevOpsAmazon-Guru
-
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
-
-
Testen und Validieren. Nachdem Sie die Richtlinie angewendet haben, testen Sie das Setup, indem Sie ein Ereignis im Amazon S3 S3-Bucket auslösen und bestätigen, dass es erfolgreich in Ihrem SNS Amazon-Thema veröffentlicht wurde. Auf diese Weise können Sie sicherstellen, dass Ihre Richtlinie korrekt konfiguriert ist.
-
Bewährte Sicherheitsmethoden. Überprüfen und überprüfen Sie regelmäßig Ihre SNS Themenrichtlinien von Amazon, um sicherzustellen, dass sie Ihren Sicherheitsanforderungen entsprechen. Die Beschränkung des Zugriffs auf vertrauenswürdige Konten und Dienste ist für die Aufrechterhaltung eines sicheren Betriebs unerlässlich.
Erlauben Sie AmazonSES, zu einem Thema zu veröffentlichen, das einem anderen Konto gehört
Sie können einer anderen Person erlauben AWS-Service , Beiträge 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, das die Konto-ID des Eigentümers des Themas, 444455556666, enthält. 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 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 , 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 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 von dem 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" } } }] }