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

¡Bienvenido a la nueva Guía del usuario de Amazon S3! La guía del usuario de Amazon S3 combina información e instrucciones de las tres guías retiradas: Guía para desarrolladores de Amazon S3, Guía del usuario de la consola de Amazon S3y Guía de introducción Amazon S3.

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 Administración de acceso con 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 Glacier de S3 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 crea el recurso. Por ejemplo:

  • La cuenta de AWS que se usa para crear buckets y cargar objetos es el propietario 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 la propietaria del objeto.

  • Un propietario del bucket puede conceder permisos entre cuentas 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 el propietario de los mismos. 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 Administración de acceso con ACL.

importante

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

Operaciones de recursos

Amazon S3 proporciona un conjunto de operaciones para trabajar con los recursos de Amazon S3. Para ver la lista de las operaciones disponibles, consulte Acciones definidas por Amazon S3.

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) el 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 cualquiera (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 buckets y las listas de control de acceso (ACL) se basan en recursos porque las asocia a sus recursos de Amazon S3.

    
							Diagrama que muestra recursos de cuenta de AWS, incluido un bucket de S3 con un bucket ACL 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 otorgar 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 su cuenta y adjuntarles políticas de acceso, en las que les concederá acceso a recursos de AWS, incluido Amazon S3.

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

    Para obtener más información sobre 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.

Access Analyzer para S3

En la consola de Amazon S3, puede utilizar Access Analyzer 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. Access Analyzer 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 las cuentas de AWS ajenas a su 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 Access Analyzer 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 nivel de bucket para configurar niveles detallados 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.

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

Para obtener más información acerca de Access Analyzer para S3, consulte Revisión del acceso al bucket mediante Access Analyzer 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 de usuario 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.