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:PrincipalOrgID
de condition globale. IAM
Rubriques
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.
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'DenyOtherConsumersFromReceiving
instruction à 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<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:PurgeQueue
action à 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:SourceArn
aws:SourceAccount
, et de IAM condition aws:PrincipalOrgID
globale. 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 AWS IAM Access Analyzer, consultez la documentation AWS IAMAccess Analyzer.