Passer au contenu

Comment résoudre les erreurs Access Denied ou les problèmes d'autorisation dans CodePipeline ?

Lecture de 3 minute(s)
0

Lorsque je charge mes fichiers sur AWS CodePipeline, le message d'erreur « Access Denied » s'affiche.

Résolution

Une erreur « Access Denied » ou une erreur d'autorisation peut s’afficher en raison d'autorisations insuffisantes pour le compartiment Amazon Simple Storage Service (Amazon S3). Vous pouvez également recevoir un message d'erreur si vous n'avez pas associé les autorisations appropriées à votre utilisateur et votre rôle Gestion des identités et des accès AWS (AWS IAM).

Autorisations utilisateur

Vérifiez que les autorisations de politique gérée par AWS pour créer et gérer les ressources CodePipeline sont associées à l'utilisateur IAM.

Rôle de service CodePipeline

Assurez-vous que le rôle de service associé au CodePipeline est autorisé à interagir avec les services AWS.

Modifiez l'instruction du rôle de service pour supprimer ou ajouter un accès aux ressources que vous n'utilisez pas. Pour modifier l’instruction de rôle de service afin de limiter les autorisations à une ressource particulière, incluez l’Amazon Resource Name (ARN) dans la valeur de Ressource. Associez l'exemple de politique de rôle de service CodePipeline suivant à votre ressource pour accorder les autorisations minimales :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3BucketAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::[[pipeArtifactBucketNames]]"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "{{accountId}}"
        }
      }
    },
    {
      "Sid": "AllowS3ObjectAccess",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObjectTagging",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": [
        "arn:aws:s3:::[[pipeArtifactBucketNames]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "{{accountId}}"
        }
      }
    }
  ]
}

Remarque : Remplacez pipeArtifactBucketNames par le nom de votre compartiment S3 et accountId par l’ID de votre compte AWS.

Compartiment d’artefact CodePipeline

Vérifiez que vous attribuez correctement la stratégie de compartiment et les autorisations au compartiment S3 qui stocke les artefacts du pipeline.

Pour l'accès intercompte, consultez la section Mettre à jour la stratégie de compartiment pour le compartiment d'artefact CodePipeline dans le compte B de la rubrique Comment configurer une étape source CodePipeline avec un référentiel CodeCommit intercompte ?

Autorisations AWS KMS

Vérifiez que les clés AWS Key Management Service (AWS KMS) utilisées pour le chiffrement sont conformes aux stratégies de clé qui autorisent les ressources intercompte. Associez l'exemple de politique suivant à votre rôle IAM pour ajouter des autorisations permettant l'utilisation de la clé KMS pour un rôle intercompte.

{
    "Sid": "Allow use of the key",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::account_B:role/cross_account_role_name", // allows access to cross account role
      "AWS": "arn:aws:iam::account_B:root" // allows access to any role for account_B
    },
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt",
      "kms:ReEncrypt*",
      "kms:GenerateDataKey*",
      "kms:DescribeKey"
    ],
    "Resource": "*"
}

Remarque : Remplacez account_B:role/cross_account_role_name par votre ARN.

Autorisations CodeConnections

Pour les pipelines qui utilisent AWS CodeConnections, assurez-vous que la connexion dispose des autorisations nécessaires pour accéder au référentiel source. Si la liste ne contient que certains référentiels, il se peut qu'il y ait une restriction au niveau de l'application de connecteur installée sur votre système de gestion du contrôle des sources (SCM) tiers.

Pour résoudre ce problème, mettez à jour l'application dans votre SCM avec un accès aux référentiels. Pour vérifier l'accès au référentiel dans votre SCM, vérifiez les paramètres d'accès au référentiel. Vous pouvez utiliser CodeConnections pour ajouter des fournisseurs de sources tiers aux pipelines.

AWS OFFICIELA mis à jour il y a 2 mois