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.

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 verwenden SetTopicAttributesAPI, 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:

  1. 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" } } }] }
  2. Wenden Sie die Richtlinie an. Verwenden Sie die SetTopicAttributes Aktion im Amazon SNSAPI, um diese Richtlinie auf Ihr Thema anzuwenden. Legen Sie das Policy 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:

  1. 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.

  2. 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:

  • SourceAccountBedingung wird verwendet. Die SourceAccount 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 DiensteSourceAccount. Die SourceAccount 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: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 , 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 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" } } }] }