Come posso configurare un bucket Amazon S3 centrale per la registrazione di Session Manager da più account?

7 minuti di lettura
0

Desidero configurare la registrazione centrale di Amazon Simple Storage Service (Amazon S3) per Session Manager, una funzionalità di AWS Systems Manager, per i miei account AWS.

Breve descrizione

In Systems Manager, puoi identificare e configurare la registrazione di Amazon S3 per Session Manager.

Guida introduttiva

L’Agente AWS Systems Manager (Agente SSM) utilizza lo stesso ruolo di AWS Identity and Access Management (IAM) per attivarsi e caricare i log su Amazon S3. Puoi utilizzare un profilo di istanza IAM collegato a un'istanza Amazon Elastic Compute Cloud (Amazon EC2) o il ruolo IAM configurato per la configurazione predefinita di gestione dell'host.

È necessario disporre delle seguenti autorizzazioni per completare la configurazione:

  • L'account proprietario dell’IAM principale, utilizzato per le autorizzazioni, deve concedere le autorizzazioni Amazon S3 tramite una policy IAM.
  • Il proprietario del bucket S3 deve inoltre concedere le autorizzazioni tramite una bucket policy o una lista di controllo degli accessi (ACL) a tutti gli account.
  • Se il bucket è crittografato con una chiave AWS Key Management Service (AWS KMS), devi creare e utilizzare una policy IAM.

Nota:

  • È necessario allegare la policy IAM al ruolo che concede le autorizzazioni dell'agente SSM.
  • La chiave KMS utilizzata per crittografare il bucket deve inoltre concedere l'autorizzazione tramite la policy della chiave KMS.

Per configurare la registrazione centrale dei bucket Amazon S3 per Session Manager, identifica innanzitutto l'account principale proprietario del bucket S3 centralizzato. Nell'esempio seguente, l'account A possiede il bucket centralizzato.

Quindi completa i seguenti passaggi:

  1. Nell'account A, crea una o due chiavi AWS KMS personalizzate e una policy KMS personalizzata.
  2. Nell'Account A, crea un bucket S3 per la registrazione di Systems Manager.
  3. Nell'account A, crea la policy delle risorse per il bucket S3.
  4. In un altro account, crea una policy IAM per concedere le autorizzazioni al bucket S3 e a entrambe le chiavi KMS.
  5. (Facoltativo) Usa i profili shell di Session Manager per creare e configurare la registrazione.
  6. Verifica che la registrazione di Session Manager sia configurata nei bucket di destinazione e utilizzi la chiave KMS.
  7. Verifica che i log vengano generati nel bucket.

Risoluzione

Nota: Per definire l'ambito delle autorizzazioni, il seguente esempio di processo utilizza chiavi di condizione per i ruoli e le organizzazioni AWS. Se hai bisogno di un controllo aggiuntivo delle autorizzazioni, è consigliabile utilizzare i ruoli principali in Session Manager.

Questo processo utilizza le seguenti autorizzazioni chiave:

  • La policy IAM AWS ha gestito AmazonSSMManagedInstanceCore per fornire le autorizzazioni di Systems Manager.
  • L'autorizzazione s3:GetEncryptionConfiguration per descrivere la configurazione di crittografia nel bucket S3.
  • Le autorizzazioni s3:PutObject e s3:PutObjectAcl per inserire oggetti crittografati nel bucket S3.
  • Le autorizzazioni kms:Decrypt e kms:GenerateDataKey per fornire l'accesso alle chiavi KMS quando si accede ai bucket e al Session Manager.
  • L'autorizzazione aws:PrincipalOrgID: o-xxxxxxx per consentire l'accesso limitato a qualsiasi responsabile che non corrisponde all'ID dell'organizzazione.

Prerequisiti

È necessario disporre della connettività agli endpoint per i seguenti servizi:

  • Amazon S3
  • AWS KMS
  • Messaggi di Systems Manager e Systems Manager
  • Messaggi Amazon EC2

Crea le chiavi KMS

Innanzitutto, crea una o due chiavi.

  • Se stai creando una chiave, usala (chiave 1) per la crittografia S3 nel bucket di registrazione di Session Manager e il Session Manager preferisce la crittografia KMS.
  • Se stai creando due chiavi, usa la prima chiave KMS (chiave 1) per crittografare il bucket S3 per la registrazione. Usa la seconda chiave KMS (chiave 2) per crittografare il flusso di Session Manager nel bucket Amazon S3.

Quindi, crea la chiave Sid per ogni chiave. Assicurati di aggiungere l'elemento Sid alla tua policy KMS per ogni chiave.

Per consentire a Session Manager di crittografare la sessione, aggiungi le seguenti autorizzazioni alle organizzazioni:

Nota: Sostituisci il valore aws:PrincipalOrgID con l'ID dell'organizzazione e l'ARN principale.

{  
    "Effect": "Allow",  
    "Principal": {  
        "AWS": "*"  
    },  
    "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey"  
    ],  
    "Resource": "*",  
    "Condition": {  
        "StringEquals": {  
            "aws:PrincipalOrgID": "o-xxxxxxx"  
        }  
    }  
}

Crea un bucket S3 per accedere all'account A

Crea un bucket Amazon S3 per registrare i dati di Session Manager nell'account A. Assicurati di assegnare un nome al bucket, ad esempio, customer_session_manager_logging_bucket. Quando scegli la crittografia, usa la chiave 1.

Crea la policy delle risorse per il bucket S3

Applica la seguente policy delle risorse al bucket che stai utilizzando per registrare le tue sessioni.

Per utilizzare una chiave di condizione per PrincipalOrgId per limitare l'accesso al bucket S3, aggiungi la seguente policy sulle risorse al tuo bucket S3:

Nota: Questa policy rifiuta le richieste di accesso provenienti da un principale esterno all'organizzazione.

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "*"  
            },  
            "Action": "s3:GetEncryptionConfiguration",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket",  
            "Condition": {  
                "StringEquals": {  
                    "aws:PrincipalOrgID": "o-xxxxxxxxxxxxxx"  
                }  
            }  
        },  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "*"  
            },  
            "Action": [  
                "s3:PutObject",  
                "s3:PutObjectAcl"  
            ],  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*",  
            "Condition": {  
                "StringEquals": {  
                    "aws:PrincipalOrgID": "o-xxxxxxxxxxxxx"  
                }  
            }  
        }  
    ]  
}

Crea una policy IAM

Innanzitutto, crea una policy IAM per concedere le autorizzazioni al bucket S3 e alle chiavi.

Allega la seguente policy di esempio al tuo profilo di istanza da utilizzare sugli account che desideri connettere. Puoi utilizzare una policy in linea o una policy gestita dal cliente per allegare la policy:

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Sid": "PutObjectsBucket",  
            "Action": [  
                "s3:PutObject",  
                "s3:PutObjectAcl"  
            ],  
            "Effect": "Allow",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*"  
        },  
        {  
            "Sid": "ListBucketAndEncryptionConfig",  
            "Action": [  
                "s3:GetEncryptionConfiguration"  
            ],  
            "Effect": "Allow",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket"  
        },  
        {  
            "Sid": "S3KMSSessionManagerKMS",  
            "Effect": "Allow",  
            "Action": [  
                "kms:Decrypt",  
                "kms:GenerateDataKey*"  
            ],  
            "Resource": [  
                "arn:aws:kms:us-east-1:ACCOUNTId:key/YOUR-KMS-FOR-SessionManagerEncryption",  
                "arn:aws:kms:us-east-1:ACCOUNTID:key/YOUR-KMS-FOR-S3BucketEncryption"  
            ]  
        }  
    ]  
}

(Facoltativo) Usa i profili shell di Session Manager per creare e configurare la registrazione

Per creare un profilo shell personalizzato, crea innanzitutto un file. Quindi, salva il file con un nome descrittivo, ad esempio SessionManagerRunShell.json. Sostituisci il contenuto di questo file.json con il seguente esempio:

Nota: Sostituisci customer_session_manager_logging_bucket con il nome del bucket e YOUR-KMS-FOR-SessionManagerEncryption con la chiave designata per Session Manager.

{  
"schemaVersion": "1.0",  
"description": "Document to hold regional settings for Session Manager",  
"sessionType": "Standard_Stream",  
"inputs": {  
"s3BucketName": "customer_session_manager_logging_bucket",  
"s3KeyPrefix": "",  
"s3EncryptionEnabled": true,  
"cloudWatchLogGroupName": "",  
"cloudWatchEncryptionEnabled": false,  
"cloudWatchStreamingEnabled": false,  
"kmsKeyId": "arn:aws:kms:REGION:ACCOUNTID:key/YOUR-KMS-FOR-SessionManagerEncryption",  
"runAsDefaultUser": "",  
"idleSessionTimeout": "20",  
"maxSessionDuration": "",  
"shellProfile": {"windows": "", "linux": ""}  
  }  
}

Esegui i seguenti comandi per salvare questo file come documento predefinito di Session Manager:

aws ssm update-document --name "SSM-SessionManagerRunShell"   
--content "file://SessionManagerRunShell.json"   
--document-version "$LATEST"

Verifica che la registrazione del Session Manager sia configurata nei bucket di destinazione e stia utilizzando la chiave KMS

Apri il bucket S3 e verifica di aver attivato Bucket Encryption. Controlla l'ARN del KMS per assicurarti che Session Manager stia utilizzando la chiave 1.

Nota: Quando si configura la registrazione tra account di Session Manager, è consigliabile utilizzare un prefisso dell'ID dell'account. Questo consente di tenere traccia degli account e dei log associati.

Per controllare le preferenze di Session Manager, completa i seguenti passaggi:

  1. Apri la console di Session Manager, quindi scegli la tua regione AWS.
  2. Verifica di aver attivato la crittografia del bucket S3, quindi inserisci l'ARN della chiave 1 presente nell'account A.
  3. Nel bucket S3, inserisci il nome del bucket S3 presente nell'account A.

Verifica che i log vengano generati nel bucket

Per generare log, usa Session Manager in un altro account per connetterti alla tua istanza.

Completa i seguenti passaggi:

  1. Apri la console di Session Manager, quindi scegli la tua regione.
  2. Verifica che la sessione si connetta e che venga visualizzato il seguente messaggio: "Questa sessione è crittografata utilizzando AWS KMS”
  3. Inserisci alcune voci di test per generare i log, quindi termina la sessione.
  4. Nell'Account A, accedi al bucket S3 che hai creato per la registrazione e cerca i log più recenti in base all'ora.

Nota: Dopo aver disconnesso la sessione, la compilazione dei log può richiedere almeno 30 secondi. Per ulteriori informazioni, vedere Registrazione di log utilizzando la registrazione degli accessi al server.

Informazioni correlate

Protezione dei dati con crittografia lato server

Azioni, risorse e chiavi di condizione per Amazon S3

Esempi di policy Bucket

Linee guida sulle policy di accesso

Consenti a un utente di crittografare e decrittografare con chiavi KMS specifiche

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa