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.
Accès aux instances EC2 sans entrée avec AWS Systems Manager
Une « instance EC2 sans entée » créée pour un environnement EC2 permet à AWS Cloud9 de se connecter à son instance Amazon EC2 sans avoir à ouvrir de ports entrants sur cette instance. Vous pouvez sélectionner l'option sans entrée lors de la création d'un environnement EC2 à l'aide de la console, de l'interface de ligne de commande ou d'une pile AWS CloudFormation.
Important
Aucuns frais supplémentaires ne sont facturés pour l'utilisation de Systems Manager Session Manager pour gérer les connexions à votre instance EC2.
Lorsque vous sélectionnez un type d'environnement dans la page Create environment (Créer un environnement) de la console , vous pouvez choisir une nouvelle instance EC2 qui nécessite une connectivité entrante ou une nouvelle instance EC2 sans entrée qui ne requiert pas ce qui suit :
-
New EC2 instance (Nouvelle instance EC2) : avec cette configuration, le groupe de sécurité de l'instance possède une règle pour autoriser le trafic réseau entrant. Le trafic réseau entrant est limité aux adresses IP approuvées pour les connexions AWS Cloud9. Un port entrant ouvert permet à AWS Cloud9 de se connecter via SSH à son instance. Si vous utilisez AWS Systems Manager Session Manager, vous pouvez accéder à votre instance Amazon EC2 via SSM sans ouvrir de ports entrants (pas d'entrée). Cette méthode est uniquement applicable aux nouvelles instances Amazon EC2. Pour plus d'informations, veuillez consulter Avantages de l'utilisation de Systems Manager pour les environnements EC2.
-
Existing compute (Calcul existant) : avec cette configuration, on accède à une instance Amazon EC2 existante qui nécessite des détails de connexion SSH pour lesquels l'instance doit avoir une règle de groupe de sécurité entrante. Si vous sélectionnez cette option, une fonction du service est automatiquement créée. Vous pouvez voir le nom de la fonction du service dans une note au bas de l'écran de configuration.
Si vous créez un environnement à l'aide de la AWS CLI, vous pouvez configurer une instance EC2 sans entrée en définissant l'option --connection-type CONNECT_SSM
lors de l'appel de la commande create-environment-ec2
. Pour plus d'informations sur la création du rôle de service et du profil d'instance requis, consultez Gestion des profils d'instance pour Systems Manager à l'aide de la AWS CLI.
Après avoir créé un environnement qui utilise une instance EC2 sans entrée, vérifiez ce qui suit :
-
Systems Manager Session Manager dispose des autorisations nécessaires pour effectuer des actions sur l'instance EC2 en votre nom. Pour plus d'informations, veuillez consulter Gestion des autorisations Systems Manager.
-
Les utilisateurs AWS Cloud9 peuvent accéder à l'instance gérée par Session Manager. Pour plus d'informations, veuillez consulter Accorder aux utilisateurs l'accès aux instances gérées par le Session Manager.
Avantages de l'utilisation de Systems Manager pour les environnements EC2
Autorisation pour Session Mananger de gérer la connexion sécurisée entre l'AWS Cloud9 et son instance EC2 offre deux avantages essentiels :
-
Pas de nécessité d'ouvrir des ports entrants pour l'instance
-
Option de lancement de l'instance dans un sous-réseau public ou privé
Gestion des autorisations Systems Manager
Par défaut, Systems Manager n'est pas autorisé à exécuter des actions sur les instances EC2. L'accès est fourni par le biais d'un profil d'instance AWS Identity and Access Management (IAM). Un profil d'instance est un conteneur qui transmet les informations de rôle IAM à une instance EC2 lors du lancement.
Lorsque vous créez l'instance EC2 sans entrée à l'aide de la console AWS Cloud9,le rôle de service (AWSCloud9SSMAccessRole
) et le profil d'instance IAM (AWSCloud9SSMInstanceProfile
) sont créés automatiquement. (Vous pouvez afficher AWSCloud9SSMAccessRole
dans la console de gestion IAM. Les profils d'instance ne s'affichent pas dans la console IAM.)
Important
Si vous créez un environnement EC2 sans entrée pour la première fois avec la AWS CLI, vous devez définir explicitement le rôle de service requis et le profil d'instance. Pour plus d'informations, veuillez consulter Gestion des profils d'instance pour Systems Manager à l'aide de la AWS CLI.
Important
Si vous créez unAWS Cloud9et vous utilisez Amazon EC2 Systems Manager avec l'un ou l'autreAWSCloud9Administrator
ouAWSCloud9User
politiques jointes, vous devez également joindre une politique personnalisée dotée d'autorisations IAM spécifiques, voirPolitique IAM personnalisée pour la création d'un environnement SSM. Cela est dû à un problème d'autorisation lié auAWSCloud9Administrator
etAWSCloud9User
politiques.
Pour plus de sécurité, le rôle lié à un service AWS Cloud9, AWSServiceRoleforAWSCloud9
, dispose d'une restriction PassRole
dans sa politique AWSCloud9ServiceRolePolicy
. Lorsque vous transmettez un rôle IAM à un service, il autorise ce service à assumer le rôle et à exécuter des actions en votre nom. Dans ce cas, l'autorisation PassRole
permet de s'assurer qu'AWS Cloud9 ne peut transmettre le rôle AWSCloud9SSMAccessRole
(et son autorisation) à une instance EC2. Cela limite les actions qui peuvent être effectuées sur l'instance EC2 uniquement à celles requises par l'AWS Cloud9.
Note
Si vous n'avez plus besoin d'utiliser Systems Manager pour accéder à une instance, vous pouvez supprimer le rôle de service AWSCloud9SSMAccessRole
. Pour plus d'informations, consultez Suppression de rôles ou de profils d'instance dans le guide de l'utilisateur IAM.
Gestion des profils d'instance pour Systems Manager à l'aide de la AWS CLI
Vous pouvez également créer un environnement EC2 sans entrée avec la AWS CLI. Lorsque vous appelez create-environment-ec2
, affectez à l'option --connection-type
la valeur CONNECT_SSM
.
Si vous utilisez cette option, le rôle de service AWSCloud9SSMAccessRole
et le profil AWSCloud9SSMInstanceProfile
ne sont pas automatiquement créés. Par conséquent, pour créer le profil de service et le profil d'instance requis, effectuez l'une des opérations suivantes :
-
Créez un environnement EC2 à l'aide de la console une fois que le rôle de service
AWSCloud9SSMAccessRole
et le profilAWSCloud9SSMInstanceProfile
ont été créés automatiquement par la suite. Une fois qu'ils ont été créés, le rôle de service et le profil d'instance sont disponibles pour tous les environnements EC2 supplémentaires créés à l'aide de la AWS CLI. -
Exécutez les commandes AWS CLI suivantes pour créer le rôle de service et le profil d'instance.
aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"] },"Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/ aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole
Accorder aux utilisateurs l'accès aux instances gérées par le Session Manager
Pour ouvrir un environnement AWS Cloud9 connecté à une instance EC2 via Systems Manager, un utilisateur doit disposer de l'autorisation pour l'opération API, StartSession
. Cette opération initie une connexion à l'instance EC2 gérée pour une séance Session Manager. Vous pouvez accorder l'accès aux utilisateurs à l'aide d'une politique gérée spécifique à AWS Cloud9 (recommandé) ou en modifiant une politique IAM et en ajoutant les autorisations nécessaires.
Méthode | Description |
---|---|
Utilisation d'une politique gérée spécifique à AWS Cloud9 |
Nous vous recommandons d'utiliser AWS pour permettre aux utilisateurs d'accéder aux instances EC2 gérées par Systems Manager. Les politiques gérées fournissent un ensemble d'autorisations pour les cas d'utilisation AWS Cloud9 et peuvent être facilement attachées à une entité IAM. Toutes les politiques gérées incluent également les autorisations d'exécuter les opération d'API
ImportantSi vous créez unAWS Cloud9et vous utilisez Amazon EC2 Systems Manager avec l'un ou l'autre Pour plus d'informations, veuillez consulter AWS politiques gérées pour AWS Cloud9. |
Modification d'une politique IAM et ajout d'instructions de politique requises |
Pour modifier une politique existante, vous pouvez ajouter des autorisations pour l'API Lors de la modification de la politique, ajoutez l'policy statement (voir ce qui suit) qui permet à l'opération d'API |
Vous pouvez utiliser les autorisations suivantes pour exécuter l'opération d'API StartSession
. La clé de condition ssm:resourceTag
spécifie qu'une séance Session Manager peut être démarrée pour n'importe quelle instance (Resource: arn:aws:ec2:*:*:instance/*
) à la condition que l'instance soit un environnement de développement EC2 AWS Cloud9 (aws:cloud9:environment
).
Note
Les politiques gérées suivantes incluent également ces instructions de politique : AWSCloud9Administrator
, AWSCloud9User
et AWSCloud9EnvironmentMember
.
{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloud9.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }
Utilisation de AWS CloudFormation pour créer des environnements EC2 sans entrée
Lors de l'utilisation d'un modèle AWS CloudFormation pour définir un environnement de développement Amazon EC2 sans entrée, procédez comme suit avant de créer la pile :
-
Créez le rôle de service
AWSCloud9SSMAccessRole
et le profil d'instanceAWSCloud9SSMInstanceProfile
. Pour plus d'informations, veuillez consulter Création d'un rôle de service et d'un profil d'instance avec un modèle AWS CloudFormation. -
Mettez à jour la politique pour l'entité IAM appelant AWS CloudFormation. Ainsi, l'entité IAM peut démarrer une séance Session Manager qui se connecte à l'instance EC2. Pour plus d'informations, veuillez consulter Ajout d'autorisations Systems Manager à une politique IAM.
Création d'un rôle de service et d'un profil d'instance avec un modèle AWS CloudFormation
Vous devez créer le rôle de service AWSCloud9SSMAccessRole
et le profil d'instance AWSCloud9SSMInstanceProfile
pour permettre à Systems Manager de gérer l'instance EC2 qui sauvegarde votre environnement de développement.
Si vous avez déjà créé AWSCloud9SSMAccessRole
et AWSCloud9SSMInstanceProfile
en créant un environnement EC2 sans entrée with the console ou en exécutant des commandes de l'AWS CLI, la fonction du service et le profil d'instance sont déjà disponibles.
Note
Supposons que vous essayiez de créer une pile AWS CloudFormation pour un environnement EC2 sans entrée sans créer préalablement la fonction du service et le profil d'instance requis. La pile n'est pas créée et le message d'erreur suivant s'affiche :
Profil de l'instanceAWSCloud9SSMInstanceProfilen'existe pas dans le compte.
Lors de la création d'un environnement EC2 sans entrée pour la première fois en utilisant AWS CloudFormation, vous pouvez définir le rôle AWSCloud9SSMAccessRole
et le profil AWSCloud9SSMInstanceProfile
en tant que ressources IAM dans le modèle.
Cet extrait d'un exemple de modèle montre comment définir ces ressources. L'action AssumeRole
renvoie des informations d'identification de sécurité qui permettent d'accéder à l'environnement AWS Cloud9 et son instance EC2.
AWSTemplateFormatVersion: 2010-09-09 Resources: AWSCloud9SSMAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - cloud9.amazonaws.com - ec2.amazonaws.com Action: - 'sts:AssumeRole' Description: 'Service linked role for AWS Cloud9' Path: '/service-role/' ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile RoleName: 'AWSCloud9SSMAccessRole' AWSCloud9SSMInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: InstanceProfileName: AWSCloud9SSMInstanceProfile Path: "/cloud9/" Roles: - Ref: AWSCloud9SSMAccessRole
Ajout d'autorisations Systems Manager à une politique IAM
Après avoir défini une fonction du service et un profil d'instance dans le modèle AWS CloudFormation, assurez-vous que l'entité IAM qui crée la pile a l'autorisation de démarrer une séance Session Manager. Une séance est une connexion établie à l'instance EC2 à l'aide de Session Manager.
Note
Si vous n'ajoutez pas d'autorisations pour démarrer une séance Session Manager avant de créer une pile pour un environnement EC2 sans entrée, une erreur AccessDeniedException
est retournée.
Ajoutez les autorisations suivantes à la politique de l'entité IAM en appelant AWS CloudFormation.
{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }
Configuration de points de terminaison de VPC pour Amazon S3 pour télécharger les dépendances.
Si l'instance EC2 de votre environnement AWS Cloud9 n'a pas accès à Internet, créez un point de terminaison d'un VPC pour un compartiment Amazon S3 spécifié. Ce compartiment contient les dépendances nécessaires pour conserver votre IDEup-to-date.
La configuration d'un point de terminaison d'un VPC pour Amazon S3 implique également de personnaliser la stratégie d'accès. Vous voulez que la stratégie d'accès autorise l'accès uniquement au compartiment S3 approuvé contenant les dépendances à télécharger.
Note
Vous pouvez créer et configurer des points de terminaison de VPC à l'aide de la AWS Management Console, la AWS CLI ou l'API Amazon VPC. La procédure suivante explique comment créer un point de terminaison d'un VPC à l'aide de l'interface de la console.
Création et configuration d'un point de terminaison de VPC pour Amazon S3
-
Dans la AWS Management Console, accédez à la page de la console pour Amazon VPC.
-
Dans le volet de navigation, choisissez Points de terminaison.
-
Dans la page Points de terminaison, choisissez Créer un point de terminaison.
-
Dans la page Create Endpoint (Créer un point de terminaison), saisissez « s3 » dans le champ de recherche et appuyez sur Return (Retour) pour répertorier les points de terminaison disponibles pour Amazon S3 dans la Région AWS actuelle.
-
Dans la liste des points de terminaison Amazon S3 retournés, sélectionnez le type Passerelle.
-
Ensuite, choisissez le VPC qui contient l'instance EC2 de votre environnement.
-
Choisissez maintenant la table de routage du VPC. De cette façon, les sous-réseaux associés peuvent accéder au point de terminaison. L'instance EC2 de votre environnement se trouve dans l'un de ces sous-réseaux.
-
Dans la section Policy (Politique), choisissez l'option Custom (Personnalisé) et remplacez la politique standard par celle qui suit.
{ "Version": "2008-10-17", "Statement": [ { "Sid": "Access-to-C9-bucket-only", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*" } ] }
Pour l'élément
Resource
, remplacez{bucket_name}
par le nom réel du compartiment qui est disponible dans votre Région AWS. Par exemple, si vous utilisez l'AWS Cloud9 dans la région Europe (Irlande), vous indiquez les éléments suivants :"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/
.La table suivante répertorie les noms de compartiment pour les Régions AWS où AWS Cloud9 est disponible.
Compartiments Amazon S3 dans les régions AWS Cloud9Région AWS Nom du compartiment USA Est (Ohio)
static-us-east-2-prod-static-1c3sfcvf9hy4m
USA Est (Virginie du Nord)
static-us-east-1-prod-static-mft1klnkc4hl
USA Ouest (Oregon)
static-us-west-2-prod-static-p21mksqx9zlr
USA Ouest (Californie du Nord)
static-us-west-1-prod-static-16d59zrrp01z0
Afrique (Le Cap)
static-af-south-1-prod-static-v6v7i5ypdppv
Asie-Pacifique (Hong Kong)
static-ap-east-1-prod-static-171xhpfkrorh6
Asia Pacific (Mumbai) static-ap-south-1-prod-static-ykocre202i9d
Asia Pacific (Osaka) static-ap-northeast-3-prod-static-ivmxqzrx2ioi
Asia Pacific (Seoul) static-ap-northeast-2-prod-static-1wxyctlhwiajm
Asie-Pacifique (Singapour) static-ap-southeast-1-prod-static-13ibpyrx4vk6d
Asie-Pacifique (Sydney)
static-ap-southeast-2-prod-static-1cjsl8bx27rfu
Asie-Pacifique (Tokyo)
static-ap-northeast-1-prod-static-4fwvbdisquj8
Canada (Centre)
static-ca-central-1-prod-static-g80lpejy486c
Europe (Francfort)
static-eu-central-1-prod-static-14lbgls2vrkh
Europe (Irlande)
static-eu-west-1-prod-static-hld3vzaf7c4h
Europe (Londres)
static-eu-west-2-prod-static-36lbg202837x
Europe (Milan)
static-eu-south-1-prod-static-1379tzkd3ni7d
Europe (Paris)
static-eu-west-3-prod-static-1rwpkf766ke58
Europe (Stockholm)
static-eu-north-1-prod-static-1qzw982y7yu7e
Moyen-Orient (Bahreïn)
static-me-south-1-prod-static-gmljex38qtqx
Amérique du Sud (São Paulo)
static-sa-east-1-prod-static-1cl8k0y7opidt
Israël (Tel Aviv)
static-il-central-1-prod-static-k02vrnhcesue
-
Choisissez Create Endpoint (Créer un point de terminaison).
Si vous avez fourni les bonnes informations de configuration, un message affiche l'ID du point de terminaison créé.
-
Pour vérifier que votre IDE peut accéder au compartiment Amazon S3, démarrez une séance de terminal en sélectionnant Fenêtre, Nouvelle fenêtre dans la barre de menus. Exécutez ensuite la commande suivante, en remplaçant
{bucket_name}
avec le nom réel du compartiment pour votre région.ping {bucket_name}.s3.{region}.amazonaws.com.
Par exemple, si vous avez créé un point de terminaison pour un compartiment S3 dans la région USA Est (Virginie du Nord), exécutez la commande suivante.
ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com
Si le ping reçoit une réponse, cela confirme que votre IDE peut accéder au compartiment et à ses dépendances.
Pour plus d'informations sur cette fonctionnalité, voirPoints de terminaison pour Amazon S3dans leAWS PrivateLinkGuidez.
Configuration des points de terminaison de VPC pour une connectivité privée
Lorsque vous lancez une instance dans un sous-réseau avec l'option access using Systems Manager (Accès via Systems Manager), son groupe de sécurité n'a pas de règle entrante permettant d'autoriser le trafic réseau entrant. Toutefois, le groupe de sécurité possède une règle sortante qui autorise le trafic sortant de l'instance. Cette autorisation est nécessaire pour télécharger les packages et les bibliothèques nécessaires pour maintenir à jour l'IDE AWS Cloud9.
Pour empêcher le trafic sortant et entrant pour l'instance, créez et configurez des points de terminaison d'un VPC Amazon pour Systems Manager. En utilisant un point de terminaison d'un VPC d'interface (point de terminaison d'interface), vous pouvez vous connecter aux services fournis par AWS PrivateLink. AWS PrivateLink est une technologie qui vous permet d'accéder de manière privée aux API Amazon EC2 et Systems Manager en utilisant des adresses IP privées. Pour configurer les points de terminaison de VPC pour qu'ils utilisent Systems Manager, suivez les instructions fournies par cette ressource de centre de connaissances
Avertissement
Supposons que vous configuriez un groupe de sécurité qui n'autorise pas le trafic réseau entrant ou sortant. L'instance EC2 qui prend en charge votre IDE AWS Cloud9 n'a pas accès à Internet. Vous devez créer un point de terminaison Amazon S3 pour votre VPC afin d'autoriser l'accès aux dépendances contenues dans un compartiment S3 approuvé. En outre, certains Services AWS, tels qu'AWS Lambda, peuvent ne pas fonctionner normalement sans accès à Internet.
Avec AWS PrivateLink, des frais de traitement des données sont facturés pour chaque gigaoctet traité via le point de terminaison d'un VPC. Et ce, quelle que soit la source ou la destination du trafic. Pour en savoir plus, consultez PricingAWS PrivateLink