Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemples de cas relatifs SNS au contrôle d'accès Amazon
Cette section décrit quelques exemples de cas d'utilisation standard du contrôle d'accès.
Rubriques
- Autoriser Compte AWS l'accès à un sujet
- Limiter les abonnements à HTTPS
- Publier des messages dans une SQS file d'attente Amazon
- Autoriser les notifications d'évènements Amazon S3 à publier dans une rubrique
- Autoriser Amazon SES à publier sur un sujet appartenant à un autre compte
- aws:SourceAccount par rapport à aws:SourceOwner
- Autoriser les comptes d'une organisation AWS Organizations à publier sur un sujet dans un autre compte
- Autoriser la publication de n'importe quelle CloudWatch alarme dans un sujet d'un autre compte
- Restreindre la publication à un SNS sujet Amazon uniquement à partir d'un point de VPC terminaison spécifique
Autoriser Compte AWS l'accès à un sujet
Supposons que vous ayez un sujet sur Amazon SNS et que vous souhaitiez autoriser un ou plusieurs d'entre eux Comptes AWS
à effectuer une action spécifique sur ce sujet, par exemple publier des messages. Vous pouvez y parvenir en utilisant l'SNSAPIaction AmazonAddPermission
.
L'AddPermission
action vous permet de spécifier un sujet, une liste de Compte AWS IDs, une liste d'actions et une étiquette. Amazon génère SNS ensuite et ajoute automatiquement une nouvelle déclaration de politique à la politique de contrôle d'accès du sujet. Vous n'avez pas besoin de rédiger vous-même la déclaration de politique, Amazon s'en SNS charge pour vous. Si vous devez supprimer la politique ultérieurement, vous pouvez le faire en appelant RemovePermission
et en fournissant l'étiquette que vous avez utilisée lors de l'ajout de l'autorisation.
Par exemple, si vous appelez le AddPermission
sujet arn:aws:sns:us-east- 2:444455556666 :, que vous MyTopic spécifiez l'ID Compte AWS 1111-2222-3333, l'action et l'étiquette, Amazon générera et insérera la déclaration de politique suivante dans la Publish
politique de contrôle d'accès du sujet : 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" }] }
Une fois cette déclaration ajoutée, le Compte AWS 1111-2222-3333 sera autorisé à publier des messages sur le sujet.
Informations supplémentaires :
-
Gestion des politiques personnalisées : Bien que cela
AddPermission
soit pratique pour accorder des autorisations, il est souvent utile de gérer manuellement la politique de contrôle d'accès du sujet pour des scénarios plus complexes, tels que l'ajout de conditions ou l'octroi d'autorisations à des IAM rôles ou services spécifiques. Vous pouvez le faire en utilisant directement l'attributSetTopicAttributes
API to update the policy. -
Bonnes pratiques en matière de sécurité : soyez prudent lorsque vous accordez des autorisations afin de vous assurer que seules les entités Comptes AWS ou entités fiables ont accès à vos SNS sujets Amazon. Passez régulièrement en revue et auditez les politiques associées à vos sujets afin de garantir la sécurité.
-
Limites des politiques : gardez à l'esprit que la taille et la complexité des SNS politiques d'Amazon sont limitées. Si vous devez ajouter de nombreuses autorisations ou des conditions complexes, assurez-vous que votre politique respecte ces limites.
Limiter les abonnements à HTTPS
Pour limiter le protocole d'envoi des notifications pour votre SNS sujet AmazonHTTPS, vous devez créer une politique personnalisée. L'AddPermission
action dans Amazon SNS ne vous permet pas de spécifier des restrictions de protocole lorsque vous accordez l'accès à votre sujet. Par conséquent, vous devez écrire manuellement une politique qui applique cette restriction, puis utiliser l'SetTopicAttributes
action pour appliquer la politique à votre sujet.
Voici comment créer une politique qui limite les abonnements à HTTPS :
-
Rédigez la politique. La politique doit spécifier l' Compte AWS ID auquel vous souhaitez accorder l'accès et appliquer la condition selon laquelle seuls les HTTPS abonnements sont autorisés. Vous trouverez ci-dessous un exemple de politique qui accorde à l' Compte AWS ID 1111-2222-3333 l'autorisation de s'abonner à la rubrique, mais uniquement si le protocole utilisé l'est. 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" } } }] }
-
Appliquez la politique. Utilisez l'
SetTopicAttributes
action d'Amazon SNS API pour appliquer cette politique à votre sujet. Définissez l'Policy
attribut du sujet en fonction de la JSON politique que vous avez créée.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:444455556666:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Informations supplémentaires :
-
Personnalisation du contrôle d'accès. Cette approche vous permet d'appliquer des contrôles d'accès plus précis, tels que la restriction des protocoles d'abonnement, ce qui n'est pas possible par le seul biais de cette
AddPermission
action. Les politiques personnalisées offrent de la flexibilité pour les scénarios nécessitant des conditions spécifiques, telles que l'application du protocole ou les restrictions d'adresse IP. -
Bonnes pratiques en matière de sécurité. Limiter les abonnements HTTPS pour renforcer la sécurité de vos notifications en garantissant que les données en transit sont cryptées. Passez régulièrement en revue vos politiques thématiques pour vous assurer qu'elles répondent à vos exigences en matière de sécurité et de conformité.
-
Tests de politiques. Avant d'appliquer la politique dans un environnement de production, testez-la dans un environnement de développement pour vous assurer qu'elle se comporte comme prévu. Cela permet d'éviter les problèmes d'accès accidentels ou les restrictions involontaires.
Publier des messages dans une SQS file d'attente Amazon
Pour publier des messages de votre SNS sujet Amazon dans une SQS file d'attente Amazon, vous devez configurer les autorisations appropriées sur la SQS file d'attente Amazon. Bien qu'Amazon SNS et Amazon SQS utilisent tous deux le langage AWS de politique de contrôle d'accès, vous devez définir explicitement une politique sur la SQS file d'attente Amazon pour autoriser l'envoi de messages depuis le SNS sujet Amazon.
Vous pouvez y parvenir en utilisant l'SetQueueAttributes
action pour appliquer une politique personnalisée à la SQS file d'attente Amazon. Contrairement à AmazonSNS, Amazon SQS ne soutient pas l'AddPermission
action visant à créer des déclarations de politique assorties de conditions. Par conséquent, vous devez écrire la politique manuellement.
Voici un exemple de SQS politique Amazon qui SNS autorise Amazon à envoyer des messages à votre file d'attente. Notez que cette politique est associée à la SQS file d'attente Amazon, et non à la SNS rubrique Amazon. Les actions spécifiées sont des SQS actions Amazon, et la ressource est le nom de ressource Amazon (ARN) de la file d'attente. Vous pouvez récupérer les files d'attente ARN en utilisant l'GetQueueAttributes
action.
{ "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" } } }] }
Cette politique utilise cette aws:SourceArn
condition pour restreindre l'accès à la SQS file d'attente en fonction de la source des messages envoyés. Cela garantit que seuls les messages provenant du SNS sujet spécifié (dans ce cas, arn:aws:sns:us-east- 2:444455556666 :) sont autorisés à être envoyés dans la file d'attente. MyTopic
Informations supplémentaires :
-
File d'attenteARN. Assurez-vous de récupérer le bon fichier ARN de votre SQS file d'attente Amazon à l'aide de
GetQueueAttributes
cette action. Cela ARN est essentiel pour définir les autorisations appropriées. -
Bonnes pratiques en matière de sécurité. Lorsque vous définissez des politiques, respectez toujours le principe du moindre privilège. Accordez uniquement les autorisations nécessaires au SNS sujet Amazon pour interagir avec la SQS file d'attente Amazon, et passez régulièrement en revue vos politiques pour vous assurer qu'elles sont up-to-date sécurisées
-
Politiques par défaut sur AmazonSNS. Contrairement à certains malentendus, Amazon SNS n'accorde pas automatiquement de politique par défaut autorisant d'autres personnes à Services AWS accéder aux sujets nouvellement créés. Vous devez définir et joindre des politiques explicites pour contrôler l'accès à vos SNS rubriques Amazon.
-
Tests et validation. Après avoir défini la politique, testez l'intégration en publiant des messages dans le SNS sujet Amazon et en vérifiant qu'ils sont correctement envoyés dans la SQS file d'attente Amazon. Cela permet de confirmer que la politique est correctement configurée.
Autoriser les notifications d'évènements Amazon S3 à publier dans une rubrique
Pour autoriser un compartiment Amazon S3 d'un autre Compte AWS à publier des notifications d'événements sur votre SNS rubrique Amazon, vous devez configurer la politique d'accès de la rubrique en conséquence. Cela implique de rédiger une politique personnalisée qui accorde l'autorisation au service Amazon S3 à partir du service spécifique, Compte AWS puis d'appliquer cette politique à votre SNS rubrique Amazon.
Voici comment le configurer :
-
Rédigez la politique. La politique doit accorder au service Amazon S3 (s3.amazonaws.com) les autorisations nécessaires pour publier sur votre SNS sujet Amazon. Vous utiliserez cette
SourceAccount
condition pour vous assurer que seule la personne spécifiée Compte AWS, propriétaire du compartiment Amazon S3, peut publier des notifications sur votre sujet.Voici un exemple de politique :
{ "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" } } }] }
-
Propriétaire du sujet — 111122223333 est l' Compte AWS ID propriétaire du sujet Amazon. SNS
-
Propriétaire du compartiment Amazon S3 — 444455556666 est l' Compte AWS ID propriétaire du compartiment Amazon S3 qui envoie les notifications.
-
-
Appliquez la politique. Utilisez cette
SetTopicAttributes
action pour définir cette politique pour votre SNS sujet Amazon. Cela mettra à jour le contrôle d'accès du sujet afin d'inclure les autorisations spécifiées dans votre politique personnalisée.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:111122223333:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Informations supplémentaires :
-
SourceAccount
Condition d'utilisation. CetteSourceAccount
condition garantit que seuls les événements provenant de la valeur spécifiée Compte AWS (444455556666 dans ce cas) peuvent déclencher le sujet Amazon. SNS Il s'agit d'une mesure de sécurité visant à empêcher les comptes non autorisés d'envoyer des notifications à votre sujet. -
Autres services de soutien
SourceAccount
. LaSourceAccount
condition est prise en charge par les services suivants. Il est essentiel d'utiliser cette condition lorsque vous souhaitez restreindre l'accès à votre SNS rubrique Amazon en fonction du compte d'origine.-
APIPasserelle Amazon
-
Amazon CloudWatch
-
Amazon DevOps Guru
-
Amazon EventBridge
-
Amazon GameLift
-
Amazon Pinpoint SMS et 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
-
-
Tests et validation. Après avoir appliqué la politique, testez la configuration en déclenchant un événement dans le compartiment Amazon S3 et en confirmant qu'il a bien été publié sur votre SNS rubrique Amazon. Cela permettra de garantir que votre politique est correctement configurée.
-
Bonnes pratiques en matière de sécurité. Passez régulièrement en revue et auditez vos politiques SNS thématiques Amazon pour vous assurer qu'elles sont conformes à vos exigences de sécurité. Limiter l'accès aux seuls comptes et services fiables est essentiel pour garantir la sécurité des opérations.
Autoriser Amazon SES à publier sur un sujet appartenant à un autre compte
Vous pouvez autoriser une autre Service AWS personne à publier sur une rubrique appartenant à une autre personne Compte AWS. Supposons que vous vous soyez connecté au compte 111122223333, que vous ayez ouvert Amazon et que vous ayez créé un SES e-mail. Pour publier des notifications concernant cet e-mail sur un SNS sujet Amazon appartenant au compte 444455556666, vous devez créer une politique comme celle-ci. Pour ce faire, vous devez fournir des informations sur le principal (l'autre service) et sur la propriété de chaque ressource. Le Resource
relevé fournit le sujetARN, qui inclut l'ID de compte du propriétaire du sujet, 444455556666. L'instruction "aws:SourceOwner": "111122223333"
spécifie que votre compte est propriétaire de l'e-mail.
{ "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" } } } ] }
Lors de la publication d'événements sur AmazonSNS, les services suivants sont pris en charge aws:SourceOwner
:
-
APIPasserelle Amazon
-
Amazon CloudWatch
-
Amazon DevOps Guru
-
Amazon GameLift
-
Amazon Pinpoint SMS et Voice API
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
AWS Directory Service
-
AWS Lambda
-
AWS Systems Manager Incident Manager
aws:SourceAccount
par rapport à aws:SourceOwner
Important
aws:SourceOwner
est obsolète et les nouveaux services ne peuvent être intégrés à Amazon SNS que via aws:SourceArn
et. aws:SourceAccount
Amazon assure SNS toujours la rétrocompatibilité pour les services existants actuellement pris en chargeaws:SourceOwner
.
Les clés de aws:SourceOwner
condition aws:SourceAccount
et sont toutes définies par certains Services AWS lorsqu'ils publient sur un SNS sujet Amazon. Lorsque cette option est prise en charge, la valeur sera l'identifiant de AWS compte à 12 chiffres pour le compte duquel le service publie les données. Certains services prennent en charge l'un et d'autres prennent en charge l'autre.
-
Découvrez comment Autoriser les notifications d'évènements Amazon S3 à publier dans une rubrique les notifications Amazon S3 sont utilisées
aws:SourceAccount
et consultez la liste des AWS services compatibles avec cette condition. -
Découvrez Autoriser Amazon SES à publier sur un sujet appartenant à un autre compte comment Amazon SES utilise cette condition
aws:SourceOwner
et consultez la liste des AWS services qui répondent à cette condition.
Autoriser les comptes d'une organisation AWS Organizations à publier sur un sujet dans un autre compte
Le AWS Organizations service vous aide à gérer de manière centralisée la facturation, à contrôler l'accès et la sécurité, et à partager les ressources entre vos Comptes AWS.
Vous pouvez trouver votre ID d'organisation dans la console Organisations
Dans cet exemple, n'importe quel membre Compte AWS d'une organisation myOrgId
peut publier sur Amazon une SNS rubrique associée MyTopic
à son compte444455556666
. La politique vérifie la valeur de l'ID de l'organisation à l'aide de la clé de condition globale aws:PrincipalOrgID
.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "myOrgId" } } } ] }
Autoriser la publication de n'importe quelle CloudWatch alarme dans un sujet d'un autre compte
Dans ce cas, toutes les CloudWatch alarmes associées au compte 111122223333
peuvent être publiées sur une SNS rubrique Amazon associée au compte444455556666
.
{ "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:*" } } } ] }
Restreindre la publication à un SNS sujet Amazon uniquement à partir d'un point de VPC terminaison spécifique
Dans ce cas, le sujet du compte 444455556666 est autorisé à être publié uniquement à partir du point de terminaison doté de l'VPCID. vpce-1ab2c34d
{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }