¿Cómo puedo configurar un bucket central de Amazon S3 para el registro del Administrador de sesiones desde varias cuentas?

8 minutos de lectura
0

Quiero configurar el registro central de Amazon Simple Storage Service (Amazon S3) para el Administrador de sesiones, una función de AWS Systems Manager, en mis cuentas de AWS.

Breve descripción

En Systems Manager, puede identificar y configurar el registro de Amazon S3 en Administrador de sesiones. 

Primeros pasos

El AWS Systems Manager Agent (SSM Agent) usa el mismo rol de AWS Identity and Access Management (IAM) para activarse y cargar registros en Amazon S3. Puede usar un perfil de instancia de IAM adjunto a una instancia de Amazon Elastic Compute Cloud (Amazon EC2) o el rol de IAM configurado para la configuración predeterminada de administración de hosts.

Debe tener los siguientes permisos para completar la configuración:

  • La cuenta propietaria de la entidad principal de IAM que se usa para los permisos debe conceder los permisos de Amazon S3 a través de una política de IAM.
  • El propietario del bucket de S3 también debe conceder permisos a todas las cuentas mediante una política de bucket o una lista de control de acceso (ACL).
  • Si el bucket está cifrado con una clave de AWS Key Management Service (AWS KMS), debe crear y usar una política de IAM.

Nota:

  • Debe adjuntar la política de IAM al rol que otorga los permisos al SSM Agent.
  • La clave de KMS que se usa para cifrar el bucket también debe conceder el permiso a través de la política de claves de KMS.

Para configurar el registro del bucket central de Amazon S3 para el Administrador de sesiones, identifique primero la cuenta principal propietaria de su bucket de S3 centralizado. En el siguiente ejemplo, la cuenta A es propietaria del bucket centralizado.

A continuación, siga estos pasos:

  1. En la cuenta A, cree una o dos claves de AWS KMS personalizadas y una política de KMS personalizada.
  2. En la cuenta A, cree un depósito de S3 para el registro de Systems Manager.
  3. En la cuenta A, cree la política de recursos para el bucket de S3.
  4. En otra cuenta, cree una política de IAM para conceder permisos al bucket de S3 y a ambas claves de KMS.
  5. (Opcional) Utilice los perfiles de shell del Administrador de sesiones para crear y configurar el registro.
  6. Compruebe que el registro del Administrador de sesiones está configurado en los buckets de destino y que utiliza la clave KMS.
  7. Compruebe que los registros se generan en el bucket.

Resolución

Nota: Para determinar el alcance de los permisos, el siguiente proceso de ejemplo utiliza claves de condición para los roles y las AWS Organizations. Si necesita un control de permisos adicional, se recomienda utilizar los roles principales en Administrador de sesiones.

Este proceso usa los siguientes permisos clave:

  • La política administrada de AWS de IAM AmazonSSMManagedInstanceCore para proporcionar permisos de Systems Manager.
  • El permiso s3:GetEncryptionConfiguration para describir la configuración del cifrado en el bucket de S3.
  • Los permisos s3:PutObject y s3:PutObjectAcl para colocar objetos cifrados en el bucket de S3.
  • Los permisos KMS:Decrypt y KMS:GenerateDataKey para proporcionar acceso a las claves de KMS al acceder a los buckets y al Administrador de sesiones.
  • El permiso aws:PrincipalOrgID: o-xxxxxxx para permitir el acceso restringido a cualquier entidad principal que no coincida con el ID de las organizaciones.

Requisitos previos

Debe tener conectividad con los puntos de conexión para los siguientes servicios:

  • Amazon S3
  • AWS KMS
  • Systems Manager y mensajes de Systems Manager
  • Mensajes de Amazon EC2

Crear las claves de KMS

Primero, cree una o dos claves.

  • Si va a crear una clave, úsela (clave 1) para el cifrado de S3 en el bucket de registro del Administrador de sesiones y el cifrado KMS de preferencias del Administrador de sesiones.
  • Si va a crear dos claves, utilice la primera clave de KMS (clave 1) para cifrar el bucket de S3 para el registro. Utilice la segunda clave de KMS (clave 2) para cifrar la transmisión del Administrador de sesiones al bucket de Amazon S3.

A continuación, cree el Sid de clave para cada clave. Asegúrese de añadir el elemento Sid a la política de KMS para cada clave. 

Para permitir que el Administrador de sesiones cifre la sesión, añada los siguientes permisos a las organizaciones:

Nota: Sustituya el valor aws:PrincipalOrgID por el ID de su organización y el ARN principal.

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

Crear un bucket de S3 para iniciar sesión en la cuenta A

Cree un bucket de Amazon S3 para registrar los datos del Administrador de sesiones en la cuenta A. Asegúrese de nombrar el bucket, por ejemplo, customer_session_manager_logging_bucket. Al elegir el cifrado, utilice la clave 1.

Crear la política de recursos para el bucket de S3

Aplique la siguiente política de recursos al bucket que utiliza para registrar sus sesiones.

Para usar una clave de condición para que PrincipalOrgID restrinja el acceso al bucket de S3, agregue la siguiente política de recursos a su bucket de S3:

**Nota:**Esta política rechaza las solicitudes de acceso de una entidad principal ajena a su organización.

{  
    "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"  
                }  
            }  
        }  
    ]  
}

Crear una política de IAM

En primer lugar, cree una política de IAM para conceder permisos al bucket de S3 y a las claves.

Adjunte el siguiente ejemplo de política a su perfil de instancia para usarlo en las cuentas que desea conectar. Puede usar una política insertada o una política administrada por el cliente para adjuntar la política:

{  
    "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"  
            ]  
        }  
    ]  
}

(Opcional) Utilice los perfiles de shell del Administrador de sesiones para crear y configurar el registro

Para crear un perfil de shell personalizado, primero cree un archivo. A continuación, guarde el archivo con un nombre descriptivo, por ejemplo, SessionManagerRunShell.json. Sustituya el contenido de este archivo.json por el siguiente ejemplo:

**Nota:**Sustituya customer_session_manager_logging_bucket por el nombre de su bucket y YOUR-KMS-FOR-SessionManagerEncryption en Administrador de sesiones.

{  
"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": ""}  
  }  
}

Ejecute los siguientes comandos para guardar este archivo como el documento predeterminado del Administrador de sesiones:

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

Compruebe que el registro del Administrador de sesiones está configurado en los buckets de destino y que utiliza la clave KMS

Abra el bucket S3 y compruebe que tiene el Cifrado de bucket activado. Compruebe el ARN de KMS para asegurarse de que el Administrador de sesiones está utilizando la clave 1.

Nota: Al configurar el registro entre cuentas del Administrador de sesiones, se recomienda utilizar un prefijo del ID de la cuenta. Esto le ayuda a hacer un seguimiento de las cuentas y sus registros asociados.

Para comprobar las preferencias del Administrador de sesiones, siga estos pasos:

  1. Abra la consola del Administrador de sesiones y seleccione su región de AWS.
  2. Compruebe que tiene activado el cifrado de buckets S3 y, a continuación, introduzca el ARN de la clave 1 que se encuentra en la cuenta A.
  3. En el bucket S3, introduzca el nombre del bucket S3 que está en la cuenta A.

Verifique que los registros se generan en el bucket

Para generar registros, use el Administrador de sesiones en otra cuenta para conectarse a su instancia.

Complete los siguientes pasos:

  1. Abra la consola del Administrador de sesiones y seleccione su región.
  2. Compruebe que la sesión se conecta y aparece el siguiente mensaje: «Esta sesión está cifrada con AWS KMS»
  3. Introduzca algunas entradas de prueba para generar los registros y, a continuación, finalice la sesión.
  4. En la cuenta A, navegue hasta el bucket de S3 que has creado para el registro y busca los registros más recientes en función de la hora.

Nota: Tras desconectar la sesión, los registros pueden tardar al menos 30 segundos en rellenarse. Para obtener más información, consulte Registrar solicitudes mediante el registro de acceso al servidor.

Información relacionada

Protección de datos con cifrado del lado del servidor

Acciones, recursos y claves de condición para Amazon S3

Ejemplos de política de bucket

Directrices de la política de acceso

Permitir a un usuario cifrar y descifrar con claves KMS específicas

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses