

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.

# CodeBuild Autoriser l'interaction avec d'autres AWS services
<a name="setting-up-service-role"></a>

Si vous suivez les étapes décrites [Mise en route à l'aide de la console](getting-started-overview.md#getting-started) pour y accéder AWS CodeBuild pour la première fois, vous n'avez probablement pas besoin des informations contenues dans cette rubrique. Cependant, au fur et à mesure que vous continuez à utiliser CodeBuild, vous souhaiterez peut-être faire des choses telles que CodeBuild autoriser l'interaction avec d'autres AWS services.

 CodeBuild Pour pouvoir interagir avec les AWS services dépendants en votre nom, vous avez besoin d'un rôle AWS CodeBuild de service. Vous pouvez créer un rôle CodeBuild de service à l'aide des AWS CodePipeline consoles CodeBuild or. Pour plus d'informations, consultez :
+ [Création d'un projet de génération (console)](create-project.md#create-project-console)
+ [Créez un pipeline qui utilise CodeBuild (CodePipeline console)](how-to-create-pipeline-console.md)
+ [Ajouter une CodeBuild action de génération à un pipeline (CodePipeline console)](how-to-create-pipeline-add.md)
+ [Modification des paramètres d'un projet de génération (console)](change-project.md#change-project-console)

Si vous ne prévoyez pas d'utiliser ces consoles, cette section explique comment créer un rôle de CodeBuild service avec la console IAM ou le AWS CLI. 

**Important**  
CodeBuild utilise le rôle de service pour toutes les opérations effectuées en votre nom. Si le rôle comprend des autorisations que l'utilisateur ne devrait pas avoir, vous avez peut-être remonté accidentellement ses autorisations. Vérifiez que le rôle accorde le [privilège le plus faible](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).  
Le rôle de service décrit sur cette page contient une stratégie qui accorde les autorisations minimales requises pour utiliser CodeBuild. Il se peut que vous deviez ajouter des autorisations supplémentaires, en fonction de votre cas d'utilisation.<a name="setting-up-service-role-console"></a>

**Pour créer un rôle CodeBuild de service (console)**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   Vous devez vous être déjà connecté à la console à l'aide de l'une des actions suivantes :
   + Votre compte AWS root. Ceci n'est pas recommandé. Pour plus d'informations, voir [L'utilisateur Compte AWS root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) dans le *guide de l'utilisateur*.
   + Utilisateur administrateur de votre AWS compte. Pour plus d'informations, consultez la section [Création de votre premier utilisateur et groupe Compte AWS root](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) dans le *guide de l'utilisateur*.
   + Un utilisateur de votre AWS compte autorisé à effectuer les actions minimales suivantes :

     ```
     iam:AddRoleToInstanceProfile
     iam:AttachRolePolicy
     iam:CreateInstanceProfile
     iam:CreatePolicy
     iam:CreateRole
     iam:GetRole
     iam:ListAttachedRolePolicies
     iam:ListPolicies
     iam:ListRoles
     iam:PassRole
     iam:PutRolePolicy
     iam:UpdateAssumeRolePolicy
     ```

     Pour plus d'informations, consultez la section [Présentation des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dans le *guide de l'utilisateur*.

1. Dans le panneau de navigation, choisissez **Politiques**.

1. Choisissez **Create Policy** (Créer une politique).

1. Sur la page **Créer une stratégie**, choisissez **JSON**.

1. Pour la stratégie JSON, saisissez ce qui suit, puis choisissez **Review Policy (Examiner une stratégie)** :

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CloudWatchLogsPolicy",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents"
         ],
         "Resource": "*"
       },
       {
         "Sid": "CodeCommitPolicy",
         "Effect": "Allow",
         "Action": [
           "codecommit:GitPull"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3GetObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3PutObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject"
         ],
         "Resource": "*"
       },
       {
         "Sid": "ECRPullPolicy",
         "Effect": "Allow",
         "Action": [
           "ecr:BatchCheckLayerAvailability",
           "ecr:GetDownloadUrlForLayer",
           "ecr:BatchGetImage"
         ],
         "Resource": "*"
       },
       {
         "Sid": "ECRAuthPolicy",
         "Effect": "Allow",
         "Action": [
           "ecr:GetAuthorizationToken"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3BucketIdentity",
         "Effect": "Allow",
         "Action": [
           "s3:GetBucketAcl",
           "s3:GetBucketLocation"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------
**Note**  
Cette politique contient des déclarations qui autorisent l'accès à un nombre potentiellement important de AWS ressources. Pour restreindre AWS CodeBuild l'accès à des AWS ressources spécifiques, modifiez la valeur du `Resource` tableau. Pour plus d'informations, consultez la documentation de sécurité du AWS service.

1. Sur la page **Review Policy (Examiner une stratégie)**, pour **Policy Name (Nom de stratégie)**, saisissez un nom pour la stratégie (par exemple, **CodeBuildServiceRolePolicy**), puis choisissez **Create policy (Créer une stratégie)**.
**Note**  
Si vous choisissez un autre nom, veillez à l'utiliser tout au long de cette procédure.

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez **Create role** (Créer un rôle).

1. Sur la page **Créer un rôle**, le **AWS service** étant déjà sélectionné, choisissez **CodeBuild**, puis choisissez **Next:Permissions**.

1. Sur la page **Joindre des politiques d'autorisation **CodeBuildServiceRolePolicy****, sélectionnez, puis choisissez **Suivant : Révision**.

1. Sur la page **Create role and review (Créer un rôle et vérifier)**, pour **Role name (Nom du rôle)**, saisissez le nom du rôle (par exemple, **CodeBuildServiceRole**), puis choisissez **Create role (Créer un rôle)**.<a name="setting-up-service-role-cli"></a>

**Pour créer un rôle CodeBuild de service (AWS CLI)**

1. Assurez-vous d'avoir configuré la clé AWS CLI d' AWS accès et la clé d'accès AWS secrète correspondant à l'une des entités IAM, comme décrit dans la procédure précédente. Pour plus d'informations, consultez [Préparation de l'installation de l' AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.

1. Dans un répertoire vide du poste de travail local ou de l'instance où le AWS CLI est installé, créez deux fichiers nommés `create-role.json` et`put-role-policy.json`. Si vous choisissez des noms de fichier différents, substituez-les tout au long de cette procédure.

   `create-role.json`:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "codebuild.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------
**Note**  
Nous vous recommandons d’utiliser les clés de condition `aws:SourceAccount` et `aws:SourceArn` pour vous protéger contre [le problème du député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Par exemple, vous pouvez modifier la politique de confiance précédente avec les blocs de conditions suivants. `aws:SourceAccount`Il s'agit du propriétaire du CodeBuild projet et de `aws:SourceArn` l'ARN CodeBuild du projet.

   Si vous souhaitez limiter votre rôle de service à un AWS compte, cela `create-role.json` pourrait ressembler à ceci :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "codebuild.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": [
                           "111122223333"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

   Si vous souhaitez limiter votre rôle de service à un CodeBuild projet spécifique, cela `create-role.json` pourrait ressembler à ceci :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "codebuild.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject"
                   }
               }
           }
       ]
   }
   ```

------
**Note**  
Si vous ne connaissez pas ou n'avez pas encore choisi le nom de votre CodeBuild projet et que vous souhaitez une restriction de politique de confiance sur un modèle d'ARN particulier, vous pouvez remplacer cette partie de l'ARN par un caractère générique (\$1). Après avoir créé votre projet, vous pouvez mettre à jour la politique de confiance.

   `put-role-policy.json`:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CloudWatchLogsPolicy",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents"
         ],
         "Resource": "*"
       },
       {
         "Sid": "CodeCommitPolicy",
         "Effect": "Allow",
         "Action": [
           "codecommit:GitPull"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3GetObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3PutObjectPolicy",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject"
         ],
         "Resource": "*"
       },
       {
         "Sid": "S3BucketIdentity",
         "Effect": "Allow",
         "Action": [
           "s3:GetBucketAcl",
           "s3:GetBucketLocation"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------
**Note**  
Cette politique contient des déclarations qui autorisent l'accès à un nombre potentiellement important de AWS ressources. Pour restreindre AWS CodeBuild l'accès à des AWS ressources spécifiques, modifiez la valeur du `Resource` tableau. Pour plus d'informations, consultez la documentation de sécurité du AWS service.

1. Placez-vous dans le répertoire dans lequel vous avez enregistré les fichiers précédents, puis exécutez les deux commandes suivantes, une par une, dans cet ordre. Vous pouvez utiliser des valeurs différentes pour `CodeBuildServiceRole` et `CodeBuildServiceRolePolicy`, mais veillez à les substituer ici.

   ```
   aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
   ```

   ```
   aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json
   ```