Ejemplo 1: propietario del bucket que concede permisos de bucket a sus usuarios
importante
Conceder permisos a roles de IAM es preferible a conceder permisos a usuarios individuales. Para obtener más información acerca de cómo conceder permisos a roles de IAM, consulte Descripción de permisos entre cuentas y uso de roles de IAM.
Temas
En este tutorial, una Cuenta de AWS es propietaria de un bucket y la cuenta incluye un usuario de IAM. De forma predeterminada, el usuario no tiene permisos. La cuenta principal debe conceder permisos al usuario para realizar cualquier tarea. El propietario del bucket y la cuenta principal son el mismo. Por tanto, para conceder permisos al usuario en el bucket, la Cuenta de AWS puede utilizar una política de bucket, una política de usuario o ambas. El propietario de la cuenta concederá algunos permisos utilizando una política de bucket y otros permisos mediante una política de usuario.
En los siguientes pasos se resume el tutorial:
-
El administrador de la cuenta crea una política de bucket en la que se concede un conjunto de permisos al usuario.
-
El administrador de la cuenta adjunta una política de usuario al usuario, en la que se conceden permisos adicionales.
-
A continuación, el usuario prueba los permisos concedidos tanto mediante la política de bucket como mediante la política de usuario.
Para este ejemplo, necesitará una Cuenta de AWS. En lugar de usar las credenciales de usuario raíz de la cuenta, creará un usuario administrador (consulte Acerca del uso de un usuario administrador para crear recursos y conceder permisos). Nos referimos a la Cuenta de AWS y al usuario administrador como se muestra en la siguiente tabla.
ID de cuenta | Cuenta denominada | Usuario administrador de la cuenta |
---|---|---|
|
Cuenta A |
AccountAadmin |
nota
El usuario administrador de este ejemplo es AccountAdmin, que hace referencia a la cuenta A y no AccountAdmin.
Todas las tareas de creación de usuarios y concesión de permisos se realizan en la AWS Management Console. Para verificar los permisos, en la explicación se utilizan herramientas de la línea de comandos, AWS Command Line Interface (AWS CLI) y AWS Tools for Windows PowerShell, por lo que no necesita escribir código.
Prepararse para el tutorial
-
Asegúrese de tener una Cuenta de AWS que cuente con un usuario con privilegios de administrador.
-
Si lo necesita, regístrese para obtener una Cuenta de AWS. Nos referiremos a esta cuenta como Cuenta A.
-
Vaya a https://aws.amazon.com/s3
y elija Crear una cuenta de AWS. -
Siga las instrucciones en pantalla.
AWSCuando la cuenta esté activada y lista para usar, lo notificará por email.
-
-
En la Cuenta A, cree un usuario administrador
AccountAadmin
. Con las credenciales de la Cuenta A, inicie sesión en la consola de IAMy realice los siguientes pasos: -
Cree al usuario
AccountAadmin
y tenga en cuenta las credenciales de seguridad del mismo.Para obtener instrucciones, consulte Creación de un usuario de IAM en la Cuenta de AWS en la Guía del usuario de IAM.
-
Conceda privilegios de administrador a AccountAadmin adjuntando una política de usuario que le conceda acceso total.
Para obtener instrucciones, consulte Administración de políticas de IAM en la Guía del usuario de IAM.
-
Tenga en cuenta la URL de inicio de sesión de usuario de IAM para AccountAadmin. Tendrá que usar esta dirección URL al iniciar sesión en la AWS Management Console. Para obtener más información sobre dónde encontrar la URL de inicio de sesión, consulte Iniciar sesión en la AWS Management Console como usuario de IAM en la Guía del usuario de IAM. Tenga en cuenta la URL de cada una de las cuentas.
-
-
-
Configure AWS CLI o AWS Tools for Windows PowerShell. Asegúrese de guardar las credenciales del usuario administrador de la siguiente manera:
-
Si utiliza la AWS CLI, cree un perfil,
AccountAadmin
, en el archivo de configuración. -
Si usa AWS Tools for Windows PowerShell, asegúrese de almacenar las credenciales para la sesión como
AccountAadmin
.
Para obtener instrucciones, consulte Configuración de las herramientas para los tutoriales.
-
Paso 1: Creación de recursos en la cuenta A y concesión de permisos
Con las credenciales del usuario AccountAadmin
en la Cuenta A y la URL especial de inicio de sesión del usuario de IAM, inicie sesión en la AWS Management Console y realice los siguientes pasos:
-
Creación de recursos de un bucket y un usuario de IAM
-
En la consola de Amazon S3, cree un bucket. Tenga en cuenta la Región de AWS en la que creó el bucket. Para obtener instrucciones, consulte Crear un bucket.
-
En la consola de IAM
, haga lo siguiente: -
Cree un usuario llamado Dave.
Para obtener instrucciones paso a paso, consulte Creación de usuarios de IAM (consola) en la Guía del usuario de IAM.
-
Tenga en cuenta las credenciales de
UserDave
. -
Tenga en cuenta el nombre de recurso de Amazon (ARN) para el usuario Dave. En la consola de IAM
, seleccione el usuario y en la pestaña Resumen podrá ver el ARN del usuario.
-
-
-
Concesión de permisos.
Dado que la cuenta propietaria del bucket y la cuenta principal a la que pertenece el usuario coinciden, la Cuenta de AWS puede conceder permisos al usuario mediante una política de bucket, una política de usuario o ambas. En este ejemplo, usará ambas. Si el objeto también es propiedad de la misma cuenta, el propietario del bucket puede conceder permisos de objeto en la política del bucket (o una política de IAM).
-
En la consola de Amazon S3, asocie la siguiente política de bucket a
awsexamplebucket1
.La política tiene dos instrucciones:
-
En la primera instrucción se conceden a Dave los permisos de operación en el bucket
s3:GetBucketLocation
ys3:ListBucket
. -
En la segunda instrucción se concede el permiso
s3:GetObject
. Dado que la Cuenta A también es propietaria del objeto, el administrador de la cuenta puede conceder el permisos3:GetObject
.
En la instrucción
Principal
, el ARN del usuario es lo que identifica a Dave. Para obtener más información sobre los elementos de las políticas, consulte Políticas y permisos en Amazon S3.{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountA-ID
:user/Dave" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1
" ] }, { "Sid": "statement2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID
:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1
/*" ] } ] } -
-
Cree una política en línea para el usuario Dave utilizando la siguiente política. La política concede a Dave el permiso
s3:PutObject
. Tendrá que actualizar la política proporcionando el nombre del bucket.{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionForObjectOperations", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::
awsexamplebucket1
/*" ] } ] }Para obtener instrucciones, consulte Administración de políticas de IAM en la Guía del usuario de IAM. Tenga en cuenta que tendrá que iniciar sesión en la consola con las credenciales de la Cuenta A.
-
Paso 2: Probar los permisos
Compruebe que los permisos funcionan con las credenciales de Dave. Puede utilizar uno de los dos procedimientos siguientes.
Prueba de los permisos mediante la AWS CLI
-
Actualice el archivo de configuración de la AWS CLI agregando el perfil de
UserDaveAccountA
siguiente. Para obtener más información, consulte Configuración de las herramientas para los tutoriales.[profile UserDaveAccountA] aws_access_key_id =
access-key
aws_secret_access_key =secret-access-key
region =us-east-1
-
Compruebe que Dave pueda realizar las operaciones según los permisos concedidos en la política de usuario. Cargue un objeto de muestra con el comando de la AWS CLI
put-object
.El parámetro
--body
en el comando identifica el archivo de origen para cargar. Por ejemplo, si el archivo está en el directorio raíz del disco C: en un equipo Windows, debe especificarc:\HappyFace.jpg
. El parámetro--key
brinda el nombre de clave para el objeto.aws s3api put-object --bucket
awsexamplebucket1
--keyHappyFace.jpg
--bodyHappyFace.jpg
--profile UserDaveAccountAEjecute el siguiente comando de la AWS CLI para obtener el objeto.
aws s3api get-object --bucket awsexamplebucket1 --key
HappyFace.jpg
OutputFile.jpg
--profile UserDaveAccountA
Prueba de los permisos mediante la AWS Tools for Windows PowerShell
-
Almacene las credenciales de Dave como
AccountADave
. A continuación, use estas credenciales paraPUT
yGET
un objeto.set-awscredentials -AccessKey
AccessKeyID
-SecretKeySecretAccessKey
-storeas AccountADave -
Cargue un objeto de muestra con el comando
Write-S3Object
de AWS Tools for Windows PowerShell con las credenciales almacenadas de Dave.Write-S3Object -bucketname
awsexamplebucket1
-keyHappyFace.jpg
-fileHappyFace.jpg
-StoredCredentials AccountADaveDescargue el objeto que cargó en el paso anterior.
Read-S3Object -bucketname
awsexamplebucket1
-keyHappyFace.jpg
-fileOutput.jpg
-StoredCredentials AccountADave