Encadenando IAM roles 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.

Encadenando IAM roles en Amazon Neptune

importante

La nueva función multicuenta de carga masiva introducida en la versión 1.2.1.0.R3 del motor, que aprovecha las IAM funciones encadenadas, puede provocar, en algunos casos, que se observe 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. 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 del recurso de Amazon (ARN) del siguiente rol de un Resource elemento.

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.

Crear un punto final AWS Security Token Service () STS VPC

El cargador de Neptune requiere un VPC punto final para AWS STS encadenar IAM funciones para acceder de forma privada a AWS STS APIs través de direcciones IP privadas. Puede conectarse directamente desde Amazon VPC a AWS STS través de un VPC Endpoint de forma segura y escalable. Cuando se utiliza un VPC punto final de interfaz, se mejora la seguridad, ya que no es necesario abrir firewalls para el tráfico saliente. También proporciona las demás ventajas de utilizar los VPC puntos de enlace de Amazon.

Cuando se utiliza un VPC Endpoint, el tráfico AWS STS no se transmite por Internet y nunca sale de la red de Amazon. VPCEstá conectado 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 VPC puntos finales AWS STS de interfaz.

Para configurar el acceso para AWS Security Token Service () STS
  1. Inicia sesión en la VPC consola de Amazon AWS Management Console y ábrela 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 VPCque contenga la instancia y EC2 la instancia de base de datos de Neptune.

  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 IP address type (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 el caso de los grupos de seguridad, seleccione los grupos de seguridad que desee asociar a las interfaces de red del VPC punto final. 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 total para permitir que todos los directores realicen todas las operaciones en todos los recursos del VPC punto final. De lo contrario, seleccione Personalizado para adjuntar una política de VPC punto final que controle los permisos que tienen los directores para realizar acciones en los recursos a través del VPC punto final. Esta opción solo está disponible si el servicio admite políticas de VPC puntos finales. 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. Seleccione Crear punto de conexión.

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

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" }'