Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Altre policy IAM di esempio per Session Manager
Fai riferimento alle seguenti policy di esempio per creare una policy IAM AWS Identity and Access Management personalizzata per qualunque scenario di accesso utente al Session Manager che desideri supportare.
Argomenti
- Esempio 1: concedere l'accesso ai documenti nella console
- Esempio 2: limitare l'accesso a nodi gestiti specifici
- Esempio 3: limitazione dell'accesso in base ai tag
- Esempio 4: consentire agli utenti di terminare solo le sessioni da essi avviate
- Esempio 5: consentire l'accesso (amministrativo) completo a tutte le sessioni
Esempio 1: concedere l'accesso ai documenti nella console
Puoi consentire agli utenti di specificare un documento personalizzato quando avviano una sessione utilizzando la console di Session Manager. Nel seguente esempio, la policy IAM concede l'autorizzazione ad accedere ai documenti con nomi che iniziano con SessionDocument-
nella Regione AWS e nell’Account AWS specificati.
Per utilizzare questa policy, sostituisci ciascun segnaposto delle risorse di esempio
con le tue informazioni.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:ListDocuments" ], "Resource": [ "arn:aws:ssm:
region
:account-id
:document/SessionDocument-*" ] } ] }
Nota
La console di Session Manager supporta solo i documenti di sessione che hanno un sessionType
di Standard_Stream
e che vengono utilizzati per definire le preferenze di sessione. Per ulteriori informazioni, consultare Schema documento di sessione.
Esempio 2: limitare l'accesso a nodi gestiti specifici
È possibile creare una policy IAM che definisca a quali nodi gestiti un utente può connettersi utilizzando Session Manager. Ad esempio, la seguente policy concede a un utente il permesso di avviare, terminare e riprendere le sessioni su tre nodi specifici. La policy impedisce all'utente di connettersi a nodi diversi da quelli specificati.
Nota
Per utenti federati, consulta Esempio 4: consentire agli utenti di terminare solo le sessioni da essi avviate.
{ "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}-*" ] } ] }
Esempio 3: limitazione dell'accesso in base ai tag
Puoi limitare l'accesso ai nodi gestiti in base a tag specifici. In questo esempio, l'utente è autorizzato ad avviare sessioni (Effect: Allow, Action: ssm:StartSession,
ssm:ResumeSession
) su qualsiasi nodo gestito (Resource:
arn:aws:ec2:
) a condizione che il nodo sia un server Web Finance (region
:987654321098
:instance/*ssm:resourceTag/Finance: WebServer
). Se l'utente invia un comando a un nodo gestito senza tag o con un tag diverso da Finance: WebServer
, il risultato del comando includerà 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" ] } ] }
Puoi creare policy IAM che permettono a un utente di avviare sessioni su nodi gestiti contrassegnati con più tag. La seguente policy consente all'utente di avviare sessioni su nodi gestiti a cui sono applicati entrambi i tag specificati. Se l'utente invia un comando a un nodo gestito non contrassegnato con questi due tag, il risultato del comando includerà 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" ] } ] }
Per ulteriori informazioni sulla creazione di policy IAM, consulta la pagina Policy gestite e policy inline nella Guida per l'utente di IAM. Per ulteriori informazioni sull'applicazione di tag a nodi gestiti, consulta Applicazione di tag a risorse Amazon EC2 nella Guida per l'utente di Amazon EC2 (il contenuto si applica ai nodi gestiti di Windows e Linux). Per ulteriori informazioni su come aumentare la posizione di sicurezza rispetto ai comandi non autorizzati a livello di root nei nodi gestiti, consulta Limitare l'accesso ai comandi a livello di root tramite SSM Agent
Esempio 4: consentire agli utenti di terminare solo le sessioni da essi avviate
Session Manager fornisce due metodi per controllare quali sessioni un utente federato nel tuo Account AWS può terminare.
-
Utilizzare la variabile
{aws:userid}
in una policy di autorizzazioni AWS Identity and Access Management (IAM). Gli utenti federati possono terminare solo le sessioni da essi avviate. Per gli utenti non federati, utilizzare il Metodo 1. Per gli utenti federati, utilizzare il Metodo 2. -
Utilizzare i tag forniti dai tag AWS in una policy di autorizzazioni IAM. Nella policy deve essere inclusa una condizione che consenta agli utenti di terminare solo le sessioni contrassegnate con tag specifici forniti da AWS. Questo metodo funziona per tutti gli account, inclusi quelli che utilizzano ID federati per concedere l'accesso a AWS.
Metodo 1: concedere i privilegi di TerminateSession utilizzando la variabile {aws:username}
La policy IAM seguente consente a un utente di visualizzare gli ID di tutte le sessioni dell'account. Tuttavia, gli utenti possono interagire con i nodi gestiti solo attraverso le sessioni da loro avviate. Un utente a cui è assegnata la seguente policy non può terminare o connettersi alle sessioni di altri utenti. A tale scopo, la policy utilizza la variabile {aws:username}
.
Nota
Questo metodo non funziona per gli account che utilizzano ID federati per concedere l'accesso a AWS.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:DescribeSessions" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:TerminateSession" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }
Metodo 2: concedere i privilegi di TerminateSession utilizzando i tag forniti da AWS
È possibile controllare le sessioni che un utente può terminare includendo variabili di chiave tag condizionali in una policy IAM. La condizione specifica che l'utente può terminare solo le sessioni che sono contrassegnate con una o entrambe queste specifiche variabili chiave tag e un valore specificato.
Quando un utente nel tuo Account AWS avvia una sessione, Session Manager applica due tag risorsa alla sessione. Il primo tag risorsa è aws:ssmmessages:target-id
, con il quale si specifica l'ID della destinazione che l'utente può terminare. L'altro tag risorsa è aws:ssmmessages:session-id
, con un valore nel formato di
.role-id
:caller-specified-role-name
Nota
Session Manager non supporta i tag personalizzati per questa policy di controllo dell'accesso IAM. È necessario utilizzare i tag risorse forniti da AWS, descritti di seguito.
-
aws:ssmmessages:target-id
-
Con questa chiave di tag, è possibile includere l'ID del nodo gestito come valore nella policy. Nel seguente blocco della policy, l'istruzione di condizione consente a un utente di terminare solo il nodo i-02573cafcfEXAMPLE.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "i-02573cafcfEXAMPLE" ] } } } ] }
Se l'utente tenta di terminare una sessione per la quale non è stata concessa questa autorizzazione
TerminateSession
, viene visualizzato un erroreAccessDeniedException
. -
aws:ssmmessages:session-id
-
Questa chiave tag include una variabile per l'ID di sessione come valore nella richiesta di avviare una sessione.
Nell'esempio seguente viene illustrata una policy per i casi in cui il tipo di chiamante è
User
. Il valore fornito peraws:ssmmessages:session-id
è l'ID dell'utente. In questo esempio,AIDIODR4TAW7CSEXAMPLE
rappresenta l'ID di un utente nel tuo Account AWS. Per recuperare l'ID di un utente nel tuo Account AWS, utilizza il comando IAMget-user
. Per informazioni, consulta get-user nella sezione AWS Identity and Access Management della Guida utente IAM.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "AIDIODR4TAW7CSEXAMPLE" ] } } } ] }
Nell'esempio seguente viene illustrata una policy per i casi in cui il tipo di chiamante è
AssumedRole
. Puoi utilizzare la variabile{aws:userid}
per il valore da fornire peraws:ssmmessages:session-id
. In alternativa, è possibile codificare un ID ruolo per il valore specificato peraws:ssmmessages:session-id
. Se codifichi un ID ruolo, devi specificare il valore nel formato
. Ad esempiorole-id
:caller-specified-role-name
AIDIODR4TAW7CSEXAMPLE:MyRole
.Importante
Per applicare i tag di sistema, l'ID ruolo fornito può contenere solo i seguenti caratteri: lettere Unicode, 0-9, spazio,
_
,.
,:
,/
,=
,+
,-
,@
e\
.Per recuperare l'ID per un ruolo nel tuo Account AWS, utilizza il comando
get-caller-identity
. Per informazioni, consulta get-caller-identity in Riferimento dei comandi di AWS CLI.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}*" ] } } } ] }
Se un utente tenta di terminare una sessione per la quale non è stata concessa questa autorizzazione
TerminateSession
, viene visualizzato un erroreAccessDeniedException
. aws:ssmmessages:target-id
eaws:ssmmessages:session-id
-
È inoltre possibile creare policy IAM che permettono a un utente di terminare sessioni contrassegnate con entrambi i tag di sistema, come illustrato in questo esempio.
{ "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}*" ] } } } ] }
Esempio 5: consentire l'accesso (amministrativo) completo a tutte le sessioni
La seguente policy IAM consente a un utente di interagire con tutti i nodi gestiti e tutte le sessioni create da tutti gli utenti per tutti i nodi. Dovrebbe essere concessa solo a un amministratore che ha bisogno del controllo completo sulle attività del Session Manager della tua organizzazione.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Effect": "Allow", "Resource": [ "*" ] } ] }