Sesiones interactivas con IAM
En estas secciones, se describen las consideraciones de seguridad para sesiones interactivas de AWS Glue.
Temas
Entidades principales de IAM que se utilizan con sesiones interactivas
Se utilizan dos entidades principales de IAM con sesiones interactivas de AWS Glue.
-
Entidad principal del cliente: la entidad principal del cliente (ya sea un usuario o un rol) autoriza las operaciones de la API para sesiones interactivas de un cliente de AWS Glue configurado con las credenciales basadas en la identidad de la entidad principal. Por ejemplo, esta podría ser un rol de IAM que suele utilizarse para acceder a la consola de AWS Glue. También podría ser un rol que se haya otorgado a un usuario de IAM cuyas credenciales se utilicen para la AWS Command Line Interface, o un cliente de AWS Glue utilizado por el kernel de Jupyter de sesiones interactivas.
-
Runtime role (Rol de tiempo de ejecución): el rol de tiempo de ejecución es un rol de IAM que la entidad principal del cliente pasa a las operaciones de la API de las sesiones interactivas. AWS Glue utiliza este rol para ejecutar instrucciones en la sesión. Por ejemplo, este rol podría ser el que se utiliza para ejecutar trabajos de ETL de AWS Glue.
Para obtener más información, consulte Configuración de un rol de tiempo de ejecución.
Configuración de una entidad principal del cliente
Debe adjuntar una política de identidad a la entidad principal del cliente para permitirle llamar a la API de sesiones interactivas. Este rol debe tener el acceso iam:PassRole
al rol de ejecución que se pasaría a la API de sesiones interactivas, como CreateSession
. Por ejemplo, se puede adjuntar la política administrada AWSGlueConsoleFullAccess a un rol de IAM que permite a los usuarios de la cuenta con la política adjunta acceder a todas las sesiones creadas en la cuenta (como instrucción de tiempo de ejecución o instrucción de cancelación).
Si desea proteger la sesión y convertirla en privada solo para algunos roles de IAM, como aquellos asociados al usuario que creó la sesión, puede utilizar el control de autorización basado en etiquetas denominado TagOnCreate de las sesiones interactivas de AWS Glue. Para obtener más información, consulte Convertir la sesión en privada con TagOnCreate sobre cómo una política administrada de ámbito reducido basada en etiquetas de propietario puede convertir la sesión en privada con TagOnCreate. Para obtener más información sobre las políticas basadas en la identidad, consulte Políticas basadas en la identidad para AWS Glue.
Configuración de un rol de tiempo de ejecución
Se debe transferir un rol de IAM a la operación de la API CreateSession para permitir que AWS Glue asuma y ejecute instrucciones en sesiones interactivas. El rol debe tener los mismos permisos de IAM que los necesarios para ejecutar trabajos típicos de AWS Glue. Por ejemplo, puede crear un rol de servicio mediante la política AWSGlueServiceRole que permita a AWS Glue llamar a los servicios de AWS en su nombre. Si utiliza la consola de AWS Glue, se creará automáticamente un rol de servicio en su nombre o se utilizará uno existente. También puede crear su propio rol de IAM y adjuntar su propia política de IAM para conceder permisos similares.
Si desea proteger la sesión y convertirla en privada solo para el usuario de IAM que creó la sesión, puede utilizar el control de autorización basado en etiquetas denominado TagOnCreate de las sesiones interactivas de AWS Glue. Para obtener más información, consulte Convertir la sesión en privada con TagOnCreate sobre cómo una política administrada de ámbito reducido basada en etiquetas de propietario puede convertir la sesión en privada con TagOnCreate. Para obtener más información sobre políticas basadas en identidad, consulte Políticas basadas en la identidad para Glue AWS. Si va a encargarse de crear el rol de ejecución desde la consola de IAM y desea que el servicio sea privado con la característica TagOnCreate, siga los pasos que se indican a continuación.
-
Cree un rol de IAM con el tipo de rol configurado como
Glue
. -
Adjunte esta política administrada de AWS Glue: AwsGlueSessionUserRestrictedServiceRole
-
Póngale el nombre de la política AwsGlueSessionUserRestrictedServiceRole como prefijo al nombre del rol. Por ejemplo, puede crear un rol con el nombre AwsGlueSessionUserRestrictedServiceRole-myrole y adjuntarle la política administrada de AWS Glue AwsGlueSessionUserRestrictedServiceRole.
-
Adjunte una política de confianza como la siguiente para permitir que AWS Glue asuma el rol:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }
Para un kernel de Jupyter de sesiones interactivas, puede especificar la clave iam_role
en el perfil de la AWS Command Line Interface. Para obtener más información, consulte Configuración de sesiones con ~/.aws/config . Si interactúa con sesiones interactivas mediante un cuaderno de AWS Glue, puede transferir el rol de ejecución en el comando mágico %iam_role
en la primera celda que ejecute.
Convertir la sesión en privada con TagOnCreate
Las sesiones interactivas de AWS Glue son compatibles con el etiquetado y la autorización basada en etiquetas (TBAC) de las sesiones interactivas como recurso con nombre. Además con la TBAC realizada mediante las API TagResource y UntagResource, las sesiones interactivas de AWS Glue son compatibles con la característica TagOnCreate para “etiquetar” una sesión con una etiqueta determinada solo durante la creación de la sesión con la operación CreateSession. Esto también significa que esas etiquetas se eliminarán cuando se ejecute la operación DeleteSession, también conocida como UntagOnDelete.
TagOnCreate ofrece un potente mecanismo de seguridad para convertir la sesión en privada para el creador de la sesión. Por ejemplo, se puede adjuntar una política de IAM con RequestTag “propietario” y un valor ${aws:userId} a una entidad principal de cliente (como un usuario) para permitir la creación de una sesión solo si una etiqueta de “propietario” con un valor coincidente de userId de la persona que llama se proporciona como etiqueta userId en la solicitud de CreateSession. Esta política permite que las sesiones interactivas de AWS Glue puedan crear un recurso de sesión y etiquetar la sesión con la etiqueta userId solo durante la creación de la sesión. Además, se puede limitar el acceso (como ejecutar instrucciones) a la sesión solo al creador (también conocido como etiqueta de propietario con valor ${aws:userId}) de la sesión si se adjunta una política de IAM con ResourceTag “propietario” al rol de ejecución que pasó durante la operación CreateSession.
Para facilitar el uso de la característica TagOnCreate con objeto de convertir una sesión en privada para el creador de la sesión, AWS Glue proporciona políticas administradas y roles de servicio especializados.
Si desea crear una sesión interactiva de AWS Glue mediante una entidad principal AssumeRole de IAM (es decir, mediante las credenciales suministradas asumiendo un rol de IAM) y quiere convertir la sesión en privada para el creador, entonces, utilice políticas similares a AWSGlueSessionUserRestrictedNotebookPolicy y AWSGlueSessionUserRestrictedNotebookServiceRole respectivamente. Estas políticas permiten que AWS Glue utilice ${aws:PrincipalTag} para extraer el valor de la etiqueta de propietario. Para esto es preciso pasar una etiqueta userId con el valor ${aws:userId} como SessionTag en la credencial del rol de asunción. Consulte Etiquetas de sesión de ID. Si utiliza una instancia de Amazon EC2 con un perfil de instancias que suministra la credencial y desea crear una sesión o interactuar con la sesión desde la instancia de Amazon EC2, deberá pasar una etiqueta userId con el valor ${aws:userId} como SessionTag en la credencial del rol de asunción.
Por ejemplo, si va a crear una sesión mediante una credencial de entidad principal AssumeRole de IAM y desea convertir el servicio en privado con la característica TagOnCreate, siga los pasos que se indican a continuación.
-
Cree un rol de tiempo de ejecución usted mismo desde la consola de IAM. Adjunte la política administrada de AWS Glue AwsGlueSessionUserRestrictedNotebookServiceRole, y póngale el nombre de la política AwsGlueSessionUserRestrictedNotebookServiceRole como prefijo al nombre del rol. Por ejemplo, puede crear un rol con el nombre AwsGlueSessionUserRestrictedNotebookServiceRole-myrole y adjuntar la política administrada de AWS Glue AwsGlueSessionUserRestrictedNotebookServiceRole.
-
Adjunte una política de confianza como la que aparece a continuación para permitir que AWS Glue asuma el rol anterior.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }
-
Cree otro rol cuyo nombre lleve el prefijo AwsGlueSessionUserRestrictedNotebookPolicy y adjunte la política administrada de AWS Glue AwsGlueSessionUserRestrictedNotebookPolicy para convertir la sesión en privada. Además de la política administrada, adjunte la siguiente política insertada para permitir iam:PassRole para el rol que ha creado en el paso 1.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/AwsGlueSessionUserRestrictedNotebookServiceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } } ] }
-
Adjunte una política de confianza como la siguiente a la IAM de AWS Glue para asumir el rol.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] }] }
nota
Opcionalmente, puede utilizar un solo rol (por ejemplo, un rol de cuaderno) y adjuntar las dos políticas administradas anteriores, AwsGlueSessionUserRestrictedNotebookServiceRole y AwsGlueSessionUserRestrictedNotebookPolicy. Adjunte también la política insertada adicional para permitir
iam:passrole
del rol a AWS Glue. Y, finalmente, adjunte la política de confianza anterior para permitirsts:AssumeRole
ysts:TagSession
.
AWSGlueSessionUserRestrictedNotebookPolicy
La política AWSGlueSessionUserRestrictedNotebookPolicy proporciona acceso para crear una sesión interactiva de AWS Glue desde un cuaderno solo si se proporciona una clave de etiqueta de “propietario” y un valor que coincida con el ID de usuario de AWS de la entidad principal (usuario o rol). Para más información, consulte Dónde puede utilizar variables de política. Esta política se adjunta a la entidad principal (usuario o rol) que crea cuadernos de sesión interactiva de AWS Glue desde AWS Glue Studio. Esta política también concede suficiente acceso al cuaderno de AWS Glue Studio para interactuar con los recursos de sesión interactiva de AWS Glue Studio que se crean con el valor de etiqueta de “propietario” que coincide con el ID de usuario de AWS de la entidad principal. Esta política deniega el permiso para cambiar o eliminar la etiqueta de “propietario” de un recurso de sesión de AWS Glue después de crear la sesión.
AWSGlueSessionUserRestrictedNotebookServiceRole
AWSGlueSessionUserRestrictedNotebookServiceRole proporciona acceso suficiente al cuaderno de AWS Glue Studio para interactuar con los recursos de sesión interactiva de AWS Glue que se crean con el valor de etiqueta de “propietario” que coincide con el ID de usuario de AWS de la entidad principal (usuario o rol) del creador del cuaderno. Para obtener más información, consulte Dónde puede utilizar variables de política. Esta política de rol de servicio se adjunta al rol que se pasa como comando mágico a un cuaderno o como rol de ejecución a la API CreateSession. Esta política también permite crear una sesión interactiva de AWS Glue desde un cuaderno solo si se proporcionan una clave de etiqueta de “propietario” y un valor que coincide con el ID de usuario de AWS de la entidad principal. Esta política deniega el permiso para cambiar o eliminar la etiqueta de “propietario” de un recurso de sesión de AWS Glue después de crear la sesión. Esta política también incluye permisos para escribir y leer desde buckets de Amazon S3, escribir registros de CloudWatch, y crear y eliminar etiquetas para los recursos de Amazon EC2 que utiliza AWS Glue.
Convertir la sesión en privada con políticas de usuarios
Puede adjuntar la política AWSGlueSessionUserRestrictedPolicy a los roles de IAM adjuntos a cada uno de los usuarios de la cuenta para que solo puedan crear una sesión con una etiqueta de propietario cuyo valor coincida con su propio ${aws:userId}. En lugar de utilizar AWSGlueSessionUserRestrictedNotebookPolicy y AWSGlueSessionUserRestrictedNotebookServiceRole, debe utilizar políticas similares a AWSGlueSessionUserRestrictedPolicy y AWSGlueSessionUserRestrictedServiceRole, respectivamente. Para obtener más información, consulte Uso de políticas basadas en identidad. Esta política reduce el ámbito de acceso a una sesión solo al creador, también conocido como ${aws:userId} del usuario que creó la sesión con la etiqueta de propietario que contiene su propio ${aws:userId}. Si ha creado el rol de ejecución por su cuenta mediante la consola de IAM de acuerdo con los pasos de Configuración de un rol de tiempo de ejecución, además de adjuntar la política administrada AwsGlueSessionUserRestrictedPolicy, adjunte también la siguiente política insertada a cada uno de los usuarios de su cuenta a fin de permitir iam:PassRole
para el rol de ejecución que creó antes.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/AwsGlueSessionUserRestrictedServiceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } }] }
AWSGlueSessionUserRestrictedPolicy
AWSGlueSessionUserRestrictedPolicy proporciona acceso para crear una sesión interactiva de AWS Glue mediante la API CreateSession solo si se proporciona una clave de etiqueta de “propietario” y un valor que coincida con el ID de usuario de AWS. Esta política de identidad se adjunta al usuario que invoca la API CreateSession. Esta política también permite interactuar con los recursos de sesión interactiva de AWS Glue que se crearon con una etiqueta de “propietario” y un valor que coincide con el ID de usuario de AWS. Esta política deniega el permiso para cambiar o eliminar la etiqueta de “propietario” de un recurso de sesión de AWS Glue después de crear la sesión.
AWSGlueSessionUserRestrictedServiceRole
AWSGlueSessionUserRestrictedServiceRole proporciona acceso completo a todos los recursos de AWS Glue, excepto las sesiones, y permite a los usuarios crear y utilizar solo las sesiones interactivas que tengan asociadas. Esta política también incluye otros permisos que necesita AWS Glue para administrar los recursos de Glue en otros servicios de AWS. La política también permite agregar etiquetas a recursos de AWS Glue en otros servicios de AWS.
Consideraciones respecto de la política de IAM
Las sesiones interactivas son recursos de IAM en AWS Glue. Debido a que son recursos de IAM, el acceso a una sesión y la interacción con la misma se rigen por las políticas de IAM. Según las políticas de IAM adjuntadas a una entidad principal del cliente o rol de ejecución configurado por un administrador, una entidad principal del cliente (usuario o rol) podrá crear nuevas sesiones e interactuar con las suyas y con otras.
Si un administrador ha adjuntado una política de IAM, como AWSGlueConsoleFullAccess o AWSGlueServiceRole, que permite el acceso a todos los recursos de AWS Glue en esa cuenta, las entidades principales del cliente podrán colaborar entre sí. Por ejemplo, un usuario podrá interactuar con las sesiones creadas por otros usuarios si las políticas lo permiten.
Si desea configurar una política que se adapte a sus necesidades específicas, consulte la documentación de IAM sobre la configuración de los recursos de una política. Por ejemplo, para aislar las sesiones que pertenecen a un usuario, puede usar la característica TagOnCreate compatible con las sesiones interactivas de AWS Glue. Consulte Convertir la sesión en privada con TagOnCreate .
Las sesiones interactivas permiten limitar la creación de sesiones en función de determinadas condiciones de la VPC. Consulte Políticas que controlan la configuración mediante claves de condición.