Información general sobre la administración del acceso - Amazon Simple Storage Service

Información general sobre la administración del acceso

Cuando concede permisos en Amazon S3, decide quién debe obtener los permisos, para qué recursos de Amazon S3 se obtienen y las acciones específicas que desea permitir en esos recursos. En las siguientes secciones, se proporciona una descripción general de los recursos de Amazon S3 y cómo determinar el mejor método para controlar el acceso a ellos.

Recursos de Amazon S3: buckets y objetos

En AWS, un recurso es una entidad con la que se puede trabajar. En Amazon S3, los buckets y objetos son los recursos y ambos tienen subrecursos asociados.

Entre los subrecursos de bucket, se encuentran los siguientes:

Entre los subrecursos de objeto se encuentran los siguientes:

  • acl: almacena una lista de permisos de acceso en el objeto. Para obtener más información, consulte Información general de las Listas de control de acceso (ACL).

  • restore: admite la restauración temporal de un objeto archivado. Para obtener más información, consulte el tema sobre restauración de un objeto POST en la Referencia de la API de Amazon Simple Storage Service.

    Un objeto en la clase de almacenamiento S3 Glacier Flexible Retrieval es un objeto archivado. Para obtener acceso al objeto, primero debe iniciar una solicitud de restauración, que restaurará una copia del objeto archivado. En la solicitud, ha de especificar el número de días durante los que quiera que exista la copia restaurada. Para obtener más información acerca del archivado de objetos, consulte Administración del ciclo de vida del almacenamiento.

Propiedad de los buckets y objetos de Amazon S3

Los buckets y los objetos son recursos de Amazon S3. De forma predeterminada, solo el propietario de los recursos puede obtener acceso a ellos. El propietario del recurso es la Cuenta de AWS que lo crea. Por ejemplo:

  • La Cuenta de AWS que se usa para crear buckets y cargar objetos es la propietaria de dichos recursos.

  • Si carga un objeto utilizando credenciales de usuario o rol de AWS Identity and Access Management (IAM), la Cuenta de AWS a la que pertenece el usuario o el rol es el propietario del objeto.

  • Un propietario del bucket puede conceder permisos de una cuenta a otra Cuenta de AWS (o a usuarios de otra cuenta) para cargar objetos. En este caso, la Cuenta de AWS que carga los objetos es la propietaria. El propietario del bucket no tiene permisos sobre los objetos que son propiedad de otras cuentas, con las siguientes excepciones:

    • El propietario del bucket es quien paga las facturas. El propietario del bucket puede denegar el acceso a cualquier objeto, o eliminar cualquier objeto del bucket, independientemente de quién sea el propietario.

    • El propietario del bucket puede archivar los objetos o restaurar los objetos archivados, independientemente de quién sea el propietario. El archivado se refiere a la clase de almacenamiento empleada para almacenar los objetos. Para obtener más información, consulte Administración del ciclo de vida del almacenamiento.

Autenticación de la propiedad y las solicitudes

Todas las solicitudes a un bucket son autenticadas o no autenticadas. Las solicitudes autenticadas deben incluir un valor de firma que autentique al remitente de la solicitud y no es necesario en el caso de las solicitudes no autenticadas. Para obtener más información acerca de la autenticación de solicitudes, consulte Realizar solicitudes.

El propietario del bucket puede permitir solicitudes no autenticadas. Por ejemplo, se permiten solicitudes PUT Object no autenticadas cuando un bucket tiene una política de bucket pública o cuando una ACL de bucket concede acceso WRITE o FULL_CONTROL específicamente al grupo All Users (Todos los usuarios) o al usuario anónimo. Para obtener más información acerca de las políticas de bucket públicas y las listas de control de acceso (ACL) públicas, consulte Qué significa "pública".

Todas las solicitudes no autenticadas las realiza el usuario anónimo. En las ACL, este usuario se representa mediante el ID de usuario canónico específico65a011a29cdf8ec533ec3d1ccaae921c. Si se carga un objeto en un bucket mediante una solicitud no autenticada, el usuario anónimo es el propietario del objeto. La ACL del objeto predeterminado concede acceso FULL_CONTROL al usuario anónimo como propietario del objeto. Por lo tanto, Amazon S3 permite solicitudes no autenticadas para recuperar el objeto o modificar su ACL.

Para impedir que el usuario anónimo modifique objetos, le recomendamos que no implemente políticas de bucket que permitan escrituras públicas anónimas en su bucket o que utilicen ACL que permitan al usuario anónimo acceso de escritura a su bucket. Para imponer este comportamiento recomendado, utilice Block Public Access de Amazon S3.

Para obtener más información acerca del bloqueo del acceso público, consulte Bloquear el acceso público a su almacenamiento de Amazon S3. Para obtener más información acerca de las ACL, consulte Información general de las Listas de control de acceso (ACL).

importante

Recomendamos que no utilice las credenciales del usuario raíz de la Cuenta de AWS para realizar solicitudes autenticadas. En su lugar, cree un rol de IAM y concédale derechos de acceso completos. Los usuarios con este rol se denominan usuarios administradores. Puede utilizar las credenciales asignadas al rol de administrador, en lugar de las credenciales de usuario raíz de la Cuenta de AWS, para interactuar con AWS y realizar tareas, como crear un bucket, crear usuarios y conceder permisos. Para obtener más información, consulte Credenciales de usuario raíz de Cuenta de AWS y credenciales de usuario de IAM en la Referencia general de AWS y las Prácticas recomendadas de seguridad en IAM en la Guía del usuario de IAM.

Operaciones de recursos

Amazon S3 proporciona un conjunto de operaciones para trabajar con los recursos de Amazon S3. Para obtener una lista de las acciones disponibles, consulte Actions defined by Amazon S3 en la Referencia de autorizaciones de servicio.

Administración del acceso a los recursos

La administración de accesos se refiere a la concesión a otros (usuarios y Cuentas de AWS) del permiso para realizar operaciones en los recursos mediante la escritura de una política de acceso. Por ejemplo, puede conceder un permiso PUT Object a un usuario de una Cuenta de AWS de modo que el usuario pueda cargar objetos en su bucket. Además de conceder permisos a usuarios y cuentas individuales, puede conceder permisos a cualquier persona (denominado también acceso anónimo) o a todos los usuarios autenticados (usuarios con credenciales de AWS). Por ejemplo, si configura el bucket como sitio web, puede que quiera hacer que los objetos sean públicos, concediendo el permiso GET Object a cualquiera.

Opciones de la política de acceso

La política de acceso describe quién tiene acceso a qué. Puede asociar una política de acceso con un recurso (bucket y objeto) o un usuario. Del mismo modo, puede clasificar las políticas de acceso de Amazon S3 disponibles de las siguientes maneras:

  • Políticas basadas en recursos: las políticas de bucket y las listas de control de acceso (ACL) se basan en recursos porque las asocia a sus recursos de Amazon S3.

    
							Diagrama en que se muestran los recursos de Cuenta de AWS, incluidos un bucket de S3 con una ACL de bucket y una política de bucket, y objetos de S3 con ACL de objetos.
    • ACL: cada bucket y cada objeto tiene una ACL asociada. Una ACL es una lista de concesiones en la que se identifica el beneficiario y el permiso concedido. Puede utilizar las ACL para conceder permisos de lectura/escritura básicos a otras Cuentas de AWS. Las ACL usan un esquema XML específico de Amazon S3.

      A continuación se muestra una ACL de bucket de ejemplo. La concesión en la ACL muestra al propietario del bucket con permisos de control pleno.

      <?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>owner-display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

      Tanto las ACL de bucket como de objeto usan el mismo esquema XML.

    • Política de bucket: para su bucket, puede agregar una política de bucket con la que concederá a otras Cuentas de AWS o usuarios de IAM permisos para el bucket y los objetos que contiene. Los permisos de objetos solo se aplican a aquellos objetos que cree el propietario del bucket. Las políticas de bucket complementan y, en muchos casos, sustituyen a las políticas de acceso basadas en ACL.

      A continuación se muestra un ejemplo de política de bucket. Debe expresar las políticas de bucket (y las de usuarios) con un archivo JSON. La política concede permisos de lectura anónimos sobre todos los objetos de un bucket. La política de bucket tiene una instrucción, que permite la acción s3:GetObject (permiso de lectura) en objetos que estén en un bucket llamado examplebucket.  Si especifica el principal con un signo de comodín (*), la política permite el acceso anónimo, aunque debe utilizarse con cuidado. Por ejemplo, la siguiente política de bucket haría que los objetos fueran accesibles públicamente.

      { "Version":"2012-10-17", "Statement": [ { "Sid":"GrantAnonymousReadPermissions", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::awsexamplebucket1/*"] } ] }
  • Políticas de usuario: puede usar IAM para administrar el acceso a sus recursos de Amazon S3. Puede crear usuarios de IAM, grupos y roles en la cuenta y adjuntarles políticas de acceso, en las que les concederá acceso a recursos de AWS, incluido Amazon S3.

    
							Diagrama en que se muestra el administrador de Cuenta de AWS y los demás usuarios con políticas de usuario adjuntas.

    Para obtener más información acerca del uso de (IAM), consulte AWS Identity and Access Management (IAM).

    A continuación se muestra un ejemplo de una política de usuario. No puede conceder permisos anónimos en una política de usuario de IAM, ya que la política está asociada a un usuario. La política de ejemplo permite al usuario asociado y vinculado realizar seis acciones de Amazon S3 diferentes en un bucket y los objetos que contiene. Puede adjuntar esta política a un usuario, grupo o rol de IAM específicos.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssignUserActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*", "arn:aws:s3:::awsexamplebucket1" ] }, { "Sid": "ExampleStatement2", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }

Cuando Amazon S3 recibe una solicitud, debe evaluar todas las políticas de acceso para determinar si debe autorizar o denegar la solicitud. Para obtener más información sobre evalúa estas políticas Amazon S3, consulte Cómo autoriza Amazon S3 una solicitud.

Analizador de acceso de IAM para S3

En la consola de Amazon S3, puede utilizar Analizador de acceso de IAM para S3 para revisar todos los buckets que tienen listas de control de acceso (ACL), políticas de bucket o políticas de puntos de acceso que otorguen acceso público o compartido. Analizador de acceso de IAM para S3 le avisa de los buckets que están configurados para permitir el acceso a cualquier usuario de Internet u otras Cuentas de AWS, incluidas aquellas Cuentas de AWS ajenas a la organización. Para cada bucket público o compartido, recibirá resultados que le informarán del origen y el nivel de acceso público o compartido.

En Analizador de acceso de IAM para S3, puede bloquear todo el acceso público a un bucket con un solo clic. Le recomendamos que bloquee todo el acceso a sus buckets a menos que necesite acceso público para admitir un caso de uso específico. Antes de bloquear todo el acceso público, asegúrese de que las aplicaciones seguirán funcionando correctamente sin ese acceso público. Para obtener más información, consulte Bloquear el acceso público a su almacenamiento de Amazon S3.

También puede examinar a fondo las configuraciones de permisos de bucket para configurar niveles pormenorizados de acceso. Para casos de uso específicos y verificados que requieren acceso público o compartido, puede reconocer y registrar su intención de que el bucket continúe siendo público o compartido archivando los resultados del bucket. Puede volver a visitar y modificar estas configuraciones de bucket en cualquier momento. También puede descargar sus resultados en un informe CSV con fines de auditoría.

Analizador de acceso de IAM para S3 está disponible sin coste adicional en la consola de Amazon S3. Analizador de acceso de IAM para S3 cuenta con la tecnología de Analizador de acceso de AWS Identity and Access Management (IAM). Para utilizar Analizador de acceso de IAM para S3 en la consola de Amazon S3, debe ir a la consola de IAM y crear un analizador de nivel de cuenta en Analizador de acceso de IAM por región.

Para obtener más información acerca de Analizador de acceso de IAM para S3, consulte Revisión del acceso al bucket mediante Analizador de acceso de IAM para S3.

¿Qué método de control de acceso debo usar?

Con las opciones disponibles para escribir una política de acceso, se plantean las siguientes preguntas:

  • ¿Cuándo debería usar cada uno de los métodos de control de acceso? Por ejemplo, para conceder permisos para un bucket, ¿debo usar una política de buckets o una ACL de bucket?

    Soy el propietario del bucket y de los objetos que contiene. ¿Debo usar una política de acceso basada en recursos o una política basada en identidad de IAM?

    Si uso una política de acceso basada en recursos, ¿debo usar una política de bucket o una ACL de objeto para administrar los permisos del objeto?

  • Soy el propietario de un bucket, pero no de todos los objetos que contiene. ¿Cómo se administran los permisos de acceso para los objetos que son propiedad de otro?

  • Si concedo acceso mediante el uso de una combinación de estas opciones de políticas de acceso, ¿cómo determina Amazon S3 si un usuario tiene permiso para realizar una operación solicitada?

En las siguientes secciones se explican estas alternativas para el control de acceso, cómo Amazon S3 evalúa los mecanismos de control de acceso y cuándo utilizar cada uno de los métodos de control de acceso. También ofrecen tutoriales de ejemplo.