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.
Cas d'exemple pour le contrôle d'accès Amazon SNS
Cette section décrit quelques exemples de cas d'utilisation standard du contrôle d'accès.
Octroi Compte AWS accès à un sujet
Supposons que vous ayez un sujet dans Amazon SNS et que vous souhaitiez autoriser une ou plusieurs personnes Comptes AWS à effectuer une action spécifique sur ce sujet, comme publier des messages. Pour ce faire, utilisez l'action AddPermission d'API Amazon SNS.
L'AddPermissionaction vous permet de spécifier un sujet, une liste d' Compte AWS identifiants, une liste d'actions et un libellé. Amazon SNS génère et ajoute ensuite automatiquement une nouvelle déclaration de politique à la politique de contrôle d'accès de la rubrique. Vous n'avez pas besoin de rédiger vous-même la déclaration de politique : Amazon SNS s'en 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 :MyTopic, spécifiez l' Compte AWS ID 1111-2222-3333, l'Publishaction et le libellégrant-1234-publish, Amazon SNS générera et insérera la déclaration de politique suivante dans la politique de contrôle d'accès de la rubrique :
{ "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
AddPermissionsoit 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 rôles ou services IAM spécifiques. Vous pouvez le faire en utilisant l'SetTopicAttributesAPI pour mettre à jour directement l'attribut de politique. -
Meilleures pratiques en matière de sécurité : soyez prudent lorsque vous accordez des autorisations afin de vous assurer que seules les entités de confiance Comptes AWS ont accès à vos rubriques Amazon SNS. Passez régulièrement en revue et auditez les politiques associées à vos sujets afin de garantir la sécurité.
-
Limites des politiques : n'oubliez pas que la taille et la complexité des politiques Amazon SNS 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 rubrique Amazon SNS au HTTPS, vous devez créer une politique personnalisée. L'AddPermissionaction dans Amazon SNS ne vous permet pas de spécifier des restrictions de protocole lorsque vous accordez l'accès à votre rubrique. Par conséquent, vous devez rédiger manuellement une politique qui applique cette restriction, puis utiliser l'SetTopicAttributesaction pour appliquer la stratégie à votre sujet.
Voici comment créer une politique qui limite les abonnements au protocole 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 abonnements HTTPS 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é 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'
SetTopicAttributesaction de l'API Amazon SNS pour appliquer cette politique à votre sujet. Définissez l'Policyattribut du sujet en fonction de la politique JSON 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 uniquement grâce à cette
AddPermissionaction. Les politiques personnalisées offrent de la flexibilité pour les scénarios nécessitant des conditions spécifiques, telles que l'application de protocoles ou des restrictions d'adresses IP. -
Meilleures pratiques en matière de sécurité. La limitation des abonnements au protocole HTTPS renforce la sécurité de vos notifications en garantissant le chiffrement des données en transit. Passez régulièrement en revue vos politiques thématiques pour vous assurer qu'elles répondent à vos exigences de sécurité et de conformité.
-
Tester les 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 file d'attente Amazon SQS
Pour publier des messages de votre rubrique Amazon SNS dans une file d'attente Amazon SQS, vous devez configurer les autorisations appropriées sur la file d'attente Amazon SQS. Amazon SNS et Amazon SQS utilisent tous deux le langage AWS de politique de contrôle d'accès, mais vous devez définir explicitement une politique sur la file d'attente Amazon SQS pour autoriser l'envoi de messages depuis la rubrique Amazon SNS.
Vous pouvez y parvenir en utilisant l'SetQueueAttributesaction pour appliquer une politique personnalisée à la file d'attente Amazon SQS. Contrairement à Amazon SNS, Amazon SQS ne prend pas en charge l'AddPermissionaction permettant de créer des déclarations de politique assorties de conditions. Par conséquent, vous devez rédiger la politique manuellement.
Voici un exemple de politique Amazon SQS qui autorise Amazon SNS à envoyer des messages à votre file d'attente. Notez que cette politique est associée à la file d'attente Amazon SQS, et non à la rubrique Amazon SNS. Les actions spécifiées sont des actions Amazon SQS et la ressource est l'Amazon Resource Name (ARN) de la file d'attente. Vous pouvez récupérer l'ARN de la file d'attente à l'aide de GetQueueAttributes cette 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 la aws:SourceArn condition pour restreindre l'accès à la file d'attente SQS en fonction de la source des messages envoyés. Cela garantit que seuls les messages provenant de la rubrique SNS spécifiée (dans ce cas, arn:aws:sns:us-east- 2:444455556666 :) peuvent être transmis à la file d'attente. MyTopic
Informations supplémentaires :
-
ARN de la file d'attente. Assurez-vous de récupérer le bon ARN de votre file d'attente Amazon SQS à l'aide de cette
GetQueueAttributesaction. Cet ARN est essentiel pour définir les autorisations appropriées. -
Meilleures pratiques en matière de sécurité. Lorsque vous établissez des politiques, respectez toujours le principe du moindre privilège. Accordez uniquement les autorisations nécessaires à la rubrique Amazon SNS pour interagir avec la file d'attente Amazon SQS, et révisez régulièrement vos politiques pour vous assurer qu'elles sont à jour et sécurisées
-
Politiques par défaut dans Amazon SNS. Amazon SNS n'accorde pas automatiquement de politique par défaut permettant à d'autres comptes Services AWS ou à d'autres comptes d'accéder aux sujets récemment créés. Par défaut, les rubriques Amazon SNS sont créées sans autorisation, ce qui signifie qu'elles sont privées et uniquement accessibles au compte qui les a créées. Pour autoriser l'accès à d'autres Services AWS comptes ou à des administrateurs, vous devez définir et joindre explicitement une politique d'accès à la rubrique. Cela est conforme au principe du moindre privilège, qui garantit qu'aucun accès involontaire n'est accordé par défaut.
-
Tests et validation. Après avoir défini la politique, testez l'intégration en publiant les messages dans la rubrique Amazon SNS et en vérifiant qu'ils sont correctement transmis à la file d'attente Amazon SQS. 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 provenant d'un autre compartiment Compte AWS à publier des notifications d'événements sur votre rubrique Amazon SNS, 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 d'accéder au service Amazon S3 à partir de la page spécifique, Compte AWS puis d'appliquer cette politique à votre rubrique Amazon SNS.
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 rubrique Amazon SNS. Vous utiliserez
SourceAccountcette condition pour vous assurer que seule la Compte AWS personne spécifiée, 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 de la rubrique : 111122223333 est l' Compte AWS ID propriétaire de la rubrique Amazon SNS.
-
Propriétaire du compartiment Amazon S3 : 444455556666 est l' Compte AWS ID auquel appartient le compartiment Amazon S3 qui envoie des notifications.
-
-
Appliquez la politique. Utilisez cette
SetTopicAttributesaction pour définir cette politique sur votre rubrique Amazon SNS. Cela mettra à jour le contrôle d'accès de la rubrique 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 :
-
SourceAccountCondition d'utilisation. LaSourceAccountcondition garantit que seuls les événements provenant de la zone spécifiée Compte AWS (444455556666 dans ce cas) peuvent déclencher la rubrique Amazon SNS. Il s'agit d'une mesure de sécurité visant à empêcher les comptes non autorisés d'envoyer des notifications sur votre sujet. -
Autres services de soutien
SourceAccount. LaSourceAccountcondition est prise en charge par les services suivants. Il est essentiel d'utiliser cette condition lorsque vous souhaitez restreindre l'accès à votre rubrique Amazon SNS en fonction du compte d'origine.-
Amazon API Gateway
-
Amazon CloudWatch
-
Le DevOps gourou d'Amazon
-
Amazon EventBridge
-
GameLift Serveurs Amazon
-
API SMS et Voix Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon Glacier
-
Amazon SES
-
Amazon Simple Storage Service
-
AWS CodeCommit
-
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 est correctement publié sur votre rubrique Amazon SNS. Cela vous aidera à vous assurer que votre politique est correctement configurée.
-
Meilleures pratiques en matière de sécurité. Passez régulièrement en revue et auditez vos politiques thématiques Amazon SNS pour vous assurer qu'elles sont conformes à vos exigences de sécurité. Il est essentiel de limiter l'accès aux seuls comptes et services fiables pour garantir la sécurité des opérations.
Autoriser Amazon SES à publier sur une rubrique 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 êtes connecté au compte 111122223333, que vous avez ouvert Amazon SES et que vous avez créé un e-mail. Pour publier des notifications concernant cet e-mail dans une rubrique Amazon SNS appartenant au compte 444455556666, vous devez créer une politique comme la suivante. Pour ce faire, vous devez fournir des informations sur le principal (l'autre service) et sur la propriété de chaque ressource. L'instruction Resource fournit l'ARN de rubrique, qui inclut l'ID de compte du propriétaire de la rubrique, 444455556666. L'instruction "aws:SourceOwner":
"111122223333" spécifie que votre compte est propriétaire de l'e-mail.
Lors de la publication d'évènements sur Amazon SNS, les services suivants prennent en charge aws:SourceOwner :
-
Amazon API Gateway
-
Amazon CloudWatch
-
Le DevOps gourou d'Amazon
-
GameLift Serveurs Amazon
-
API SMS et Voix Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
Directory Service
-
AWS Lambda
-
AWS Systems Manager Incident Manager
aws : SourceAccount contre aws : SourceOwner
Important
aws:SourceOwner est obsolète et les nouveaux services peuvent s’intégrer à Amazon SNS uniquement via aws:SourceArn et aws:SourceAccount. Amazon SNS assure toujours la rétrocompatibilité des services existants qui prennent actuellement en charge aws:SourceOwner.
Les clés de condition aws:SourceAccount et aws:SourceOwner sont chacune définies par certains Services AWS lorsqu'ils publient dans une rubrique Amazon SNS. Lorsqu'elle est prise en charge, la valeur sera l'identifiant de AWS compte à 12 chiffres pour le compte au nom 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:SourceAccountet consultez la liste des AWS services qui prennent en charge cette condition. -
Découvrez Autoriser Amazon SES à publier sur une rubrique appartenant à un autre compte comment Amazon SES l'utilise
aws:SourceOwneret consultez la liste des AWS services qui prennent en charge cette condition.
Autoriser les comptes d'une organisation dans AWS Organizations pour publier sur un sujet dans un autre compte
Le AWS Organizations service vous permet de gérer de manière centralisée la facturation, de contrôler l'accès et la sécurité, et de partager les ressources entre vous Comptes AWS.
Vous pouvez trouver votre ID d'organisation dans la console Organisations
Dans cet exemple, n'importe quel Compte AWS membre de l'organisation myOrgId peut publier sur Amazon SNS la rubrique MyTopic du 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 sur un sujet dans un autre compte
Procédez comme suit pour appeler une rubrique Amazon SNS avec une CloudWatch alarme sur différentes pages. Comptes AWS Cet exemple utilise deux comptes :
-
Le compte A est utilisé pour créer l' CloudWatch alarme.
-
Le compte B est utilisé pour créer une rubrique SNS.
Créez une rubrique SNS dans le compte B
Connectez-vous à la console Amazon SNS
. -
Dans le panneau de navigation, choisissez Rubriques, puis Créer une rubrique.
-
Choisissez Standard pour le type de rubrique, puis créez un nom pour la rubrique.
-
Choisissez Créer une rubrique, puis copiez l'ARN de la rubrique.
-
Dans le panneau de navigation, choisissez Abonnements, puis Créer un abonnement.
-
Ajoutez l'ARN de la rubrique dans la section ARN de la rubrique, choisissez E-mail comme protocole, puis entrez une adresse e-mail.
-
Choisissez Créer un abonnement, puis vérifiez vos e-mails pour confirmer l'abonnement.
Créer une CloudWatch alarme dans le compte A
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans le volet de navigation, choisissez Alarmes, puis sélectionnez Créer des alarmes.
-
Si vous n'avez pas encore créé d'alarme, créez-en une maintenant. Sinon, sélectionnez votre métrique, puis fournissez des informations sur le seuil et les paramètres de comparaison.
-
Dans Configurer les actions, sous Notifications, choisissez Utiliser l'ARN de la rubrique pour notifier les autres comptes, puis saisissez la rubrique ARN depuis le compte B.
-
Donnez un nom à l'alarme, puis choisissez Créer une alarme.
Mettre à jour la politique d'accès de la rubrique SNS dans le compte B
Connectez-vous à la console Amazon SNS
. -
Dans le volet de navigation, choisissez Rubriques, puis sélectionnez la rubrique.
-
Choisissez Modifier, puis ajoutez les éléments suivants à la politique :
Note
Remplacez les exemples de valeurs de la politique ci-dessous par les vôtres.
Testez l'alarme
Pour tester l'alarme, modifiez le seuil d'alarme en fonction des points de données métriques ou modifiez manuellement l'état de l'alarme. Lorsque vous modifiez le seuil d'alarme ou l'état de l'alarme, vous recevez une notification par e-mail.
Solution pour utiliser une rubrique Amazon SNS locale et transférer des messages
Procédez comme suit pour activer les notifications Amazon SNS intercomptes pour CloudWatch les alarmes :
-
Créez une rubrique Amazon SNS dans le même compte que l'CloudWatchalarme (111122223333).
-
Souscrivez une fonction Lambda ou une EventBridge règle Amazon à cette rubrique Amazon SNS.
-
La fonction ou la EventBridge règle Lambda peut ensuite publier le message dans la rubrique Amazon SNS du compte cible (444455556666).
Limiter la publication à une rubrique Amazon SNS uniquement à partir d'un point de terminaison de VPC spécifique
Dans ce cas, la rubrique dans le compte 444455556666 est autorisée à publier uniquement à partir du point de terminaison de VPC avec l'ID vpce-1ab2c34d.
{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }