AWS CDK meilleures pratiques en matière de sécurité - AWS Cloud Development Kit (AWS CDK) v2

Ceci est le guide du AWS CDK développeur de la version 2. L'ancienne CDK version 1 est entrée en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.

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.

AWS CDK meilleures pratiques en matière de sécurité

AWS Cloud Development Kit (AWS CDK) Il s'agit d'un outil puissant que les développeurs peuvent utiliser pour configurer Services AWS et approvisionner l'infrastructure AWS. Avec tout outil offrant un tel contrôle et de telles fonctionnalités, les organisations devront établir des politiques et des pratiques pour garantir que l'outil est utilisé de manière sûre et sécurisée. Par exemple, les entreprises peuvent souhaiter restreindre l'accès des développeurs à des services spécifiques afin de s'assurer qu'elles ne peuvent pas altérer les mesures de conformité ou de contrôle des coûts configurées dans le compte.

Souvent, il peut y avoir une tension entre sécurité et productivité, et chaque organisation doit trouver le juste équilibre pour elle-même. Cette rubrique présente les meilleures pratiques de sécurité AWS CDK que vous pouvez prendre en compte lors de la création et de la mise en œuvre de vos propres politiques de sécurité. Les bonnes pratiques suivantes doivent être considérées comme des instructions générales et ne représentent pas une solution de sécurité complète. Étant donné que ces bonnes pratiques peuvent ne pas être appropriées ou suffisantes pour votre environnement, considérez-les comme des remarques utiles plutôt que comme des recommandations.

Suivre les bonnes pratiques de sécurité de IAM

AWS Identity and Access Management (IAM) est un service Web qui vous permet de contrôler en toute sécurité l'accès aux AWS ressources. Organisations, individus et AWS CDK utilisation IAM pour gérer les autorisations qui déterminent les actions pouvant être effectuées sur les AWS ressources. Lors de l'utilisationIAM, suivez les meilleures pratiques en matière de IAM sécurité. Pour plus d'informations, consultez les meilleures pratiques de sécurité et les cas d'utilisation AWS Identity and Access Management dans le guide de IAM l'utilisateur.

Gérez les autorisations pour AWS CDK

Lorsque vous utiliserez l' AWS CDK ensemble de votre organisation pour développer et gérer votre infrastructure, vous devez envisager les scénarios suivants dans lesquels la gestion des autorisations sera importante :

  • Autorisations pour AWS CDK les déploiements : ces autorisations déterminent qui peut apporter des modifications à vos AWS ressources et quelles modifications ils peuvent apporter.

  • Autorisations entre ressources : il s'agit des autorisations qui permettent les interactions entre les AWS ressources que vous créez et gérez avec le AWS CDK.

Gérer les autorisations pour les AWS CDK déploiements

Les développeurs utilisent le AWS CDK pour définir l'infrastructure localement sur leurs machines de développement. Cette infrastructure est mise en œuvre dans AWS des environnements via des déploiements qui impliquent généralement l'utilisation de l'interface de ligne de AWS CDK commande (AWS CDK CLI). Dans le cadre des déploiements, vous souhaiterez peut-être contrôler les modifications que les développeurs peuvent apporter à vos environnements. Par exemple, vous pouvez avoir une ressource Amazon Virtual Private Cloud (AmazonVPC) que vous ne souhaitez pas que les développeurs modifient.

Par défaut, il CDK CLI utilise une combinaison des informations d'identification de sécurité de l'acteur et IAM des rôles créés lors du démarrage pour recevoir des autorisations pour les déploiements. Les informations d'identification de sécurité de l'acteur sont d'abord utilisées pour l'authentification, puis les IAM rôles sont supposés effectuer diverses actions pendant le déploiement, telles que l'utilisation du AWS CloudFormation service pour créer des ressources. Pour plus d'informations sur le fonctionnement CDK des déploiements, notamment sur les IAM rôles utilisés, consultezDéployer AWS CDK des applications.

Pour limiter les personnes autorisées à effectuer des déploiements et les actions pouvant être effectuées pendant le déploiement, tenez compte des points suivants :

  • Les informations de sécurité de l'acteur constituent le premier ensemble d'informations d'identification utilisé pour s'authentifier auprès de AWS. À partir de là, les autorisations utilisées pour effectuer des actions pendant le déploiement sont accordées aux IAM rôles assumés pendant le flux de travail de déploiement. Vous pouvez limiter les personnes autorisées à effectuer des déploiements en limitant les personnes autorisées à assumer ces rôles. Vous pouvez également limiter les actions pouvant être effectuées pendant le déploiement en remplaçant ces IAM rôles par les vôtres.

  • Les autorisations pour effectuer des déploiements sont accordées à. DeploymentActionRole Vous pouvez contrôler les autorisations relatives aux personnes autorisées à effectuer des déploiements en limitant le nombre de personnes autorisées à assumer ce rôle. En utilisant un rôle pour les déploiements, vous pouvez effectuer des déploiements entre comptes, car le rôle peut être assumé par AWS des identités d'un autre compte. Par défaut, toutes les identités Compte AWS associées à la déclaration de AssumeRole politique appropriée peuvent assumer ce rôle.

  • Les autorisations de création et de modification de ressources par le biais AWS CloudFormation deCloudFormationExecutionRole. Ce rôle nécessite également l'autorisation de lire à partir des ressources du bootstrap. Vous contrôlez les autorisations dont disposent CDK les déploiements en utilisant une politique gérée pour le CloudFormationExecutionRole et éventuellement en configurant une limite d'autorisations. Par défaut, ce rôle dispose AdministratorAccess d'autorisations sans limite d'autorisation.

  • Les autorisations d'interaction avec les ressources bootstrap sont accordées à FilePublishingRole etImagePublishingRole. L'acteur effectuant les déploiements doit être autorisé à assumer ces rôles. Par défaut, toutes les identités Compte AWS associées à la déclaration de AssumeRole politique appropriée peuvent assumer ce rôle.

  • Les autorisations permettant d'accéder aux ressources bootstrap pour effectuer des recherches sont accordées au. LookupRole L'acteur effectuant les déploiements doit être autorisé à assumer ce rôle. Par défaut, ce rôle a readOnly accès aux ressources du bootstrap. Par défaut, toutes les identités Compte AWS associées à la déclaration de AssumeRole politique appropriée peuvent assumer ce rôle.

Pour configurer les IAM identités de votre ordinateur Compte AWS avec l'autorisation d'assumer ces rôles, ajoutez une politique contenant l'énoncé de politique suivant aux identités :

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AssumeCDKRoles", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "*", "Condition": { "StringEquals": { "iam:ResourceTag/aws-cdk:bootstrap-role": [ "image-publishing", "file-publishing", "deploy", "lookup" ] } } }] }

Modifier les autorisations pour les rôles assumés lors du déploiement

En modifiant les autorisations pour les rôles assumés lors du déploiement, vous pouvez gérer les actions qui peuvent être effectuées pendant le déploiement. Pour modifier les autorisations, vous créez vos propres IAM rôles et vous les spécifiez lors du démarrage de votre environnement. Lorsque vous personnalisez le bootstrap, vous devez personnaliser la synthèse. Pour les instructions générales, voirPersonnaliser le AWS CDK bootstrap.

Modifier les informations d'identification et les rôles de sécurité utilisés lors du déploiement

Les rôles et les ressources d'amorçage utilisés lors des déploiements sont déterminés par le synthétiseur de CDK pile que vous utilisez. Pour modifier ce comportement, vous pouvez personnaliser la synthèse. Pour de plus amples informations, veuillez consulter Configuration et exécution de la synthèse des CDK piles.

Considérations relatives à l'octroi d'un accès avec le moindre privilège

L'octroi du moindre privilège d'accès est une bonne pratique de sécurité que nous vous recommandons de prendre en compte lors de l'élaboration de votre stratégie de sécurité. Pour plus d'informations, consultez SEC03-BP02 Accorder le moindre privilège d'accès dans le guide Well-Architected Framework AWS .

L'octroi du moindre privilège d'accès implique souvent de restreindre IAM les politiques à l'accès minimum nécessaire pour effectuer une tâche donnée. Tenter d'accorder un accès avec le moindre privilège par le biais d'autorisations détaillées CDK en utilisant cette approche peut avoir un impact sur CDK les déploiements et vous obliger à créer des autorisations plus étendues que vous ne le souhaiteriez. Voici quelques éléments à prendre en compte lors de l'utilisation de cette approche :

  • CloudFormation Il est difficile et complexe de déterminer une liste exhaustive d'autorisations permettant AWS CDK aux développeurs d'utiliser l'infrastructure pour provisionner l'infrastructure.

  • Si vous souhaitez être précis, les autorisations peuvent devenir trop longues pour tenir compte de la longueur maximale des documents de IAM politique.

  • Le fait de fournir un ensemble incomplet d'autorisations peut avoir de graves répercussions sur la productivité des développeurs et sur les déploiements.

Avec leCDK, les déploiements sont effectués à l'aide CloudFormation de. CloudFormation lance un ensemble d' AWS APIappels dans l'ordre en utilisant les autorisations fournies. Les autorisations nécessaires à tout moment dépendent de nombreux facteurs :

  • Ceux Services AWS qui sont en cours de modification. Plus précisément, les ressources et les propriétés utilisées et modifiées.

  • État actuel de la CloudFormation pile.

  • Problèmes susceptibles de survenir lors des déploiements et si des annulations sont nécessaires, ce qui nécessitera Delete des autorisations en plus de. Create

Lorsque les autorisations fournies sont incomplètes, une intervention manuelle sera requise. Voici quelques exemples :

  • Si vous découvrez des autorisations incomplètes lors de la reconduction, vous devrez suspendre le déploiement et prendre le temps de discuter des nouvelles autorisations et de leur attribuer de nouvelles autorisations avant de continuer.

  • Si le déploiement est annulé et que les autorisations nécessaires pour appliquer le retour en arrière sont absentes, votre CloudFormation pile risque de se retrouver dans un état qui nécessitera beaucoup de travail manuel pour s'en remettre.

Étant donné que cette approche peut entraîner des complications et limiter considérablement la productivité des développeurs, nous ne la recommandons pas. Nous recommandons plutôt de mettre en place des glissières de sécurité et d'empêcher tout contournement.

Mise en place de glissières de sécurité et prévention des contournements

Vous pouvez mettre en œuvre des garde-fous, des règles de conformité, des audits et une surveillance en utilisant des services tels que AWS Control Tower,, AWS Config, AWS CloudTrail AWS Security Hub, et autres. Avec cette approche, vous autorisez les développeurs à tout faire, sauf à altérer les mécanismes de validation existants. Les développeurs ont la liberté de mettre en œuvre les changements rapidement, à condition qu'ils respectent les politiques. C'est l'approche que nous recommandons lorsque vous utilisez le AWS CDK. Pour plus d'informations sur les barrières de sécurité, consultez Controls in the Management and Governance Cloud Environment Guide.

Nous recommandons également d'utiliser des limites d'autorisations ou des politiques de contrôle des services (SCPs) pour mettre en œuvre des garde-fous. Pour plus d'informations sur la mise en œuvre de limites d'autorisations avec le AWS CDK, voirCréez et appliquez des limites d'autorisations pour AWS CDK.

Si vous utilisez des mécanismes de contrôle de conformité, configurez-les pendant la phase de démarrage. Assurez-vous que les identités accessibles aux développeurs CloudFormationExecutionRole ou aux identités accessibles aux développeurs sont associées à des politiques ou à des limites d'autorisation qui empêchent de contourner les mécanismes que vous avez mis en place. Les politiques appropriées dépendent des mécanismes spécifiques que vous utilisez.

Gérez les autorisations entre les ressources fournies par le AWS CDK

La façon dont vous gérez les autorisations entre les ressources fournies par le AWS CDK dépend de l'autorisation que vous leur accordez ou non CDK à créer des rôles et des politiques.

Lorsque vous utilisez des constructions L2 de la AWS bibliothèque de constructions pour définir votre infrastructure, vous pouvez utiliser les grant méthodes fournies pour octroyer des autorisations entre les ressources. Avec grant les méthodes, vous spécifiez le type d'accès que vous souhaitez obtenir entre les ressources et les AWS CDK dispositions relatives aux IAM rôles les moins privilégiés pour atteindre votre objectif. Cette approche répond aux exigences de sécurité de la plupart des entreprises tout en étant efficace pour les développeurs. Pour de plus amples informations, veuillez consulter Définissez les autorisations pour les constructions L2 à l'aide du AWS CDK.

Si vous souhaitez contourner cette fonctionnalité en remplaçant les rôles générés automatiquement par des rôles créés manuellement, tenez compte des points suivants :

  • Vos IAM rôles devront être créés manuellement, ce qui ralentira le développement des applications.

  • Lorsque IAM les rôles doivent être créés et gérés manuellement, les utilisateurs combinent souvent plusieurs rôles logiques en un seul rôle afin de faciliter leur gestion. Cela va à l'encontre du principe du moindre privilège.

  • Étant donné que ces rôles devront être créés avant le déploiement, les ressources à référencer n'existeront pas encore. Par conséquent, vous devrez utiliser des caractères génériques, ce qui va à l'encontre du principe du moindre privilège.

  • Une solution courante à l'utilisation des caractères génériques consiste à exiger que toutes les ressources reçoivent un nom prévisible. Cependant, cela nuit à la capacité CloudFormation de remplacer les ressources lorsque cela est nécessaire et peut ralentir ou bloquer le développement. C'est pourquoi nous vous recommandons d'autoriser la création CloudFormation de noms de ressources uniques pour vous.

  • Il sera impossible d'effectuer une livraison continue car des actions manuelles doivent être effectuées avant chaque déploiement.

Lorsque les organisations veulent CDK empêcher la création de rôles, c'est généralement pour empêcher les développeurs de créer des IAM rôles. Le problème est qu'en autorisant les développeurs à créer des IAM rôles à l'aide de AWS CDK, ils pourraient éventuellement augmenter leurs propres privilèges. Pour pallier ce problème, nous vous recommandons d'utiliser des limites d'autorisation ou des politiques de contrôle des services (SCPs). Avec les limites d'autorisation, vous pouvez définir des limites à ce que les développeurs et les développeurs CDK sont autorisés à faire. Pour plus d'informations sur l'utilisation des limites d'autorisation avec leCDK, voirCréez et appliquez des limites d'autorisations pour AWS CDK.