¿Cómo puedo acceder a un bucket en otra cuenta utilizando un punto de acceso de S3 restringido en una VPC?

6 minutos de lectura
0

Tengo una entidad de AWS Identity and Access Management (IAM) y un bucket en diferentes cuentas de AWS. Quiero conceder a la entidad de IAM acceso entre cuentas al bucket utilizando un punto de acceso de Amazon Simple Storage Service (Amazon S3) restringido en una Amazon Virtual Private Cloud (Amazon VPC).

Resolución

Para conceder a un rol o usuario de IAM en una cuenta de AWS (Cuenta A) acceso a un bucket de Amazon S3 en otra cuenta de AWS (Cuenta B) utilizando un punto de acceso de S3 restringido a una VPC de Amazon, haga lo siguiente:

  1. Cree y asigne un punto de acceso de Amazon S3 al bucket de la cuenta B.
  2. Cree un punto de conexión de la puerta de enlace de la VPC de Amazon S3 en la cuenta A.
  3. Asigne el punto de acceso, el bucket y las políticas de IAM.

Cree y adjunte un punto de acceso de Amazon S3 al bucket de la cuenta B

  1. Abra la consola de Amazon S3.
  2. En el panel de navegación, seleccione Access Points (Puntos de acceso).
  3. Seleccione Create access point (Crear punto de acceso).
  4. En Access point name (Nombre del punto de acceso), introduzca un nombre para el punto de acceso. Para obtener más información, consulte Rules for naming Amazon S3 access points (Reglas para asignar nombres a los puntos de acceso de Amazon S3).
  5. En Bucket name (Nombre del bucket), introduzca el nombre del bucket de la cuenta B a la que desea asignar el punto de acceso.
  6. Seleccione Virtual Private Cloud (VPC) (Nube virtual privada [VPC]) como Network Origin (Origen de red).
  7. En VPC ID (ID de VPC), introduzca el ID de VPC de la primera cuenta de AWS (cuenta A).
  8. En Block Public Access settings for this Access Point (Bloquear la configuración de acceso público para este punto de acceso), elija la configuración de bloqueo del acceso público que desea aplicar al punto de acceso. 
    Nota: Actualmente, Amazon S3 no es compatible con el cambio de la configuración de acceso público en bloque de un punto de acceso después de que este se haya creado.
  9. Deje vacía la Access Point policy (Política de puntos de acceso).
  10. Seleccione Create access point (Crear punto de acceso).

Cree un punto de conexión de la puerta de enlace de la VPC de Amazon S3 en la cuenta A

Cree un punto de conexión de la puerta de enlace de la VPC de la puerta de enlace de S3 en la cuenta inicial de AWS (cuenta A) en la misma región que el bucket al que desea conceder acceso entre cuentas.

  1. Abra la consola de Amazon VPC.
  2. En el panel de navegación, seleccioneEndpoints (Puntos de conexión).
  3. Seleccione Create endpoint (Crear punto de conexión).
  4. En Service category (Categoría de servicio), seleccione AWS services (Servicios de AWS).
  5. En Services (Servicios), añada el filtro Type: Gateway (Tipo: Puerta de enlace) y seleccione la misma región utilizada para crear el punto de acceso.
  6. En VPC, seleccione la misma VPC que usó para crear el punto de acceso.
  7. En Route tables (Tabla de enrutamiento), seleccione las tablas de enrutamiento que utilizará el punto de conexión.
  8. Seleccione Full access policy (Política de acceso completo). También puede seleccionar Custom (Personalizada), y asegúrese de que la política permita las acciones de S3 necesarias.

Nota: Los puntos de conexión de puerta de enlace no permiten el acceso desde otras regiones de AWS. A continuación se muestra un ejemplo de política de punto de conexión de VPC que permite todas las acciones de S3 a todos los buckets:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:*"
 }]
}

Asignación de las políticas de punto de acceso, del bucket y de IAM

Para permitir el acceso entre cuentas de la entidad de IAM de la cuenta inicial de AWS (Cuenta A) al bucket de otra cuenta de AWS (Cuenta B) a través del punto de acceso, debe conceder permisos desde el punto de acceso, el bucket y las políticas de IAM. A continuación se muestran las políticas que otorgan los permisos necesarios para cada una de ellas.

Política de punto de acceso:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "DelegateControlToAccessPoint",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
  ]
 }]
}

Nota: Esta política concede al usuario o rol de IAM de la cuenta de AWS de origen (cuenta A) permiso para acceder al punto de acceso de la cuenta de AWS de destino (cuenta B).

Política de bucket:

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccess",
  "Effect": "Allow",
  "Principal": {
   "AWS": [
    "arn:aws:iam::AccountA-ID:user/user1",
    "arn:aws:iam::AccountA-ID:role/role01"
   ]
  },
  "Action": [
   "s3:GetObject",
   "s3:ListBucket",
   "s3:PutObject"
  ],
  "Resource": [
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ],
  "Condition": {
   "StringEquals": {
    "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
   }
  }
 }]
}

Nota: Esta política concede al usuario de IAM de la cuenta AWS de origen (Cuenta A) el permiso para el bucket (Cuenta B) utilizando el punto de acceso.

Política de IAM

{
 "Version": "2012-10-17",
 "Statement": [{
  "Sid": "AllowCrossAccountAccessToBucketAndAP",
  "Effect": "Allow",
  "Action": [
   "s3:ListBucket",
   "s3:PutObject",
   "s3:GetObject"
  ],
  "Resource": [
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point",
   "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*",
   "arn:aws:s3:::my-bucket",
   "arn:aws:s3:::my-bucket/*"
  ]
 }]
}

Nota: Esta política de IAM asignada al rol de IAM de la cuenta AWS de origen (Cuenta A) o al usuario concede permiso al bucket y al punto de acceso de la cuenta AWS de destino (Cuenta B).

Ejemplos de comandos de la CLI de AWS para realizar operaciones de S3 en el bucket utilizando el punto de acceso:

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

Lista:

aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Subida:

aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Descarga:

aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt

Nota: La solicitud debe originarse en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en la VPC y en la misma región que el bucket.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año