¿Cómo puedo conceder a mi instancia de Amazon EC2 acceso a un bucket de Amazon S3 de otra cuenta de AWS?

5 minutos de lectura
0

Quiero usar una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para acceder a mi bucket de Amazon Simple Storage Service (Amazon S3) de otra cuenta. ¿Cómo puedo conceder este acceso sin almacenar las credenciales en la instancia?

Resolución

Nota: Los pasos para conceder el acceso a las instancias a un bucket de Amazon S3 son similares a los de conceder acceso a otros recursos de AWS de otra cuenta.

Siga estos pasos para conceder a una instancia de Amazon EC2 de la Cuenta A acceso a un bucket de otra cuenta (Cuenta B).

Desde la Cuenta B, cree un rol de IAM

1.    Inicie sesión en la consola de administración de AWS con la Cuenta B.

2.    Abra la consola de AWS Identity and Access Management (IAM).

3.    En el panel de navegación, seleccione Roles.

4.    Elija Crear rol.

5.    En Seleccionar el tipo de entidad de confianza, elija Otra cuenta de AWS.

6.    En ID de cuenta, introduzca el ID de la Cuenta A.

7.    Elija Siguiente: Permisos.

8.    Adjunte una política al rol que delegue el acceso a Amazon S3. Por ejemplo, esta política otorga acceso a s3:GetObject a los objetos almacenados en el bucket:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
            ]
        }
    ]
}

Nota: Puede modificar la política de IAM en función de los permisos del bucket y del objeto de Amazon S3 necesarios para su caso de uso.

9.    Elija Siguiente: Agregar etiquetas.

10.    Puede añadir etiquetas opcionales al rol. O bien, puede dejar los campos en blanco y, a continuación, elegir Siguiente: Revisar.

11.    En Nombre del rol, introduzca un nombre del rol.

12.    Elija Crear rol.

Desde la Cuenta B, obtenga el ARN del rol.

1.    En el panel de navegación de la consola de IAM, seleccione Roles.

2.    Elija el rol de IAM que ha creado.

3.    Anote el valor que aparece para ARN del rol.

Desde la Cuenta A, cree otro rol (perfil de instancia) y adjúntelo a la instancia.

1.    Inicie sesión en la consola de administración de AWS con la Cuenta A.

2.    Abra la consola de IAM.

3.    En el panel de navegación, seleccione Roles.

4.    Elija Crear rol.

5.    En Seleccionar el tipo de entidad de confianza, elija Servicio de AWS.

6.    En Elegir el servicio que utilizará este rol, elija EC2.

7.    Elija Siguiente: Permisos.

8.    Elija Siguiente: Etiquetas.

9.    Puede añadir etiquetas opcionales al rol. O bien, puede dejar los campos en blanco y, a continuación, elegir Siguiente: Revisar.

10.    En Nombre del rol, introduzca un nombre del rol.

11.    Elija Crear rol.

12.    En la lista de roles, elija el rol que acaba de crear.

13.    Elija Añadir política insertada y, a continuación, elija la vista JSON.

14.    Introduzca la siguiente política. Sustituya arn:aws:iam::111111111111:role/ROLENAME por el nombre de recurso de Amazon (ARN) del rol de IAM que ha creado en la Cuenta B.

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": "sts:AssumeRole",
		"Resource": "arn:aws:iam::111111111111:role/ROLENAME"
	}]
}

15.    Elija Revisar la política.

16.    En Nombre, introduzca un nombre para la política.

17.    Elija Crear política.

18.    Adjunte el rol de IAM (perfil de instancia) a la instancia de Amazon EC2 que utiliza para acceder al bucket de Amazon S3.

Desde la instancia de Amazon EC2, cree un perfil para el rol en el archivo de configuración de la CLI.

Nota: Si utiliza SSH y Administrador de sesiones para conectarse a las instancias de EC2, debe llevar a cabo estos pasos tanto para ec2-user como para ssm-user.

1.    Conéctese a la instancia de Amazon EC2. Para obtener más información, consulte Conexión con la instancia de Linux o Conectarse a su instancia de Windows.

2.    Después de conectarse a la instancia, compruebe si el directorio ya tiene una carpeta llamada ~/.aws.

Para encontrar la carpeta ~/.aws, ejecute el siguiente comando ls para mostrar el directorio:

ls -l ~/.aws

3.    Si encuentra la carpeta ~/.aws, continúe con el paso siguiente. Si el directorio aún no tiene una carpeta ~/.aws, cree la carpeta ejecutando el comando mkdir:

mkdir ~/.aws/

4.    Dentro de la carpeta ~/.aws, utilice un editor de texto para crear un archivo. Asigne el nombre config al archivo.

5.    En el archivo, introduzca el texto siguiente. Sustituya enterprofilename por el nombre del rol que ha adjuntado a la instancia. A continuación, sustituya arn:aws:iam::111111111111:role/ROLENAME con el ARN del rol que ha creado en la Cuenta B.

[profile enterprofilename]
role_arn = arn:aws:iam::111111111111:role/ROLENAME

credential_source = Ec2InstanceMetadata

6.    Guarde el archivo.

Comprobación de que el perfil de instancia pueda asumir el rol

Para comprobar que el rol de su instancia (perfil de instancia) pueda asumir el rol de la Cuenta B, ejecute el siguiente comando mientras mantiene la conexión a la instancia. Sustituya profilename por el nombre del rol que haya adjuntado a la instancia.

$aws sts get-caller-identity --profile profilename

El comando devuelve una respuesta similar a la siguiente:

"Account": "11111111111",

"UserId": "AROAEXAMPLEID:sessionName",

"Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"

Confirme que el valor de «Arn» coincida con el ARN del rol que ha creado en la Cuenta B.

Comprobación del acceso al bucket de Amazon S3

Para comprobar que la instancia pueda acceder al bucket de Amazon S3, ejecute este comando de lista mientras mantiene la conexión a la instancia. Sustituya profilename por el nombre del rol que haya adjuntado a la instancia.

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename

Si su instancia puede acceder al bucket correctamente, recibirá una respuesta que enumera el contenido del bucket, como esta:

PRE Hello/
2018-08-15 16:16:51 89 index.html

Información relacionada

Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año