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.
Reportez-vous aux exemples de politiques suivants pour vous aider à créer une politique personnalisée AWS Identity and Access Management (IAM) pour n'importe quel Session Manager scénarios d'accès utilisateur que vous souhaitez prendre en charge.
Rubriques
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 chacune example resource
placeholder
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-*"
]
}
]
}
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 de plus amples informations, veuillez consulter 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.
Note
Pour les utilisateurs fédérés, consultez Exemple 4 : autorisation d'un utilisateur à mettre fin uniquement aux sessions qu'il a démarrées.
{
"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",
"arn:aws:ssm:us-east-2:123456789012:document/SSM-SessionManagerRunShell"
]
},
{
"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:
) à condition que le nœud soit un nœud Finance WebServer (region
:987654321098
:instance/*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}-*"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ssm:us-east-2:123456789012:document/SSM-SessionManagerRunShell"
]
}
]
}
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"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ssm:us-east-2:123456789012:document/SSM-SessionManagerRunShell"
]
}
]
}
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, consultez la section Marquage de vos EC2 ressources Amazon dans le guide de EC2 l'utilisateur Amazon (le contenu s'applique à Windows and Linux nœuds gérés). 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 Restreindre l'accès aux commandes de niveau root via SSM Agent.
Exemple 4 : autorisation d'un utilisateur à mettre fin uniquement aux sessions qu'il a démarrées
Session Manager propose 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 méthode 1. Pour les utilisateurs fédérés, utilisez la méthode 2. -
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 la fédération IDs 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 de consulter toutes les sessions IDs 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 autorisent l'accès AWS via Federated. IDs
{
"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 uneAccessDeniedException
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 pouraws: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
. Par exemple,role-id
:caller-specified-role-name
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 erreurAccessDeniedException
. aws:ssmmessages:target-id
etaws: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. Il ne doit être accordé qu'à un administrateur qui a besoin d'un contrôle total sur les Session Manager activités.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:StartSession",
"ssm:TerminateSession",
"ssm:ResumeSession",
"ssm:DescribeSessions",
"ssm:GetConnectionStatus"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}