Encadenamiento de roles de IAM en Amazon Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Encadenamiento de roles de IAM en Amazon Neptune

importante

La nueva característica multicuenta de carga masiva introducida en la versión 1.2.1.0.R3 del motor, que aprovecha la posibilidad de encadenar roles de IAM, en algunos casos, puede provocar una degradación del rendimiento de la carga masiva. En consecuencia, las actualizaciones de las versiones del motor que admiten esta característica se han suspendido temporalmente hasta que se resuelva el problema.

Cuando asocia un rol a su clúster, este puede asumir dicho rol para obtener acceso a los datos almacenados en Amazon S3. A partir de la versión 1.2.1.0.R3 del motor, si ese rol no tiene acceso a todos los recursos que necesita, puede encadenar uno o más roles adicionales que el clúster puede asumir para acceder a otros recursos. Cada rol de la cadena asume el siguiente rol de la cadena, hasta que su clúster haya asumido el rol al final de la cadena.

Para encadenar roles, debe establecer una relación de confianza entre ellos. Por ejemplo, para encadenar RoleB a RoleA, RoleA debe tener una política de permisos que le permita asumir RoleB y RoleB debe tener una política de confianza que le permita volver a transferir sus permisos a RoleA. Para obtener más información, consulte Uso de roles de IAM.

El primer rol de una cadena debe estar asociado al clúster que está cargando los datos.

El primer rol, y cada rol subsiguiente que asuma el siguiente rol en la cadena, debe tener:

  • Una política que incluye una instrucción específica con el efecto Allow sobre la acción sts:AssumeRole.

  • El nombre de recurso de Amazon (ARN) del siguiente rol de un elemento Resource.

nota

El bucket de Amazon S3 de destino debe estar en la misma AWS región que el clúster.

Acceso entre cuentas mediante roles encadenados

Puede conceder el acceso entre cuentas encadenando un rol o roles que pertenezcan a otra cuenta. Cuando su clúster asuma temporalmente un rol que pertenece a otra cuenta, puede acceder a los recursos de esa cuenta.

Por ejemplo, imagine que la cuenta A desea obtener acceso a los datos de un bucket de Amazon S3 que pertenece a la cuenta B:

  • La cuenta A crea un rol de AWS servicio para Neptune denominado RoleA y lo adjunta a un clúster.

  • La cuenta B crea un rol denominado RoleB que está autorizado para obtener acceso a los datos de un bucket de la cuenta B.

  • La cuenta A asocia una política de permisos a RoleA que le permite asumir RoleB.

  • La cuenta B asocia una política de confianza a RoleB, que le permite transferir sus permisos a RoleA.

  • Para obtener acceso a los datos del bucket de la cuenta B, la cuenta A ejecuta un comando del programa de carga utilizando un parámetro iamRoleArn que encadena RoleA y RoleB. Durante la operación del programa de carga, RoleA asume de forma temporal el RoleB para obtener acceso al bucket de Amazon S3 en la cuenta B.

Diagrama que muestra el acceso entre cuentas mediante roles encadenados

Por ejemplo, RoleA tendría una política de confianza que establece una relación de confianza con Neptune:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

RoleA también tendría una política de permisos que le permitiría asumir el RoleB, que es propiedad de la cuenta B:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::(Account B ID):role/RoleB" } ] }

Por el contrario, RoleB tendría una política de confianza para establecer una relación de confianza conRoleA:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::(Account A ID):role/RoleA" } } ] }

RoleB también necesitaría permiso para acceder a los datos del bucket de Amazon S3 ubicado en la cuenta B.

Creación de un punto AWS Security Token Service final de VPC (STS)

El cargador Neptune requiere un punto final de VPC para encadenar funciones de IAM para AWS STS acceder de forma privada a través de direcciones IP privadas. AWS STS APIs Puede conectarse directamente desde una Amazon VPC a AWS STS través de un punto final de VPC de forma segura y escalable. Cuando utiliza un punto de conexión de VPC de interfaz, ofrece una mejor postura de seguridad, ya que no necesita abrir firewalls de tráfico saliente. También ofrece las demás ventajas del uso de puntos de conexión de Amazon VPC.

Cuando se utiliza un punto final de VPC, el tráfico AWS STS no se transmite por Internet y nunca sale de la red de Amazon. Su VPC está conectada de forma segura AWS STS sin riesgos de disponibilidad ni restricciones de ancho de banda en el tráfico de su red. Para obtener más información, consulte Uso de puntos de conexión de VPC de interfaz en AWS STS.

Para configurar el acceso para AWS Security Token Service (STS)
  1. Inicie sesión en la consola de Amazon VPC AWS Management Console y ábrala en. https://console.aws.amazon.com/vpc/

  2. En el panel de navegación, elija Puntos de conexión.

  3. Elija Crear punto de conexión.

  4. Elija el Nombre del servicio: com.amazonaws.region.sts para el punto de conexión de tipo Interfaz.

  5. Elija la VPC que contiene la instancia y la instancia de base de datos de Neptune. EC2

  6. Seleccione la casilla de verificación situada junto a la subred en la que se encuentra la EC2 instancia. No puede seleccionar varias subredes de la misma zona de disponibilidad.

  7. En Tipo de dirección IP, elija entre las siguientes opciones:

    • IPv4— Asigne IPv4 direcciones a las interfaces de red de sus puntos finales. Esta opción solo se admite si todas las subredes seleccionadas tienen rangos de IPv4 direcciones.

    • IPv6— Asigne IPv6 direcciones a las interfaces de red de sus puntos finales. Esta opción solo se admite si todas las subredes seleccionadas son subredes IPv6 exclusivas.

    • Dualstack: asigne ambas IPv6 direcciones a las interfaces de red IPv4 de sus puntos finales. Esta opción solo se admite si todas las subredes seleccionadas tienen ambos IPv4 rangos de direcciones. IPv6

  8. En Security groups (Grupos de seguridad), seleccione los grupos de seguridad para asociarlas a las interfaces de red del punto de conexión para el punto de conexión de VPC. Debería seleccionar todos los grupos de seguridad que están conectados a la instancia y EC2 la instancia de base de datos de Neptune.

  9. En Política, seleccione Acceso completo para permitir todas las operaciones de todas las entidades principales en todos los recursos del punto de conexión de VPC. De lo contrario, seleccione Personalizar para adjuntar una política de punto de conexión de VPC que controle los permisos que tienen las entidades principales para realizar acciones en los recursos a través del punto de conexión de VPC. Esta opción solo está disponible si el servicio admite las políticas de punto de conexión de VPC. Para obtener más información, consulte Políticas de puntos de conexión.

  10. (Opcional) Para añadir una etiqueta, elija Agregar etiqueta nueva e introduzca la clave y el valor de la etiqueta.

  11. Elija Crear punto de conexión.

Para obtener más información acerca de la creación del punto de conexión, consulte Puntos de conexión de la VPC en la Guía del usuario de Amazon VPC. Tenga en cuenta que el punto de conexión de VPC de Amazon STS es un requisito previo obligatorio para el encadenamiento de roles de IAM.

Ahora que ha concedido el acceso al AWS STS punto final, puede prepararse para cargar los datos. Para obtener más información acerca de los formatos admitidos, consulte Load Data Formats.

Encadenamiento de roles en un comando del programa de carga

Puede especificar el encadenamiento de roles al ejecutar un comando de carga incluyendo una lista de roles separados por comas ARNs en el parámetro. iamRoleArn

Aunque la mayoría de las veces solo necesitará tener dos roles en una cadena, es posible encadenar tres o más. Por ejemplo, este comando del programa de carga encadena tres roles:

curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://(the target bucket name)/(the target date file name)", "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)", "format" : "csv", "region" : "us-east-1" }'