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.
CodeBuildcréation d'un rôle de provisionnement
Des outils d'infrastructure en tant que code (iAAC) tels queAWS CloudFormationet Terraform nécessitent des autorisations pour les nombreux types deAWSressources. Par exemple, si un modèle iAAC déclare un compartiment Amazon S3, il a besoin d'autorisations pour créer, lire, mettre à jour et supprimer des compartiments Amazon S3. Limiter les rôles aux autorisations minimales requises est considéré comme une bonne pratique en matière de sécurité. Compte tenu de l'ampleur deAWSressources, il est difficile de créer des politiques de moindre privilège pour les modèles iAAC, en particulier lorsque les ressources gérées par ces modèles peuvent changer ultérieurement. Par exemple, lors des dernières modifications apportées à un modèle géré parAWS Proton, vous ajoutez une ressource de base de données RDS.
La configuration des autorisations appropriées permet de faciliter les déploiements de votre IaC.AWS Proton CodeBuildLe provisionnement exécute des commandes CLI arbitraires fournies par le client dans unCodeBuildprojet situé dans le compte du client. Généralement, ces commandes créent et suppriment une infrastructure à l'aide d'un outil d'infrastructure en tant que code (iAAC) tel queAWS CDK. Quand unAWSla ressource déploie dont le modèle utiliseCodeBuildApprovisionnement,AWSva démarrer une compilation dans unCodeBuildprojet géré parAWS. Un rôle est transmis àCodeBuild, quiCodeBuildsuppose d'exécuter des commandes. Ce rôle, appeléCodeBuildLe rôle de provisionnement est fourni par le client et contient les autorisations requises pour provisionner l'infrastructure. Il est censé être assumé uniquement parCodeBuildet mêmeAWS ProtonJe ne peux pas le supposer.
Création du rôle
LeCodeBuildLe rôle de provisionnement peut être créé dans la console IAM ou dansAWS CLI. Pour le créer dansAWS CLI:
aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess
Cela joint également leAWSProtonCodeBuildProvisioningBasicAccess
, qui contient les autorisations minimales requises parCodeBuildservice pour exécuter une compilation.
Si vous préférez utiliser la console, assurez-vous de ce qui suit lorsque vous créez le rôle :
-
Pour une entité de confiance, sélectionnezAWSservice, puis sélectionnezCodeBuild.
-
À l'étape Ajouter des autorisations, sélectionnez
AWSProtonCodeBuildProvisioningBasicAccess
et toute autre politique que vous souhaitez joindre.
Accès administrateur
Si vous joignez leAdministratorAccess
politique à l'égard duCodeBuildRôle de provisionnement, il garantira qu'aucun modèle iAAC n'échouera en raison d'un manque d'autorisations. Cela signifie également que toute personne capable de créer un modèle d'environnement ou un modèle de service peut effectuer des actions au niveau de l'administrateur, même si cet utilisateur n'est pas administrateur.AWS Protonne recommande pas d'utiliserAdministatorAccess
avec leCodeBuildRôle de provisionnement. Si vous décidez d'utiliserAdministratorAccess
avec leCodeBuildRôle de provisionnement, faites-le dans un environnement sandbox.
Vous pouvez créer un rôle avecAdministratorAccess
dans la console IAM ou en exécutant cette commande :
aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Création d'un rôle à portée minimale
Si vous souhaitez créer un rôle avec des autorisations minimales, il existe plusieurs approches :
-
Déployez avec des autorisations d'administrateur, puis limitez le rôle. Nous vous recommandons d'utiliserAnalyseur d'accès IAM.
-
Utilisez des politiques gérées pour donner accès aux services que vous prévoyez d'utiliser.
AWS CDK
Si vous utilisezAWS CDKavecAWS Proton, et tu as courucdk bootstrap
sur chaque compte/région d'environnement, alors il existe déjà un rôle pourcdk deploy
. Dans ce cas, joignez la politique suivante auCodeBuildRôle de provisionnement :
{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
VPC personnalisé
Si tu décides de courirCodeBuilddans unVPC personnalisé, vous aurez besoin des autorisations suivantes dans votreCodeBuildrôle :
{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }
Vous pouvez également utiliserAmazonEC2FullAccess
politique gérée, bien que cela inclue des autorisations dont vous n'avez peut-être pas besoin. Pour associer la politique gérée à l'aide de l'interface de ligne de commande :
aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess