Gestion de AWS CloudShell l'accès et de l'utilisation à l'aide de politiques IAM - AWS CloudShell

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.

Gestion de AWS CloudShell l'accès et de l'utilisation à l'aide de politiques IAM

Grâce aux ressources de gestion des accès qui peuvent être fournies par AWS Identity and Access Management (IAM), les administrateurs peuvent accorder des autorisations aux utilisateurs IAM. Ces utilisateurs peuvent ainsi accéder aux fonctionnalités de l'environnement AWS CloudShell et les utiliser. Les administrateurs peuvent également créer des politiques qui spécifient à un niveau granulaire les actions que ces utilisateurs peuvent effectuer dans l'environnement shell.

Le moyen le plus rapide pour un administrateur d'accorder l'accès aux utilisateurs est d'utiliser une politique AWS gérée. Une politique gérée par AWS est une politique autonome créée et administrée par AWS. La politique AWS gérée suivante pour AWS CloudShell peut être attachée aux identités IAM :

  • AWS CloudShellFullAccess: accorde l'autorisation d'utilisation AWS CloudShell avec un accès complet à toutes les fonctionnalités.

La AWS CloudShellFullAccesspolitique utilise le caractère générique (*) pour donner à l'identité IAM (utilisateur, rôle ou groupe) un accès complet aux fonctionnalités CloudShell et aux fonctionnalités. Pour plus d'informations sur cette politique, consultez le Guide AWS CloudShellFullAccessde l'utilisateur de AWS Managed Policy.

Note

Les identités IAM dotées des politiques AWS gérées suivantes peuvent également être lancées CloudShell. Toutefois, ces politiques prévoient des autorisations étendues. Nous vous recommandons donc de n'accorder ces politiques que si elles sont essentielles au rôle professionnel d'un utilisateur IAM.

  • Administrateur : fournit aux utilisateurs IAM un accès complet et leur permet de déléguer des autorisations à chaque service et ressource qu'il contient. AWS

  • Développeur expérimenté : permet aux utilisateurs IAM d'effectuer des tâches de développement d'applications et de créer et configurer des ressources et des services qui prennent en charge le développement d'applications en toute AWS connaissance de cause.

Pour plus d'informations sur l'attachement de politiques gérées, consultez la section Ajout d'autorisations d'identité IAM (console) dans le guide de l'utilisateur IAM.

Gestion des actions autorisées à AWS CloudShell l'aide de politiques personnalisées

Pour gérer les actions qu'un utilisateur IAM peut effectuer CloudShell, créez une politique personnalisée qui utilise la stratégie CloudShellPolicy gérée comme modèle. Vous pouvez également modifier une politique en ligne intégrée à l'identité IAM appropriée (utilisateur, groupe ou rôle).

Par exemple, vous pouvez autoriser les utilisateurs IAM à accéder CloudShell, mais les empêcher de transmettre les informations d'identification de CloudShell l'environnement utilisées pour se connecter AWS Management Console.

Important

Pour lancer AWS CloudShell depuis le AWS Management Console, un utilisateur IAM doit disposer d'autorisations pour effectuer les actions suivantes :

  • CreateEnvironment

  • CreateSession

  • GetEnvironmentStatus

  • StartEnvironment

Si l'une de ces actions n'est pas explicitement autorisée par une politique attachée, une erreur d'autorisation IAM est renvoyée lorsque vous essayez de lancer CloudShell.

AWS CloudShell autorisations
Nom Description de l’autorisation accordée Nécessaire pour le lancement CloudShell ?

cloudshell:CreateEnvironment

Crée un CloudShell environnement, récupère la mise en page au début de la CloudShell session et enregistre la mise en page actuelle depuis l'application Web dans le backend. Cette autorisation n'est attendue * que comme valeur pourResource, comme indiqué dansExemples de politiques IAM pour CloudShell.

Oui

cloudshell:CreateSession

Se connecte à un CloudShell environnement à partir du AWS Management Console.

Oui

cloudshell:GetEnvironmentStatus

Lisez l'état d'un CloudShell environnement.

Oui

cloudshell:DeleteEnvironment

Supprime un CloudShell environnement.

Non

cloudshell:GetFileDownloadUrls

Génère des URL Amazon S3 pré-signées qui sont utilisées pour télécharger des fichiers CloudShell via l'interface CloudShell Web. Ceci n'est pas disponible pour les environnements VPC.

Non

cloudshell:GetFileUploadUrls

Génère des URL Amazon S3 pré-signées qui sont utilisées pour charger des fichiers CloudShell via l'interface CloudShell Web. Ceci n'est pas disponible pour les environnements VPC.

Non

cloudshell:DescribeEnvironments

Décrit les environnements.

Non

cloudshell:PutCredentials

Transfère les informations d'identification utilisées pour se connecter AWS Management Console au CloudShell.

Non

cloudshell:StartEnvironment

Démarre un CloudShell environnement qui est arrêté.

Oui

cloudshell:StopEnvironment

Arrête un CloudShell environnement en cours d'exécution.

Non

Exemples de politiques IAM pour CloudShell

Les exemples suivants montrent comment des politiques peuvent être créées pour restreindre les personnes autorisées à y accéder CloudShell. Les exemples montrent également les actions qui peuvent être effectuées dans l'environnement shell.

La politique suivante impose un déni complet de l'accès à CloudShell ses fonctionnalités.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyCloudShell", "Effect": "Deny", "Action": [ "cloudshell:*" ], "Resource": "*" }] }

Cette politique permet aux utilisateurs IAM d'y accéder CloudShell mais les empêche de générer des URL pré-signées pour le chargement et le téléchargement de fichiers. Les utilisateurs peuvent toujours transférer des fichiers vers et depuis l'environnement, en utilisant des clients par wget exemple.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyUploadDownload", "Effect": "Deny", "Action": [ "cloudshell:GetFileDownloadUrls", "cloudshell:GetFileUploadUrls" ], "Resource": "*" }] }

La politique suivante autorise les utilisateurs IAM à y accéder CloudShell. Toutefois, la politique empêche le transfert vers l' CloudShell environnement des informations d'identification que vous avez utilisées pour vous connecter. AWS Management Console Les utilisateurs IAM dotés de cette politique doivent configurer manuellement leurs informations d'identification dans le cadre CloudShell de cette politique.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyCredentialForwarding", "Effect": "Deny", "Action": [ "cloudshell:PutCredentials" ], "Resource": "*" }] }

La politique suivante permet aux utilisateurs IAM de créer des AWS CloudShell environnements.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "CloudShellUser", "Effect": "Allow", "Action": [ "cloudshell:CreateEnvironment", "cloudshell:CreateSession", "cloudshell:GetEnvironmentStatus", "cloudshell:StartEnvironment" ], "Resource": "*" }] }

Autorisations IAM requises pour créer et utiliser des environnements CloudShell VPC

Pour créer et utiliser des environnements CloudShell VPC, l'administrateur IAM doit autoriser l'accès aux autorisations Amazon EC2 spécifiques aux VPC. Cette section répertorie les autorisations Amazon EC2 nécessaires pour créer et utiliser des environnements VPC.

Pour créer des environnements VPC, la politique IAM attribuée à votre rôle doit inclure les autorisations Amazon EC2 suivantes :

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeDhcpOptions

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateTags

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

Nous recommandons également d'inclure :

  • ec2:DeleteNetworkInterface

Note

Cette autorisation n'est pas obligatoire, mais elle est requise CloudShell pour nettoyer la ressource ENI (les ENI créés pour les environnements CloudShell VPC sont ManagedByCloudShell marqués d'une clé) créée par celle-ci. Si cette autorisation n'est pas activée, vous devez nettoyer manuellement la ressource ENI après chaque utilisation de l'environnement CloudShell VPC.

Politique IAM accordant un CloudShell accès complet, y compris l'accès au VPC

L'exemple suivant montre comment activer les autorisations complètes, y compris l'accès au VPC, pour : CloudShell

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }

Utilisation de clés de condition IAM pour les environnements VPC

Vous pouvez utiliser des clés de condition CloudShell spécifiques pour les paramètres VPC afin de fournir des contrôles d'autorisation supplémentaires pour vos environnements VPC. Vous pouvez également spécifier les sous-réseaux et les groupes de sécurité que l'environnement VPC peut ou ne peut pas utiliser.

CloudShell prend en charge les clés de condition suivantes dans les politiques IAM :

  • CloudShell:VpcIds— Autoriser ou refuser un ou plusieurs VPC

  • CloudShell:SubnetIds— Autoriser ou refuser un ou plusieurs sous-réseaux

  • CloudShell:SecurityGroupIds— Autoriser ou refuser un ou plusieurs groupes de sécurité

Note

Si les autorisations accordées aux utilisateurs ayant accès aux CloudShell environnements publics sont modifiées pour ajouter une restriction à l'cloudshell:createEnvironmentaction, ils peuvent toujours accéder à leur environnement public existant. Toutefois, si vous souhaitez modifier une politique IAM avec cette restriction et désactiver son accès à l'environnement public existant, vous devez d'abord mettre à jour la politique IAM avec cette restriction, puis vous assurer que chaque CloudShell utilisateur de votre compte supprime manuellement l'environnement public existant à l'aide de l'interface utilisateur CloudShell Web (ActionsSupprimer CloudShell l'environnement).

Exemple de stratégies avec des clés de condition pour les paramètres du VPC

Les exemples suivants montrent comment utiliser les clés de condition pour les paramètres du VPC. Après avoir créé une instruction de politique avec les restrictions souhaitées, ajoutez l’instruction de politique pour l’utilisateur ou le rôle cible.

Assurez-vous que les utilisateurs créent uniquement des environnements VPC et interdisent la création d'environnements publics

Pour garantir que les utilisateurs ne peuvent créer que des environnements VPC, utilisez l'autorisation de refus, comme indiqué dans l'exemple suivant :

{ "Statement": [ { "Sid": "DenyCloudShellNonVpcEnvironments", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "Null": { "cloudshell:VpcIds": "true" } } } ] }

Refuser aux utilisateurs l’accès à des VPC, des sous-réseaux ou des groupes de sécurité spécifiques

Pour refuser aux utilisateurs l’accès à des VPC spécifiques, utilisez StringEquals pour vérifier la valeur de la condition cloudshell:VpcIds. L'exemple suivant refuse aux utilisateurs l'accès à vpc-1 et vpc-2 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

Pour refuser aux utilisateurs l’accès à des VPC spécifiques, utilisez StringEquals pour vérifier la valeur de la condition cloudshell:SubnetIds. L'exemple suivant refuse aux utilisateurs l'accès à subnet-1 et subnet-2 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

Pour refuser aux utilisateurs l’accès à des VPC spécifiques, utilisez StringEquals pour vérifier la valeur de la condition cloudshell:SecurityGroupIds. L'exemple suivant refuse aux utilisateurs l'accès à sg-1 et sg-2 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSecurityGroups", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

Permettre aux utilisateurs de créer des environnements avec des configurations VPC spécifiques

Pour autoriser les utilisateurs à accéder à des VPC spécifiques, utilisez cette StringEquals option pour vérifier la valeur de la cloudshell:VpcIds condition. L'exemple suivant permet aux utilisateurs d'accéder à vpc-1 et vpc-2 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

Pour autoriser les utilisateurs à accéder à des VPC spécifiques, utilisez cette StringEquals option pour vérifier la valeur de la cloudshell:SubnetIds condition. L'exemple suivant permet aux utilisateurs d'accéder à subnet-1 et subnet-2 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

Pour autoriser les utilisateurs à accéder à des VPC spécifiques, utilisez cette StringEquals option pour vérifier la valeur de la cloudshell:SecurityGroupIds condition. L'exemple suivant permet aux utilisateurs d'accéder à sg-1 et sg-2 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

Autorisations d'accès Services AWS

CloudShell utilise les informations d'identification IAM que vous avez utilisées pour vous connecter au AWS Management Console.

Note

Pour utiliser les informations d'identification IAM que vous avez utilisées pour vous connecter au AWS Management Console, vous devez disposer d'une cloudshell:PutCredentials autorisation.

Cette fonctionnalité de pré-authentification CloudShell est pratique à utiliser AWS CLI. Cependant, un utilisateur IAM a toujours besoin d'autorisations explicites pour Services AWS les appels depuis la ligne de commande.

Supposons, par exemple, que les utilisateurs IAM soient tenus de créer des compartiments Amazon S3 et d'y charger des fichiers sous forme d'objets. Vous pouvez créer une politique qui autorise explicitement ces actions. La console IAM fournit un éditeur visuel interactif qui guide le processus de création d'un document de politique au format JSON. Une fois la politique créée, vous pouvez l'associer à l'identité IAM appropriée (utilisateur, groupe ou rôle).

Pour plus d'informations sur l'attachement de politiques gérées, consultez la section Ajout d'autorisations d'identité IAM (console) dans le guide de l'utilisateur IAM.