Gestion de l'accès pour les SQS files d'attente Amazon cryptées avec des politiques de moindre privilège - Amazon Simple Queue Service

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.

Gestion de l'accès pour les SQS files d'attente Amazon cryptées avec des politiques de moindre privilège

Vous pouvez utiliser Amazon SQS pour échanger des données sensibles entre applications en utilisant le chiffrement côté serveur (SSE) intégré à AWS Key Management Service (KMS). Grâce à l'intégration d'Amazon SQS et AWS KMS, vous pouvez gérer de manière centralisée les clés qui protègent AmazonSQS, ainsi que les clés qui protègent vos autres AWS ressources.

Plusieurs AWS services peuvent agir comme des sources d'événements qui envoient des événements à AmazonSQS. Pour permettre à une source d'événements d'accéder à la SQS file d'attente Amazon cryptée, vous devez configurer la file d'attente avec une clé gérée par le client AWS KMS . Utilisez ensuite la politique clé pour autoriser le service à utiliser les AWS KMS API méthodes requises. Le service requiert également des autorisations pour authentifier l'accès et permettre à la file d'attente d'envoyer des événements. Vous pouvez y parvenir en utilisant une SQS politique Amazon, qui est une politique basée sur les ressources que vous pouvez utiliser pour contrôler l'accès à la SQS file d'attente Amazon et à ses données.

Les sections suivantes fournissent des informations sur la manière de contrôler l'accès à votre SQS file d'attente Amazon cryptée par le biais de la SQS politique Amazon et de la politique AWS KMS clé. Les stratégies décrites dans ce guide vous aideront à respecter le principe de moindre privilège.

Ce guide décrit également comment les politiques basées sur les ressources résolvent le problème de confusion des adjoints en utilisant les clés contextuelles aws:SourceArn, aws:SourceAccount, et aws:PrincipalOrgIDde condition globale. IAM

Présentation

Dans cette rubrique, nous allons vous présenter un cas d'utilisation courant pour illustrer comment vous pouvez créer la politique clé et la politique de SQS file d'attente Amazon. Ce cas d'utilisation est représenté dans l'image suivante.

Publier SNS des messages Amazon sur AmazonSQS.

Dans cet exemple, le générateur du message est une rubrique Amazon Simple Notification Service (SNS), configurée pour transférer les messages vers votre SQS file d'attente Amazon cryptée. Le consommateur de messages est un service informatique, tel qu'une AWS Lambdafonction, une instance Amazon Elastic Compute Cloud (EC2) ou un AWS Fargateconteneur. Votre SQS file d'attente Amazon est ensuite configurée pour envoyer les messages ayant échoué à une file d'attente de lettres mortes () DLQ. Cela est utile pour le débogage de votre application ou de votre système de messagerie, car DLQs cela vous permet d'isoler les messages non consommés afin de déterminer pourquoi leur traitement a échoué. Dans la solution définie dans cette rubrique, un service de calcul tel qu'une fonction Lambda est utilisé pour traiter les messages stockés dans la file d'attente AmazonSQS. Si le destinataire du message se trouve dans un cloud privé virtuel (VPC), la déclaration de DenyReceivingIfNotThroughVPCEpolitique incluse dans ce guide vous permet de limiter la réception des messages à ce point spécifiqueVPC.

Note

Ce guide contient uniquement les IAM autorisations requises sous forme de déclarations de politique. Pour élaborer la politique, vous devez ajouter les déclarations à votre SQS politique Amazon ou à votre politique AWS KMS clé. Ce guide ne fournit pas d'instructions sur la façon de créer la SQS file d'attente Amazon ou la AWS KMS clé. Pour savoir comment créer ces ressources, consultez les sections Création d'une SQS file d'attente Amazon et Création de clés.

La SQS politique Amazon définie dans ce guide ne permet pas de rediriger les messages directement vers la même SQS file d'attente Amazon ou une autre.

Politique relative à la clé du moindre privilège pour Amazon SQS

Dans cette section, nous décrivons les autorisations de moindre privilège requises AWS KMS pour la clé gérée par le client que vous utilisez pour chiffrer votre file d'attente Amazon. SQS Avec ces autorisations, vous pouvez limiter l'accès aux seules entités prévues en implémentant le moindre privilège. La stratégie de clé doit comprendre les instructions de stratégie suivantes, que nous décrivons en détail ci-dessous :

Accorder des autorisations d'administrateur à la AWS KMS clé

Pour créer une AWS KMS clé, vous devez fournir des autorisations d' AWS KMS administrateur pour le IAM rôle que vous utilisez pour déployer la AWS KMS clé. Ces autorisations d'administrateur sont définies dans l'instruction de stratégie AllowKeyAdminPermissions suivante. Lorsque vous ajoutez cette déclaration à votre politique AWS KMS clé, assurez-vous de remplacer <admin-role ARN> avec le nom de ressource Amazon (ARN) du IAM rôle utilisé pour déployer la AWS KMS clé, gérer la AWS KMS clé, ou les deux. Il peut s'agir du IAM rôle de votre pipeline de déploiement ou du rôle d'administrateur de votre organisation au sein de vos AWS Organisations.

{ "Sid": "AllowKeyAdminPermissions", "Effect": "Allow", "Principal": { "AWS": [ "<admin-role ARN>" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }
Note

Dans une politique AWS KMS clé, la valeur de l'Resourceélément doit être*, ce qui signifie « cette AWS KMS clé ». L'astérisque (*) identifie la AWS KMS clé à laquelle la politique clé est attachée.

Accorde l'accès en lecture seule aux métadonnées de clés

Pour accorder à d'autres IAM rôles un accès en lecture seule à vos métadonnées clés, ajoutez la AllowReadAccessToKeyMetaData déclaration à votre politique clé. Par exemple, l'instruction suivante vous permet de répertorier toutes les AWS KMS clés de votre compte à des fins d'audit. Cette instruction accorde à l'utilisateur AWS root un accès en lecture seule aux métadonnées clés. Par conséquent, tout IAM principal du compte peut avoir accès aux métadonnées clés lorsque ses politiques basées sur l'identité disposent des autorisations répertoriées dans l'instruction suivante :kms:Describe*,kms:Get*, et. kms:List* Assurez-vous de remplacer <account-ID> avec vos propres informations.

{ "Sid": "AllowReadAcesssToKeyMetaData", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<accountID>:root" ] }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource": "*" }

SNSKMSAutoriser Amazon SNS à publier des messages dans la file d'attente

Pour permettre à votre SNS rubrique Amazon de publier des messages dans votre SQS file d'attente Amazon cryptée, ajoutez la déclaration de AllowSNSToSendToSQS politique à votre politique clé. Cette déclaration autorise Amazon SNS à utiliser la AWS KMS clé pour publier dans votre SQS file d'attente Amazon. Assurez-vous de remplacer <account-ID> avec vos propres informations.

Note

La déclaration contenue Condition dans la déclaration limite l'accès au seul SNS service Amazon sur le même AWS compte.

{ "Sid": "AllowSNSToSendToSQS", "Effect": "Allow", "Principal": { "Service": [ "sns.amazonaws.com" ] }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "<account-id>" } } }

Permettre aux consommateurs de déchiffrer les messages de la file d'attente

La AllowConsumersToReceiveFromTheQueue déclaration suivante accorde au consommateur de SQS messages Amazon les autorisations requises pour déchiffrer les messages reçus de la SQS file d'attente Amazon cryptée. Lorsque vous joignez la déclaration de politique, remplacez <consumer's runtime role ARN> avec le rôle IAM d'exécution ARN du consommateur de messages.

{ "Sid": "AllowConsumersToReceiveFromTheQueue", "Effect": "Allow", "Principal": { "AWS": [ "<consumer's execution role ARN>" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

SQSPolitique d'Amazon relative au moindre privilège

Cette section vous explique les politiques relatives aux SQS files d'attente Amazon relatives au moindre privilège pour le cas d'utilisation couvert par ce guide (par exemple, Amazon SNS to AmazonSQS). La stratégie définie est conçue pour empêcher tout accès involontaire en utilisant à la fois des instructions Deny et Allow. Les instructions Allow donnent accès à l'entité ou aux entités prévues. Les Deny instructions empêchent d'autres entités involontaires d'accéder à la SQS file d'attente Amazon, tout en excluant l'entité prévue dans la condition de politique.

La SQS politique d'Amazon inclut les déclarations suivantes, que nous décrivons en détail ci-dessous :

Restreindre les autorisations SQS de gestion d'Amazon

La déclaration de RestrictAdminQueueActions politique suivante limite les autorisations de SQS gestion d'Amazon au seul IAM rôle ou aux rôles que vous utilisez pour déployer la file d'attente, gérer la file d'attente, ou les deux. Assurez-vous de remplacer le <placeholder values> avec vos propres informations. Spécifiez le ARN IAM rôle utilisé pour déployer la SQS file d'attente Amazon, ainsi que les rôles ARNs d'administrateur qui doivent disposer SQS des autorisations de gestion Amazon.

{ "Sid": "RestrictAdminQueueActions", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "sqs:AddPermission", "sqs:DeleteQueue", "sqs:RemovePermission", "sqs:SetQueueAttributes" ], "Resource": "<SQS Queue ARN>", "Condition": { "StringNotLike": { "aws:PrincipalARN": [ "arn:aws:iam::<account-id>:role/<deployment-role-name>", "<admin-role ARN>" ] } } }

Restreindre les actions de SQS file d'attente Amazon à l'organisation spécifiée

Pour protéger vos SQS ressources Amazon contre tout accès externe (accès par une entité extérieure à votre AWS organisation), utilisez la déclaration suivante. Cette déclaration limite l'accès à la SQS file d'attente Amazon à l'organisation que vous spécifiez dans leCondition. Assurez-vous de remplacer <SQS queue ARN> avec le ARN IAM rôle utilisé pour déployer la SQS file d'attente Amazon ; et <org-id>, avec l'identifiant de votre organisation.

{ "Sid": "DenyQueueActionsOutsideOrg", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "sqs:AddPermission", "sqs:ChangeMessageVisibility", "sqs:DeleteQueue", "sqs:RemovePermission", "sqs:SetQueueAttributes", "sqs:ReceiveMessage" ], "Resource": "<SQS queue ARN>", "Condition": { "StringNotEquals": { "aws:PrincipalOrgID": [ "<org-id>" ] } } }

Accorder SQS des autorisations Amazon aux consommateurs

Pour recevoir des messages depuis la SQS file d'attente Amazon, vous devez fournir à l'utilisateur du message les autorisations nécessaires. La déclaration de politique suivante accorde au consommateur, que vous spécifiez, les autorisations requises pour consommer les messages de la SQS file d'attente Amazon. Lorsque vous ajoutez la déclaration à votre SQS politique Amazon, assurez-vous de remplacer <consumer's IAM runtime role ARN> avec le ARN rôle IAM d'exécution utilisé par le consommateur ; et <SQS queue ARN>, avec le ARN IAM rôle utilisé pour déployer la SQS file d'attente Amazon.

{ "Sid": "AllowConsumersToReceiveFromTheQueue", "Effect": "Allow", "Principal": { "AWS": "<consumer's IAM execution role ARN>" }, "Action": [ "sqs:ChangeMessageVisibility", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ReceiveMessage" ], "Resource": "<SQS queue ARN>" }

Pour empêcher d'autres entités de recevoir des messages depuis la SQS file d'attente Amazon, ajoutez l'DenyOtherConsumersFromReceivinginstruction à la politique de SQS file d'attente Amazon. Cette instruction limite la consommation des messages au consommateur spécifié et n'autorise aucun autre consommateur à y avoir accès, même lorsque ses autorisations d'identité l'y autorisent. Assurez-vous de remplacer <SQS queue ARN> and <consumer’s runtime role ARN> avec vos propres informations.

{ "Sid": "DenyOtherConsumersFromReceiving", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "sqs:ChangeMessageVisibility", "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": "<SQS queue ARN>", "Condition": { "StringNotLike": { "aws:PrincipalARN": "<consumer's execution role ARN>" } } }

Application du chiffrement en transit

La déclaration DenyUnsecureTransport de politique suivante oblige les consommateurs et les producteurs à utiliser des canaux sécurisés (TLSconnexions) pour envoyer et recevoir des messages depuis la SQS file d'attente Amazon. Assurez-vous de remplacer <SQS queue ARN> avec le ARN IAM rôle utilisé pour déployer la SQS file d'attente Amazon.

{ "Sid": "DenyUnsecureTransport", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "sqs:ReceiveMessage", "sqs:SendMessage" ], "Resource": "<SQS queue ARN>", "Condition": { "Bool": { "aws:SecureTransport": "false" } } }

Limiter la transmission de messages à un SNS sujet Amazon spécifique

La déclaration AllowSNSToSendToTheQueue de politique suivante autorise le SNS sujet Amazon spécifié à envoyer des messages à la SQS file d'attente Amazon. Assurez-vous de remplacer <SQS queue ARN> avec le ARN IAM rôle utilisé pour déployer la SQS file d'attente Amazon ; et <SNS topic ARN>, sur le SNS thème AmazonARN.

{ "Sid": "AllowSNSToSendToTheQueue", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "<SQS queue ARN>", "Condition": { "ArnLike": { "aws:SourceArn": "<SNS topic ARN>" } } }

L'instruction de stratégie DenyAllProducersExceptSNSFromSending suivante empêche les autres producteurs d'envoyer des messages à la file d'attente. Remplacez <SQS queue ARN> and <SNS topic ARN> avec vos propres informations.

{ "Sid": "DenyAllProducersExceptSNSFromSending", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "sqs:SendMessage", "Resource": "<SQS queue ARN>", "Condition": { "ArnNotLike": { "aws:SourceArn": "<SNS topic ARN>" } } }

(Facultatif) Restreindre la réception des messages à un point de VPC terminaison spécifique

Pour limiter la réception de messages à un point de VPCterminaison spécifique, ajoutez la déclaration de politique suivante à votre politique de SQS file d'attente Amazon. Cette instruction empêche un consommateur de messages de recevoir des messages de la file d'attente à moins que les messages ne proviennent du point de VPC terminaison souhaité. Remplacez <SQS queue ARN> avec le ARN IAM rôle utilisé pour déployer la SQS file d'attente Amazon ; et <vpce_id> avec l'ID du VPC point de terminaison.

{ "Sid": "DenyReceivingIfNotThroughVPCE", "Effect": "Deny", "Principal": "*", "Action": [ "sqs:ReceiveMessage" ], "Resource": "<SQS queue ARN>", "Condition": { "StringNotEquals": { "aws:sourceVpce": "<vpce id>" } } }

Déclarations SQS de politique d'Amazon relatives à la file d'attente de lettres mortes

Ajoutez les déclarations de politique suivantes, identifiées par leur ID de déclaration, à votre politique DLQ d'accès :

  • RestrictAdminQueueActions

  • DenyQueueActionsOutsideOrg

  • AllowConsumersToReceiveFromTheQueue

  • DenyOtherConsumersFromReceiving

  • DenyUnsecureTransport

Outre l'ajout des déclarations de politique précédentes à votre politique DLQ d'accès, vous devez également ajouter une déclaration visant à restreindre la transmission de messages aux SQS files d'attente Amazon, comme décrit dans la section suivante.

Limiter la transmission des messages aux SQS files d'attente Amazon

Pour restreindre l'accès aux seules SQS files d'attente Amazon provenant du même compte, ajoutez la déclaration de DenyAnyProducersExceptSQS politique suivante à la politique de DLQ file d'attente. Cette déclaration ne limite pas la transmission de messages à une file d'attente spécifique, car vous devez déployer le DLQ avant de créer la file d'attente principale, de sorte que vous ne connaîtrez pas Amazon SQS ARN lorsque vous créerez leDLQ. Si vous devez limiter l'accès à une seule SQS file d'attente Amazon, modifiez le aws:SourceArn in the Condition ARN de votre file d'attente SQS source Amazon dès que vous le savez.

{ "Sid": "DenyAnyProducersExceptSQS", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "sqs:SendMessage", "Resource": "<SQS DLQ ARN>", "Condition": { "ArnNotLike": { "aws:SourceArn": "arn:aws:sqs:<region>:<account-id>:*" } } }
Important

Les politiques de SQS file d'attente Amazon définies dans ce guide ne limitent pas l'sqs:PurgeQueueaction à un ou IAM plusieurs rôles en particulier. Cette sqs:PurgeQueue action vous permet de supprimer tous les messages de la SQS file d'attente Amazon. Vous pouvez également utiliser cette action pour modifier le format du message sans remplacer la SQS file d'attente Amazon. Lors du débogage d'une application, vous pouvez effacer la SQS file d'attente Amazon pour supprimer les messages potentiellement erronés. Lorsque vous testez l'application, vous pouvez générer un volume élevé de messages dans la SQS file d'attente Amazon, puis purger la file d'attente pour repartir à zéro avant de passer à la production. La raison pour laquelle cette action n'est pas limitée à un certain rôle est que ce rôle peut ne pas être connu lors du déploiement de la SQS file d'attente Amazon. Vous devrez ajouter cette autorisation à la stratégie basée sur l'identité du rôle pour pouvoir purger la file d'attente.

Prévention des problèmes de député confus entre services

Le problème de député confus est un problème de sécurité dans lequel une entité qui n'a pas l'autorisation d'effectuer une action peut contraindre une entité plus privilégiée à effectuer cette action. Pour éviter cela, AWS fournit des outils qui vous aident à protéger votre compte si vous fournissez à des tiers (comptes croisés) ou à d'autres AWS services (appelés interservices) un accès aux ressources de votre compte. Les instructions de stratégie de cette section peuvent vous aider à éviter le problème de député confus entre services.

L'usurpation d'identité entre services peut se produire lorsqu'un service (le service appelant) appelle un autre service (le service appelé). Le service appelant peut être manipulé pour utiliser ses autorisations afin d'agir sur les ressources d'un autre client de sorte qu'il n'y aurait pas accès autrement. Pour éviter ce problème, les politiques basées sur les ressources définies dans cet article utilisent les clés contextuelles aws:SourceArnaws:SourceAccount, et de IAM condition aws:PrincipalOrgIDglobale. Cela limite les autorisations dont dispose un service pour une ressource spécifique, un compte spécifique ou une organisation spécifique dans AWS Organizations.

Utiliser IAM Access Analyzer pour vérifier l'accès entre comptes

Vous pouvez utiliser AWS IAMAccess Analyzer pour passer en revue vos politiques de SQS file d'attente Amazon et vos politiques AWS KMS clés et vous avertir lorsqu'une SQS file d'attente ou une AWS KMS clé Amazon autorise l'accès à une entité externe. IAMAccess Analyzer permet d'identifier les ressources de votre organisation et les comptes partagés avec une entité située en dehors de la zone de confiance. Cette zone de confiance peut être un AWS compte ou l'organisation au sein d' AWS Organizations que vous spécifiez lorsque vous activez IAM Access Analyzer.

IAMAccess Analyzer identifie les ressources partagées avec des acteurs externes en utilisant un raisonnement basé sur la logique pour analyser les politiques basées sur les ressources dans votre environnement. AWS Pour chaque instance d'une ressource qui est partagée en dehors de votre zone de confiance, Access Analyzer génère un résultat. Les résultats comprennent des renseignements sur l'accès et le principal externe à qui il est accordé. Révisez les résultats pour déterminer si l'accès est intentionnel et sûr, ou s'il est non intentionnel et représente un risque pour la sécurité. En cas d'accès involontaire, consultez la stratégie concernée et corrigez-la. Consultez ce billet de blog pour plus d'informations sur la manière dont AWS IAM Access Analyzer identifie les accès involontaires à vos AWS ressources.

Pour plus d'informations sur AWS IAM Access Analyzer, consultez la documentation AWS IAMAccess Analyzer.