Altre policy IAM di esempio per Session Manager - AWS Systems Manager

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.

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.

{ "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:region:987654321098:instance/*) a condizione che il nodo sia un server Web Finance (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 errore AccessDeniedException.

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 per aws: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 IAM get-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 per aws:ssmmessages:session-id. In alternativa, è possibile codificare un ID ruolo per il valore specificato per aws:ssmmessages:session-id. Se codifichi un ID ruolo, devi specificare il valore nel formato role-id:caller-specified-role-name. Ad esempio 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 errore AccessDeniedException.

aws:ssmmessages:target-id e aws: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": [ "*" ] } ] }