Comment puis-je résoudre les erreurs AccessDenied sur les appels d'API Amazon SQS ?

Dernière mise à jour : 03-09-2021

Lorsque j'exécute un appel d'API Amazon Simple Queue Service (Amazon SQS), je reçois une erreur AccessDenied similaire à l'une des options suivantes :

« Une erreur s'est produite (AccessDenied) lors de l'appel de l'opération SendMessage : l'accès à la ressource https://sqs.us-east-1.amazonaws.com/ est refusé. »

« Une erreur s'est produite (KMS.AccessDeniedException) lors de l'appel de l'opération SendMessage : l'utilisateur arn:aws:iam::xxxxx:user/xxxx n'est pas autorisé à effectuer : KMS:GenerateDataKey sur la ressource : arn:aws:kms:kms:us-east-1:xxxx:key/xxxx avec un refus explicite »

Comment résoudre ce problème ?

Résolution

Stratégie d'accès Amazon SQS et stratégie IAM

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis AWS Command Line Interface (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

  • La stratégie d'accès SQS ou la stratégie AWS Identity and Access Management (IAM) doit inclure des autorisations permettant d'autoriser explicitement l'accès à l'action.
  • Si la file d'attente SQS se trouve dans un autre compte, la stratégie d'accès SQS et la stratégie IAM doivent autoriser explicitement l'accès.
    Important
     : un refus explicite dans l'une ou l'autre des stratégies remplace une autorisation explicite.
  • Si la stratégie utilise un élément de condition, vérifiez si la condition limite l'accès.
  • Si l'utilisateur ou le rôle appartient à une organisation AWS Organizations qui utilise une politique de contrôle des services (SCP), vérifiez que le SCP ne bloque pas l'utilisateur ou le rôle.

Pour confirmer l'identité IAM utilisée pour passer des appels d'API, exécutez la commande AWS CLI get-caller-identity suivante :

aws sts get-caller-identity

Pour plus d'informations sur les autorisations d'accès Amazon SQS, consultez la rubrique Quelles autorisations faut-il pour accéder à une file d'attente Amazon SQS ?

Autorisations KMS

Si le chiffrement côté serveur (SSE) de votre file d'attente Amazon SQS est activé, des autorisations doivent être accordées à la fois aux producteurs et aux consommateurs. Les autorisations requises peuvent être fournies par une clé AWS KMS gérée par AWS ou par une clé gérée par le client. Une stratégie de clé gérée par le client doit inclure des autorisations d'accès pour chaque producteur et consommateur de file d'attente. Vous pouvez également mettre à jour la stratégie IAM afin d'inclure les autorisations KMS requises pour la clé KMS.

  • Autorisations requises pour les producteurs : kms:GenerateDataKey et kms:Decrypt
  • Autorisations requises pour les consommateurs : kms:Decrypt

Pour accéder à une file d'attente SSE Amazon SQS depuis un autre compte, la file d'attente doit utiliser une clé gérée par le client. Vous ne pouvez pas utiliser de clé gérée par AWS car seules les stratégies de clés gérées par le client peuvent être modifiées. La stratégie de clé KMS doit autoriser l'accès entre comptes à la clé KMS, et la stratégie IAM doit inclure des autorisations pour accéder à la clé KMS.

Pour plus d'informations, voir Gestion des clés.

Stratégie de point de terminaison VPC

Si vous accédez à SQS via un point de terminaison Amazon Virtual Private Cloud (Amazon VPC), la stratégie de point de terminaison VPC SQS doit en autoriser l'accès.

L'exemple de stratégie de point de terminaison VPC suivant spécifie que l'utilisateur IAM MyUser est autorisé à envoyer des messages à la file d'attente SQS MyQueue. Les autres actions, utilisateurs IAM et ressources SQS se voient refuser l'accès via le point de terminaison VPC.

{
   "Statement": [{
      "Action": ["sqs:SendMessage"],
      "Effect": "Allow",
      "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue",
      "Principal": {
        "AWS": "arn:aws:iam:123456789012:user/MyUser"
      }
   }]
}

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?