Compartir archivos de CloudTrail registro entre AWS cuentas - AWS CloudTrail

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Compartir archivos de CloudTrail registro entre AWS cuentas

En esta sección se explica cómo compartir archivos de CloudTrail registro entre varias AWS cuentas. El enfoque que utilice para compartir los registros Cuentas de AWS depende de la configuración del bucket de S3. Estas son las opciones para compartir archivos de registro:

  • Impuesta por el propietario del bucket: S3 Object Ownership es una configuración a nivel de bucket de Amazon S3 que puede usar para controlar la propiedad de los objetos cargados en su bucket y para deshabilitar o habilitar las listas de control de acceso ()ACLs. De forma predeterminada, la propiedad de los objetos se establece en la configuración impuesta por el propietario del bucket y todas ACLs están deshabilitadas. Cuando ACLs están deshabilitadas, el propietario del depósito es propietario de todos los objetos del depósito y administra el acceso a los datos exclusivamente mediante políticas de administración de acceso. Cuando se establece la opción impuesta por el propietario del bucket, el acceso se administra con la política del bucket, lo que elimina la necesidad de que los usuarios asuman un rol.

  • Asumir un rol para compartir los archivos de registro: si no ha elegido la configuración impuesta por el propietario del bucket, los usuarios deberán asumir un rol para acceder a los archivos de registro de su bucket de S3.

Comparta archivos de registros entre cuentas asumiendo un rol

nota

Esta sección se aplica únicamente a los buckets de Amazon S3 que no utilizan la configuración impuesta por el propietario del bucket.

En esta sección se explica cómo compartir archivos de CloudTrail registro entre varios Cuentas de AWS usuarios asumiendo un rol y se describen los escenarios para compartir archivos de registro.

  • Escenario 1: conceder acceso de solo lectura a las cuentas que han generado los archivos de registro ubicados en el bucket de Amazon S3.

  • Escenario 2: conceder acceso a todos los archivos de registro de su bucket de Amazon S3 a una cuenta de terceros que pueda analizar los archivos de registro por usted.

Para conceder acceso de solo lectura a los archivos de registro del bucket de Amazon S3
  1. Cree un IAM rol para cada cuenta con la que desee compartir archivos de registro. Debe ser administrador para conceder el permiso.

    Al crear el rol, haga lo siguiente:

    • Elija la opción Otra Cuenta de AWS.

    • Escriba el ID de 12 dígitos de la cuenta para conceder acceso.

    • Marque la MFA casilla Requerir si desea que el usuario proporcione una autenticación multifactorial antes de asumir el rol.

    • Elija la política de Amazon S3 ReadOnlyAccess.

      nota

      De forma predeterminada, la ReadOnlyAccess política de Amazon S3 otorga derechos de recuperación y publicación a todos los buckets de Amazon S3 de su cuenta.

    Para obtener más información sobre la administración de permisos para las IAM funciones, consulte las IAMfunciones en la Guía del IAM usuario.

  2. Cree una política de acceso que conceda acceso de solo lectura a la cuenta con la que quiere compartir los archivos de registro.

  3. Indique a cada cuenta que asuma un rol para recuperar los archivos de registro.

Conceder acceso de solo lectura a los archivos de registro con una cuenta de terceros
  1. Cree un IAM rol para la cuenta de terceros con la que desee compartir los archivos de registro. Debe ser administrador para conceder el permiso.

    Al crear el rol, haga lo siguiente:

    • Elija la opción Otra Cuenta de AWS.

    • Escriba el ID de 12 dígitos de la cuenta para conceder acceso.

    • Escriba un ID externo que proporcione más control sobre quién puede asumir el rol. Para obtener más información, consulte Cómo utilizar un identificador externo al conceder acceso a sus AWS recursos a un tercero en la Guía del IAM usuario.

    • Elija la ReadOnlyAccess política de Amazon S3.

      nota

      De forma predeterminada, la ReadOnlyAccess política de Amazon S3 otorga derechos de recuperación y publicación a todos los buckets de Amazon S3 de su cuenta.

  2. Cree una política de acceso que conceda acceso de solo lectura a la cuenta de terceros con la que quiere compartir los archivos de registro.

  3. Indique a la cuenta de terceros que asuma el rol de recuperar los archivos de registro.

En las secciones siguientes, se proporcionan más detalles sobre estos pasos.

Crear una política de acceso para conceder acceso a las cuentas de su propiedad

Como propietario del bucket de Amazon S3, tiene el control total sobre el bucket de Amazon S3 en el que se CloudTrail escriben los archivos de registro de las demás cuentas. Debe compartir los archivos de registro de cada unidad de negocio con la unidad de negocio que los creó. pero no desea que una unidad pueda leer los archivos de registro de las demás unidades.

Por ejemplo, para compartir los archivos de registro de la cuenta B con la cuenta B pero no con la cuenta C, debe crear un nuevo IAM rol en su cuenta que especifique que la cuenta B es una cuenta de confianza. Esta política de confianza de rol especifica que se puede confiar en la Cuenta B para que asuma el rol creado por su cuenta y debe ser similar al siguiente ejemplo. La política de confianza se crea automáticamente si crea el rol mediante la consola. Si utiliza el SDK para crear el rol, debe proporcionar la política de confianza como parámetro al CreateRoleAPI. Si utiliza el CLI para crear el rol, debe especificar la política de confianza en el create-role CLI comando.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-B-id:root" }, "Action": "sts:AssumeRole" } ] }

Asimismo, debe crear una política de acceso para especificar que la Cuenta B pueda leer desde solo la ubicación en la que la Cuenta B escribió sus archivos de registro. La política de acceso debe tener un aspecto similar al siguiente. Tenga en cuenta que el recurso ARN incluye el identificador de cuenta de doce dígitos para la cuenta B y el prefijo que especificó, si lo hubiera, al activar la cuenta B durante el proceso de agregación. CloudTrail Para obtener más información sobre cómo especificar un prefijo, consulte Crea registros de seguimiento en cuentas adicionales.

importante

Debe asegurarse de que el prefijo de la política de acceso sea exactamente el mismo que especificó al activar la cuenta B. Si no es así, debe editar la política de acceso a IAM roles de su cuenta para incorporar el prefijo real de la cuenta B. Si el prefijo de la política de acceso a roles no es exactamente igual al prefijo que especificó al activar CloudTrail la cuenta B, la cuenta B no podrá acceder a sus archivos de registro. CloudTrail

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/account-B-id/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }

Utilice el proceso anterior para todas las demás cuentas adicionales.

Tras crear funciones para cada cuenta y especificar las políticas de confianza y acceso adecuadas, y después de que el administrador de esa cuenta haya concedido acceso a un IAM usuario de cada cuenta, un IAM usuario de las cuentas B o C puede asumir la función mediante programación.

Para obtener más información, consulte Adopción de un rol.

Crear una política de acceso para conceder acceso a un tercero

Debe crear un IAM rol independiente para una cuenta de terceros. Al crear el rol, AWS crea automáticamente la relación de confianza, que especifica que se puede confiar en la cuenta de terceros para que asuma el rol. La política de acceso del rol especifica qué acciones puede realizar esa cuenta. Para obtener más información sobre la creación de roles, consulte Crear un IAM rol.

Por ejemplo, la relación de confianza creada por AWS especifica que se confía en la cuenta de terceros (la cuenta Z en este ejemplo) para que asuma el rol que usted ha creado. A continuación, se muestra un ejemplo de una política de confianza:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole" }] }

Si ha especificado un ID externo al crear el rol para la cuenta de terceros, su política de acceso contiene un elemento Condition adicional que comprueba el ID exclusivo asignado por esa cuenta. La prueba se realiza cuando se asume el rol. La siguiente política de acceso de ejemplo contiene un elemento Condition.

Para obtener más información, consulta Cómo usar un identificador externo para conceder acceso a tus AWS recursos a un tercero en la Guía del IAM usuario.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"sts:ExternalId": "external-ID-issued-by-account-Z"}} }] }

También debe crear una política de acceso para su cuenta para especificar que la cuenta de terceros pueda leer todos los registros del bucket de Amazon S3. La política de acceso tendrá un aspecto similar a la del siguiente ejemplo. El carácter comodín (*) al final del valor de Resource indica que la cuenta de terceros puede tener acceso a cualquier archivo de registro del bucket de S3 para el que se le ha concedido acceso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }

Tras crear un rol para la cuenta de terceros y especificar la relación de confianza y la política de acceso adecuadas, un IAM usuario de la cuenta de terceros debe asumir el rol mediante programación para poder leer los archivos de registro del depósito. Para obtener más información, consulte Adopción de un rol.

Adopción de un rol

Debe designar un IAM usuario independiente para que asuma cada rol que cree en cada cuenta. A continuación, debe asegurarse de que cada IAM usuario tenga los permisos adecuados.

IAMusuarios y roles

Tras crear las funciones y políticas necesarias, debe designar un IAM usuario en cada una de las cuentas con las que desee compartir archivos. Cada IAM usuario asume mediante programación la función adecuada para acceder a los archivos de registro. Cuando un usuario asume un rol, AWS devuelve las credenciales de seguridad temporales a ese usuario. A continuación, pueden hacer solicitudes para enumerar, recuperar, copiar o eliminar archivos de registro en función de los permisos concedidos por la política de acceso asociada al rol.

Para obtener más información sobre cómo trabajar con IAM identidades, consulte IAMIdentidades (usuarios, grupos de usuarios y roles).

La principal diferencia es la política de acceso que se crea para cada IAM rol en cada escenario.

Creación de políticas de permisos para usuarios de IAM

Para realizar las acciones permitidas por un rol, el IAM usuario debe tener permiso para llamar al AWS STS AssumeRoleAPI. Debe editar la política para cada usuario con el fin concederles los permisos pertinentes. Para ello, debe establecer un elemento de recurso en la política que adjunta al IAM usuario. El siguiente ejemplo muestra una política para un IAM usuario de otra cuenta que permite a ese usuario asumir un rol denominado Test creado anteriormente por la cuenta A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::account-A-id:role/Test" } ] }
Para editar una política administrada por el cliente (consola)
  1. Inicie sesión en AWS Management Console y abra la IAM consola en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Políticas.

  3. En la lista de políticas, elija el nombre de la política que desea editar. Puede utilizar el cuadro de búsqueda para filtrar la lista de políticas.

  4. Seleccione la pestaña Permisos y, a continuación, Editar.

  5. Realice una de las siguientes acciones siguientes:

    • Elija la opción visual para cambiar la política sin entender la JSON sintaxis. Puede realizar cambios en el servicio, acciones, recursos o condiciones opcionales para cada bloque de permisos en su política. También puede importar una política para añadir permisos adicionales en la parte inferior de la política. Cuando haya terminado con los cambios, seleccione Siguiente para continuar.

    • Elija la JSONopción de modificar la política escribiendo o pegando texto en el cuadro de JSON texto. También puede importar una política para añadir permisos adicionales en la parte inferior de la política. Resuelva las advertencias de seguridad, errores o advertencias generales generadas durante la validación de política y luego elija Siguiente.

      nota

      Puede cambiar entre las opciones visual y de JSONeditor en cualquier momento. Sin embargo, si realiza cambios o selecciona Siguiente en el editor visual, IAM podría reestructurar su política para optimizarla para el editor visual. Para obtener más información, consulte Reestructuración de políticas en la Guía del IAM usuario.

  6. En la página Revisar y guardar, revise los Permisos definidos en esta política y, a continuación, seleccione Guardar cambios para guardar su trabajo.

  7. Si la política administrada ya tiene el máximo de cinco versiones, al seleccionar Guardar cambios aparecerá un cuadro de diálogo. Para guardar la nueva versión, se elimina la versión no predeterminada más antigua de la política y se sustituye con esta nueva versión. También puede configurar la nueva versión como versión predeterminada de la política.

    Seleccione Guardar cambios para guardar la nueva versión de la política.

¿Llamando AssumeRole

Un usuario puede asumir un rol creando una aplicación que llame al rol AWS STS AssumeRoleAPIy le pase el nombre de sesión, el número de recurso de Amazon (ARN) del rol que se va a asumir y un ID externo opcional. El nombre de la sesión del rol lo define la cuenta que creó el rol a asumir. El identificador externo, en su caso, lo define la cuenta de terceros y se pasa a la cuenta propietaria para su inclusión durante la creación del rol. Para obtener más información, consulte Cómo utilizar un identificador externo al conceder acceso a sus AWS recursos a un tercero en la Guía del IAM usuario. Puede recuperarlo ARN de la cuenta A abriendo la IAM consola.

Para encontrar el ARN valor de la cuenta A con la IAM consola
  1. Elija Roles

  2. Seleccione el rol que desea examinar.

  3. Busca el rol ARN en la sección de resumen.

AssumeRole APIDevuelve las credenciales temporales que se pueden usar para acceder a los recursos de la cuenta propietaria. En este ejemplo, los recursos a los que quiere acceder son el bucket de Amazon S3 y los archivos de registro que este contiene. Las credenciales provisionales tienen los permisos que definió en la política de acceso del rol.

El ejemplo siguiente con Python (que utiliza AWS SDK for Python (Boto)) muestra cómo llamar a AssumeRole y cómo utilizar las credenciales de seguridad provisionales que se devuelven para mostrar todos los buckets de Amazon S3 bajo control de la cuenta A.

def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name): """ Assumes a role that grants permission to list the Amazon S3 buckets in the account. Uses the temporary credentials from the role to list the buckets that are owned by the assumed role's account. :param user_key: The access key of a user that has permission to assume the role. :param assume_role_arn: The Amazon Resource Name (ARN) of the role that grants access to list the other account's buckets. :param session_name: The name of the STS session. """ sts_client = boto3.client( "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret ) try: response = sts_client.assume_role( RoleArn=assume_role_arn, RoleSessionName=session_name ) temp_credentials = response["Credentials"] print(f"Assumed role {assume_role_arn} and got temporary credentials.") except ClientError as error: print( f"Couldn't assume role {assume_role_arn}. Here's why: " f"{error.response['Error']['Message']}" ) raise # Create an S3 resource that can access the account with the temporary credentials. s3_resource = boto3.resource( "s3", aws_access_key_id=temp_credentials["AccessKeyId"], aws_secret_access_key=temp_credentials["SecretAccessKey"], aws_session_token=temp_credentials["SessionToken"], ) print(f"Listing buckets for the assumed role's account:") try: for bucket in s3_resource.buckets.all(): print(bucket.name) except ClientError as error: print( f"Couldn't list buckets for the account. Here's why: " f"{error.response['Error']['Message']}" ) raise

Deja de compartir archivos de CloudTrail registro entre cuentas AWS

Para dejar de compartir los archivos de registro con otra persona Cuenta de AWS, elimina el rol que creaste para esa cuenta. Para obtener información acerca de cómo eliminar un rol, consulte Eliminación de roles o perfiles de instancia.