Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
¿Cómo puedo proporcionar acceso entre cuentas a los objetos que se encuentran en los buckets de Amazon S3?
Quiero conceder a otra cuenta de AWS acceso a un objeto que se encuentra en un bucket de Amazon Simple Storage Service (Amazon S3).
Descripción corta
Como administrador de cuentas, puedes conceder a los usuarios de otra cuenta acceso entre cuentas a los objetos que poseas en tu cuenta.
Puedes conceder permisos para recursos de S3 específicos que no requieren acceso administrativo completo.
Utiliza uno de los métodos siguientes para conceder acceso entre cuentas a los objetos:
- Políticas de AWS Identity and Access Management (IAM) y políticas de bucket basadas en recursos para el acceso únicamente programático a los objetos de bucket de S3.
- Políticas de IAM y listas de control de acceso (ACL) basadas en recursos para el acceso únicamente mediante programación a los objetos del bucket de S3.
Nota: Al activar la configuración impuesta por el propietario del bucket, Amazon S3 desactiva todas las ACL de bucket y objeto. Por lo tanto, no puedes usar las ACL para conceder acceso entre cuentas. De forma predeterminada, la configuración impuesta por el propietario del bucket está activada para todos los buckets recién creados. Para administrar el acceso entre cuentas, también se recomienda utilizar políticas de IAM y políticas de bucket en lugar de las ACL. Para obtener más información, consulta Controlar la propiedad de los objetos y deshabilitar las ACL de tu bucket. - Roles de IAM entre cuentas para el acceso programático y de consola a los objetos del bucket de S3.
Si el solicitante es una entidad principal de rol de IAM, la cuenta propietaria de la entidad principal debe utilizar una política de IAM para conceder los permisos de bucket de S3. Según tu caso práctico, el propietario del bucket también debe usar una política de bucket o una ACL para conceder permisos. Una vez otorgado el acceso, el acceso programático a los buckets entre cuentas es el mismo que el acceso a los buckets de cuentas.
Para el acceso entre cuentas con puntos de acceso de Amazon S3 o AWS Key Management Service (AWS KMS), se requiere una configuración adicional. Para obtener más información, consulta ¿Por qué los usuarios con varias cuentas reciben errores de acceso denegado cuando intentan acceder a los objetos de S3 que he cifrado con una clave de AWS KMS administrada por el cliente?
En el caso de conjuntos de datos de gran tamaño a los que debes acceder como objetos entre cuentas, se recomienda utilizar los puntos de acceso de S3. Para obtener más información, consulta Simplifica y escala la administración del acceso a conjuntos de datos compartidos con puntos de acceso de Amazon S3 entre cuentas.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
En los procedimientos siguientes, la cuenta A es tu cuenta y la cuenta B es la cuenta a la que deseas conceder acceso al objeto.
Políticas de IAM y políticas de bucket basadas en recursos
Para administrar el acceso entre cuentas y auditar los permisos del objeto S3, utiliza políticas de bucket basadas en los recursos.
Aplica una política de bucket a nivel de bucket que defina los elementos de entidad principal, recursos y acción. Cuando aplicas una política de bucket a nivel de bucket, puedes definir el acceso a diferentes objetos dentro del bucket. También puedes revisar la política de bucket para ver quién puede acceder a los objetos de un bucket de S3.
Para usar las políticas de bucket para administrar el acceso a los bucket de S3, sigue estos pasos:
-
Crea un bucket de S3 en la cuenta A.
-
Crea un rol o usuario de IAM en la cuenta B.
-
Concede al usuario o rol de IAM de la cuenta B los permisos GetObject y PutObject. Además, concede al usuario o rol de IAM permiso para llamar a PutObjectAcl, el cual otorga el permiso de objeto al propietario del bucket:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::AccountABucketName/*" } ] }Nota: En la política anterior, sustituye los valores de ejemplo por los valores de usuario.
También puedes limitar el acceso a una carpeta de bucket específica que esté en la cuenta A. Para limitar el acceso, define el nombre de la carpeta en el elemento Recurso, como «arn:aws:s3:::AccountABucketName/FolderName/*». Para obtener más información, consulta ¿Cómo puedo conceder a un usuario acceso a una carpeta específica de mi bucket de Amazon S3? También puedes ejecutar el comando de AWS CLI create-policy para crear una política basada en la identidad de IAM. -
Configura la política de bucket de la cuenta A para conceder los permisos GetObject y PutObject al usuario o rol de IAM que creaste en la cuenta B:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB:user/AccountBUserName" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::AccountABucketName/*" ] } ] }También puedes ejecutar el comando put-bucket-policy de AWS CLI para crear una política de bucket de S3.
Para limitar el acceso a un archivo de bucket específico, define el nombre del mismo en el elemento Recurso, como «arn:aws:s3:::AccountABucketName/FolderName/*». Cuando usas el permiso s3:PutObject con una clave de condición, el propietario del bucket tiene el control total sobre los objetos que cargan otras cuentas. La llamada a la API PutObject aplica la ACL con encabezados específicos.
Políticas de IAM y ACL basadas en recursos
También puedes usar las ACL de objetos para administrar los permisos en escenarios específicos.
Las ACL de Amazon S3 permiten a los usuarios definir únicamente los conjuntos de permisos READ, WRITE, READ_ACP, WRITE_ACP y FULL_CONTROL. Solo puedes usar una cuenta o uno de los grupos predefinidos de Amazon S3 como un concesionario de la ACL de Amazon S3. Cuando especificas una dirección de correo electrónico o un identificador de usuario canónico para una cuenta, la ACL se aplica a todas las identidades de la cuenta del concesionario. Por ejemplo, no puedes usar una ACL para restringir el acceso a usuarios o roles de IAM individuales. Tampoco puedes aplicar ACL a diferentes objetos que compartan los mismos prefijos.
Nota: La ACL no admite la condición para la operación de S3 que la ACL autoriza. Por lo tanto, es posible que el propietario del bucket no tenga el control total sobre los objetos que cargó el concesionario de la ACL.
Para usar las ACL de bucket y objeto para administrar el acceso a los bucket de S3, sigue estos pasos:
-
Crea un rol o usuario de IAM en la cuenta B.
-
Otorga al rol o al usuario permisos para realizar las operaciones de Amazon S3 necesarias. Los usuarios que llamen a PutObject y GetObject deben tener los permisos que se enumeran en la sección Políticas basadas en recursos y políticas de IAM.
-
Configura la ACL del bucket para que incluya al menos el permiso WRITE para la cuenta B. El permisoWRITE permite que los roles o usuarios de IAM de la cuenta B carguen objetos a un bucket que pertenezca a la cuenta A:
...<AccessControlPolicy> <Owner> <ID> AccountACanonicalUserID </ID> <DisplayName> AccountADisplayName </DisplayName> </Owner> <AccessControlList> ... <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID> AccountBCanonicalUserID </ID> <DisplayName> AccountBDisplayName </DisplayName> </Grantee> <Permission> WRITE </Permission> </Grant> ... </AccessControlList> </AccessControlPolicy>Nota: Para encontrar tu CanonicalUserID, consulta Cómo encontrar un ID de usuario canónico de una cuenta de AWS.
-
Configura las ACL de objetos para que incluyan al menos el permiso READ para la cuenta B. El permiso READ permite a los roles o usuarios de IAM de la cuenta B descargar objetos de un bucket propiedad de la cuenta A:
...<AccessControlPolicy> <Owner> <ID> AccountACanonicalUserID </ID> <DisplayName> AccountADisplayName </DisplayName> </Owner> <AccessControlList> ... <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID> AccountBCanonicalUserID </ID> <DisplayName> AccountBDisplayName </DisplayName> </Grantee> <Permission> READ </Permission> </Grant> ... </AccessControlList> </AccessControlPolicy>
Los permisos de ACL varían según el recurso, bucket u objeto de S3 al que se aplica una ACL. Para obtener más información, consulta Descripción general de la lista de control de acceso (ACL). Cuando crees tu bucket o cargues un objeto a un bucket existente, configura las ACL de bucket y objeto.
Roles de IAM entre cuentas
No todos los servicios de AWS admiten políticas basadas en recursos. En su lugar, usa roles de IAM entre cuentas para centralizar la administración de permisos al proporcionar acceso entre cuentas a varios servicios. Este método permite el acceso entre cuentas a los objetos que posee o ha cargado otra cuenta o servicio de AWS. Si no usas roles de IAM entre cuentas, debes modificar la ACL del objeto. Para obtener más información, consulta Cómo autoriza Amazon S3 una solicitud de operación de objeto.
Para usar los roles de IAM entre cuentas para administrar el acceso a los buckets de S3, sigue estos pasos:
-
Crea un rol de IAM en la cuenta A.
-
Otorga permisos al rol para realizar las operaciones de S3 necesarias. En la política de confianza del rol, concede permisos a un rol o usuario de la cuenta B para que asuma el rol en la cuenta A:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB:user/AccountBUserName" }, "Action": "sts:AssumeRole" } ] }Nota: Los roles de IAM deben tener una política de confianza que defina las entidades principales que pueden asumir el rol y cuándo los roles pueden asumirlo. Los roles de IAM pueden tener varias políticas de permisos que definen los permisos que puede desempeñar una entidad principal que asuma el rol y los recursos que utiliza.
También puedes ejecutar el comando de AWS CLI create-role para crear un rol con la política de confianza.
La siguiente política de acceso permite a un usuario que ha asumido este rol usar la consola de Amazon S3 para descargar y cargar objetos mediante programación. Si solo se requiere acceso programático, puedes eliminar las dos primeras instrucciones de la política:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:ListAllMyBuckets" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": "arn:aws:s3:::AccountABucketName" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::AccountABucketName/*" } ] }Para obtener más información, consulta ¿Cómo puedo conceder a un usuario acceso a una carpeta específica de mi bucket de Amazon S3? También puedes ejecutar el comando de AWS CLI create-policy para crear una política basada en la identidad de IAM.
-
Concede el permiso a un rol o usuario de IAM de la cuenta B para que asuma el rol de IAM que creaste en la cuenta A. Debes agregar la siguiente política como política de permisos del usuario o rol de IAM:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::AccountA:role/AccountARole" } }También puedes ejecutar el comando de AWS CLI create-policy para crear una política basada en la identidad de IAM.
-
Desde un rol de la cuenta B, asume el rol de la cuenta A para que las identidades de IAM de la cuenta B puedan realizar las operaciones de S3 necesarias.
**Nota:**Cuando asumes un rol de IAM en la cuenta A, Amazon S3 determina la operación en función de la política de acceso. El rol de IAM funciona como una llamada a la API que invoca una identidad de IAM local en la cuenta A. No se requiere una política de bucket ni una ACL para el acceso entre cuentas. Para obtener más información, consulta Acciones políticas para Amazon S3.
Información relacionada
Acciones, recursos y claves de condición para Amazon S3
Ejemplos de políticas de bucket de Amazon S3
- Temas
- Storage
- Etiquetas
- Amazon Simple Storage Service
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 2 meses
- preguntada hace 10 meses
- preguntada hace 2 meses
- preguntada hace 7 meses
OFICIAL DE AWSActualizada hace un año