Exemples de politiques IAM supplémentaires pour Session Manager - AWS Systems Manager

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.

Exemples de politiques IAM supplémentaires pour Session Manager

Les exemples de politiques suivants vous accompagnent dans la création d'une politique AWS Identity and Access Management (IAM) personnalisée pour tous les scénarios d'accès utilisateur à Session Manager que vous souhaitez prendre en charge.

Exemple 1 : octroi d'un accès aux documents depuis la console

Vous pouvez autoriser les utilisateurs à spécifier un document personnalisé lorsqu'ils lancent une session à l'aide de la console Session Manager. L'exemple de politique IAM suivant accorde l'autorisation d'accéder à des documents dont le nom commence par SessionDocument- dans la Région AWS et sur le Compte AWS spécifiés.

Pour utiliser cette politique, remplacez chaque exemple d'espace réservé pour les ressources par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:ListDocuments" ], "Resource": [ "arn:aws:ssm:region:account-id:document/SessionDocument-*" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } } ] }
Note

La console Session Manager ne prend en charge que les documents de session dont le sessionType et Standard_Stream et utilisés pour définir les préférences de session. Pour plus d’informations, consultez Schéma de document de session.

Exemple 2 : restriction de l'accès à des nœuds gérés spécifiques

Vous pouvez créer une politique IAM qui définit les nœuds gérés auxquels un utilisateur est autorisé à se connecter à l'aide du gestionnaire de session. Par exemple, la politique suivante accorde à un utilisateur l'autorisation de démarrer, de terminer et de reprendre ses sessions sur trois nœuds spécifiques. La politique interdit à l'utilisateur de se connecter à des nœuds autres que ceux spécifiés.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890EXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-abcdefghijEXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-0e9d8c7b6aEXAMPLE" ] }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

Exemple 3 : restriction de l'accès en fonction des balises

Vous pouvez restreindre l'accès à des nœuds gérés en fonction de balises spécifiques. Dans l'exemple suivant, l'utilisateur est autorisé à démarrer et à reprendre des sessions (Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession) sur n'importe quel nœud géré (Resource: arn:aws:ec2:region:987654321098:instance/*) à condition que le nœud soit un nœud Finance WebServer (ssm:resourceTag/Finance: WebServer). Si l'utilisateur envoie une commande à un nœud géré non balisé ou qui possède une balise autre que Finance: WebServer, le résultat de la commande affiche AccessDenied.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

Vous pouvez créer des politiques IAM qui permettent à un utilisateur de démarrer des sessions sur des nœuds gérés qui contiennent plusieurs balises. La politique suivante permet à l'utilisateur de démarrer des sessions sur des nœuds gérés qui contiennent les balises spécifiées. Si un utilisateur envoie une commande à un nœud géré qui ne contient pas ces balises, le résultat de la commande affiche AccessDenied.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:StartSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag-key1":[ "tag-value1" ], "ssm:resourceTag/tag-key2":[ "tag-value2" ] } } } ] }

Pour plus d'informations sur la création de politiques IAM, consultez Politiques gérées et politiques en ligne dans le Guide de l'utilisateur IAM. Pour plus d'informations sur le balisage des nœuds gérés, veuillez consulter les rubriques Balisage des nœuds gérés et Balisage de vos ressources Amazon EC2 dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux (le contenu s'applique aux nœuds gérés Windows et Linux). Pour plus d'informations sur le renforcement de votre posture de sécurité vis-à-vis des commandes de niveau racine non autorisées sur vos nœuds gérés, consultez Limitation de l'accès aux commandes de niveau racine via l'SSM Agent.

Exemple 4 : autorisation d'un utilisateur à mettre fin uniquement aux sessions qu'il a démarrées

Session Managerpropose deux méthodes pour contrôler les sessions auxquelles un utilisateur fédéré de votre entreprise Compte AWS est autorisé à mettre fin.

  • Utilisez la variable {aws:userid} dans une politique d'autorisation AWS Identity and Access Management (IAM). Les utilisateurs fédérés ne peuvent terminer que les sessions qu'ils ont démarrées. Pour les utilisateurs non fédérés, utilisez la variable {aws:username} au lieu de {aws:userid}.

  • Utilisez les balises fournies par les AWS balises dans une politique d'autorisation IAM. Dans la politique, vous incluez une condition qui permet aux utilisateurs de ne terminer que les sessions marquées avec des balises spécifiques fournies par AWS. Cette méthode fonctionne pour tous les comptes, y compris ceux qui utilisent des ID fédérés pour accorder l'accès à AWS.

Méthode 1 : octroyer TerminateSession des privilèges à l'aide de la variable {aws:username}

La politique IAM suivante permet à un utilisateur d'afficher les ID de toutes les sessions de votre compte. Toutefois, les utilisateurs ne peuvent interagir avec les nœuds gérés que par le biais des sessions qu'ils ont démarrées. Un utilisateur auquel vous attribuez la politique suivante ne peut pas se connecter ni mettre fin aux sessions des autres utilisateurs. Cette politique utilise la variable {aws:username}.

Note

Cette méthode ne fonctionne pas pour les comptes qui accordent l'accès à AWS à l'aide d'ID fédérés.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:DescribeSessions" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:TerminateSession" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

Méthode 2 : octroyer TerminateSession des privilèges à l'aide de balises fournies par AWS

Vous pouvez contrôler les sessions qu'un utilisateur peut terminer en utilisant des variables de clé de balise conditionnelle spécifiques dans une politique utilisateur IAM. La condition spécifie que l'utilisateur ne peut terminer que les sessions qui sont marquées avec une ou deux des variables de clé de balise spécifiques et une valeur spécifiée.

Lorsqu'un de vos utilisateurs Compte AWS démarre une session, Session Manager applique deux balises de ressources à la session. La première balise de ressource est aws:ssmmessages:target-id, avec laquelle vous spécifiez l'ID de la cible à laquelle l'utilisateur est autorisé à se terminer. L'autre balise de ressource est aws:ssmmessages:session-id, avec une valeur au format role-id:caller-specified-role-name.

Note

Session Manager ne prend pas en charge les balises personnalisées pour cette politique de contrôle d'accès IAM. Vous devez utiliser les balises de ressources fournies par AWS, décrites ci-dessous.

aws:ssmmessages:target-id

Avec cette clé de balise, vous incluez l'ID de nœud géré comme valeur dans la politique. Dans le bloc de politique suivant, l'instruction de condition permet à un utilisateur de mettre fin uniquement au nœud i-02573cafcfEXAMPLE.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "i-02573cafcfEXAMPLE" ] } } } ] }

Si l'utilisateur tente de mettre fin à une session pour laquelle il n'a pas obtenu cette autorisation TerminateSession, il reçoit une AccessDeniedException erreur.

aws:ssmmessages:session-id

Cette clé de balise inclut une variable pour l'ID de session comme valeur dans la demande de démarrage d'une session.

L'exemple suivant illustre une politique pour les cas où le type d'appelant est User. La valeur que vous fournissez pour aws:ssmmessages:session-id est l'ID de l'utilisateur. Dans cet exemple, AIDIODR4TAW7CSEXAMPLE représente l'ID d'un utilisateur de votre Compte AWS. Pour récupérer l'identifiant d'un utilisateur dans votre Compte AWS, utilisez la commande IAM,get-user. Pour plus d'informations, voir get-user dans la AWS Identity and Access Management section du guide de l'utilisateur IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "AIDIODR4TAW7CSEXAMPLE" ] } } } ] }

L'exemple suivant illustre une politique pour les cas où le type d'appelant est AssumedRole. Vous pouvez utiliser la variable {aws:userid} pour la valeur que vous attribuez à aws:ssmmessages:session-id. Vous pouvez également coder en dur un ID de rôle pour la valeur que vous attribuez à aws:ssmmessages:session-id. Si vous codez en dur un ID de rôle, vous devez fournir la valeur au format role-id:caller-specified-role-name. Par exemple, AIDIODR4TAW7CSEXAMPLE:MyRole.

Important

Pour que les balises système soient appliquées, l'ID de rôle que vous fournissez ne peut contenir que les caractères suivants : Lettres Unicode, 0-9 _, espace., :, /, =, +, -, @ et \.

Pour récupérer l'ID de rôle d'un rôle dans votre Compte AWS, utilisez la get-caller-identity commande. Pour plus d'informations, reportez-vous get-caller-identityà la référence des AWS CLI commandes.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}*" ] } } } ] }

Si un utilisateur tente de mettre fin à une session pour laquelle il n'a pas obtenu cette autorisation TerminateSession, il reçoit une erreur AccessDeniedException.

aws:ssmmessages:target-id et aws:ssmmessages:session-id

Vous pouvez également créer des politiques IAM qui permettent à un utilisateur de terminer des sessions marquées avec les deux balises système, comme illustré dans cet exemple.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:TerminateSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/aws:ssmmessages:target-id":[ "i-02573cafcfEXAMPLE" ], "ssm:resourceTag/aws:ssmmessages:session-id":[ "${aws:userid}*" ] } } } ] }

Exemple 5 : octroi d'un accès complet (administrateur) à toutes les sessions

La politique IAM suivante permet à un utilisateur d'interagir pleinement avec tous les nœuds gérés et toutes les sessions créées par l'ensemble des utilisateurs des nœuds. Elle doit être accordée uniquement à un administrateur qui nécessite un contrôle total sur les activités Session Manager de votre organisation.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Effect": "Allow", "Resource": [ "*" ] } ] }