

# Tutorial: Configuración del acceso federado para usuarios de Okta a Athena utilizando Lake Formation y JDBC
<a name="security-athena-lake-formation-jdbc-okta-tutorial"></a>

En este tutorial, se muestra cómo configurar Okta, AWS Lake Formation, permisos de AWS Identity and Access Management y el controlador JDBC de Athena para habilitar el uso federado basado en SAML de Athena. Lake Formation proporciona un control de acceso detallado sobre los datos disponibles en Athena para el usuario basado en SAML. Para establecer esta configuración, el tutorial utiliza la consola de desarrollador de Okta, las consolas de AWS IAM y Lake Formation, y la herramienta SQL Workbench/J.
<a name="security-athena-lake-formation-jdbc-okta-tutorial-prerequisites"></a>
**Requisitos previos**  
Este tutorial presupone que ha realizado las siguientes acciones:
+ Crear una cuenta de Amazon Web Services. Para crear una cuenta, visite la [página de inicio de Amazon Web Services](https://aws.amazon.com/).
+ [Configurar una ubicación de resultados de consulta](query-results-specify-location.md) para Athena en Amazon S3.
+ [Registrar una ubicación de bucket de datos de Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) con Lake Formation.
+ Definir una [base de datos](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) y [tablas](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) en [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) que apunten a los datos en Amazon S3.
  + Si todavía no ha definido una tabla, [ejecute un rastreador AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) o [utilice Athena para definir una base de datos y una o más tablas](work-with-data.md) para ver los datos a los que desea obtener acceso.
  + En este tutorial, se utiliza una tabla basada en el [conjunto de datos de viajes de taxi de la ciudad de Nueva York](https://registry.opendata.aws/nyc-tlc-trip-records-pds/) disponible en el [Registro de datos abiertos de AWS](https://registry.opendata.aws/). El tutorial utiliza el nombre de la base de datos `tripdb` y el nombre de la tabla `nyctaxi`.

**Topics**
+ [Paso 1: Crear una cuenta de Okta](#security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account)
+ [Paso 2: Agregar usuarios y grupos a Okta](#security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication)
+ [Paso 3: Configurar una aplicación de Okta para la autenticación SAML](#security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication)
+ [Paso 4: Crear un proveedor de identidad SAML de AWS y un rol de IAM para acceso a Lake Formation](#security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role)
+ [Paso 5: Agregar el rol de IAM y el proveedor de identidad SAML a la aplicación de Okta](#security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider)
+ [Paso 6: Otorgar permisos de usuario y grupo a través de AWS Lake Formation](#security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation)
+ [Paso 7: Verificar el acceso a través del cliente JDBC de Athena](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client)
+ [Conclusión](#security-athena-lake-formation-jdbc-okta-tutorial-conclusion)
+ [Recursos relacionados](#security-athena-lake-formation-jdbc-okta-tutorial-related-resources)

## Paso 1: Crear una cuenta de Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account"></a>

En este tutorial, se utiliza Okta como proveedor de identidad basado en SAML. Si no dispone de una cuenta de Okta, puede crear una gratuita. Es necesaria una cuenta de Okta para poder crear una aplicación de Okta para la autenticación SAML.

**Para crear una cuenta de Okta**

1. Para utilizar Okta, vaya a la [página de registro para desarrolladores de Okta](https://developer.okta.com/signup/) y cree una cuenta de prueba gratuita de Okta. El servicio de edición de desarrollador es gratuito hasta los límites especificados por Okta en [developer.okta.com/pricing](https://developer.okta.com/pricing).

1. Cuando reciba el correo electrónico de activación, active la cuenta. 

   Se le asignará un nombre de dominio de Okta. Guarde el nombre de dominio como referencia. Más adelante, utilizará el nombre de dominio (*<okta-idp-domain>*) en la cadena JDBC que se conecta a Athena.

## Paso 2: Agregar usuarios y grupos a Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication"></a>

En este paso, se utiliza la consola de Okta para realizar las siguientes tareas:
+ Crear dos usuarios de Okta.
+ Cree dos grupos de Okta.
+ Agregue un usuario de Okta a cada grupo de Okta.

**Para agregar usuarios a Okta**

1. Después de activar la cuenta de Okta, inicie sesión como usuario administrativo en el dominio Okta asignado.

1. En el panel de navegación izquierdo, elija **Directory** (Directorio) y, a continuación, elija **People** (Personas).

1. Elija **Add Person** (Agregar persona) para agregar un usuario nuevo que accederá a Athena a través del controlador JDBC.  
![\[Elija Add Person (Agregar persona).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-3.png)

1. En el cuadro de diálogo **Add person** (Agregar persona), ingrese la información requerida.
   + En **First name** (Nombre) y **Last name** (Apellido), ingrese valores. En este tutorial se utiliza *athena-okta-user*.
   + Ingrese un **Username** (Nombre de usuario) y **Primary email** (Correo electrónico principal). En este tutorial se utiliza *athena-okta-user@anycompany.com*.
   + En **Password** (Contraseña), elija **Set by admin** (Definida por administrador) y, a continuación, proporcione una contraseña. En este tutorial se desactiva la opción **User must change password on first login** (El usuario debe cambiar la contraseña en el primer inicio de sesión). Los requisitos de seguridad pueden variar.  
![\[Agregar un usuario a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4.png)

1. Elija **Save and Add Another** (Guardar y agregar otro).

1. Ingrese la información de otro usuario. En este ejemplo, se agrega el usuario de analista empresarial *athena-ba-user@anycompany.com*.  
![\[Agregar un usuario a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4a.png)

1. Seleccione **Save**.

En el siguiente procedimiento, proporcionará acceso a dos grupos de Okta a través del controlador JDBC de Athena al agregar un grupo de “analista empresarial” y un grupo “Desarrollador”.

**Para agregar grupos de Okta**

1. En el panel de navegación de Okta, elija **Directory** (Directorio) y, a continuación, elija **Groups** (Grupos).

1. En la página **Groups** (Grupos), elija **Add Group** (Agregar grupo).  
![\[Seleccione Añadir grupo.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4c.png)

1. En el cuadro de diálogo **Add Group** (Agregar grupo), ingrese la información requerida.
   + En **Name** (Nombre), ingrese *lf-business-analyst*.
   + En **Group Description** (Descripción de grupo), ingrese *Business Analysts* (Analistas de negocio).  
![\[Agregar un grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4d.png)

1. Seleccione **Añadir grupo**.

1. En la página **Groups** (Grupos), vuelva a elegir **Add Group** (Agregar grupo). Esta vez ingresará información para el grupo Desarrollador.

1. Ingrese la información requerida.
   + En **Name** (Nombre), ingrese *lf-developer*.
   + En **Group Description** (Descripción de grupo), ingrese *Developers* (Desarrolladores).

1. Seleccione **Añadir grupo**.

Ahora que tiene dos usuarios y dos grupos, puede agregar un usuario a cada grupo.

**Para agregar usuarios a los grupos**

1. En la página **Groups** (Grupos), elija el grupo **lf-developer** que acaba de crear. Agregará a este grupo uno de los usuarios de Okta que creó como desarrollador.  
![\[Elija lf-developer.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4f.png)

1. Elija **Manage People** (Administrar personas).  
![\[Elija Manage People (Administrar personas).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4g.png)

1. En la lista **Not Members** (No miembros), elija **athena-okta-user**.   
![\[Elija un usuario para agregar a la lista de miembros.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4h.png)

   La entrada para el usuario pasa de la lista de **No miembros** de la izquierda a la lista de **Miembros** de la derecha.   
![\[Usuario de Okta agregado a un grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4i.png)

1. Seleccione **Save**.

1. Elija **Back to Group** (Volver a grupo) o **Directory** (Directorio) y, a continuación, elija **Groups** (Grupos).

1. Elija el grupo **lf-business-analyst**.

1. Elija **Manage People** (Administrar personas).

1. Agregue el usuario **athena-ba-user** a la lista de **Miembros** del grupo **lf-business-analyst** y, a continuación, elija **Save** (Guardar). 

1. Elija **Back to Group** (Volver a grupo) o elija **Directory** (Directorio), **Groups** (Grupos).

   La página **Groups** (Grupos) muestra ahora que cada grupo tiene un usuario de Okta.  
![\[Se agregó un usuario a cada grupo de Okta en la consola de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4j.png)

## Paso 3: Configurar una aplicación de Okta para la autenticación SAML
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication"></a>

En este paso, se utiliza la consola de desarrollador de Okta para realizar las siguientes tareas:
+ Agregar una aplicación SAML para su uso con AWS.
+ Asignar la aplicación al usuario de Okta.
+ Asignar la aplicación a un grupo de Okta.
+ Descargue los metadatos resultantes del proveedor de identidad para su uso posterior con AWS.

**Para agregar una aplicación para autenticación SAML**

1. En el panel de navegación de Okta, elija **Applications** (Aplicaciones), **Applications** (Aplicaciones) para que pueda configurar una aplicación de Okta para la autenticación SAML en Athena.

1. Haga clic en **Browse App Catalog** (Explorar el catálogo de aplicaciones).

1. En el cuadro de búsqueda, escriba **Redshift**.

1. Elija **Amazon Web Services Redshift**. La aplicación de Okta de este tutorial utiliza la integración SAML existente para Amazon Redshift.  
![\[Elija Amazon Web Services Redshift.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-7.png)

1. En la página **Amazon Web Services Redshift**, elija **Add** (Agregar) para crear una aplicación basada en SAML para Amazon Redshift.  
![\[Elija Add (Agregar) para crear una aplicación basada en SAML.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-8.png)

1. En **Application label** (Etiqueta de aplicación), ingrese `Athena-LakeFormation-Okta` y, a continuación, elija **Done** (Listo).  
![\[Ingrese un nombre para la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-9.png)

Ahora que ha creado una aplicación de Okta, puede asignarla a los usuarios y grupos que creó.

**Para asignar la aplicación a usuarios y grupos**

1. En la página **Applications** (Aplicaciones), elija la aplicación **Athena-LakeFormation-Okta**.

1. En la pestaña **Assignments** (Asignaciones), elija **Assign** (Asignar), **Assign to People** (Asignar a personas).  
![\[Elija Assign (Asignar), Assign to People (Asignar a personas).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-10.png)

1. En el cuadro de diálogo **Assign Athena-LakeFormation-Okta to People** (Asignar Athena-LakeFormation-Okta a personas), busque el usuario **athena-okta-user** que creó anteriormente.

1. Elija **Assign** (Asignar) para asignar al usuario a la aplicación.  
![\[Elija Asignar.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-11.png)

1. Elija **Save and Go Back** (Guardar y volver).

1. Seleccione **Listo**.

1. En la pestaña **Assignments** (Asignaciones), para la aplicación **Athena-LakeFormation-Okta**, elija **Assign** (Asignar), **Assign to Groups** (Asignar a grupos). 

1. Para **lf-business-analyst**, elija **Assign** (Asignar) para asignar la aplicación **Athena-LakeFormation-Okta** al grupo **lf-business-analyst** y, a continuación, elija **Done** (Listo).  
![\[Asignación de una aplicación de Okta a un grupo de usuarios de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12b.png)

   El grupo aparece en la lista de grupos de la aplicación.  
![\[La aplicación de Okta se asigna al grupo Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12c.png)

Ahora ya puede descargar los metadatos de la aplicación del proveedor de identidad para utilizarlos con AWS.

**Para descargar los metadatos de la aplicación**

1. Elija la pestaña **Sign On** (Inicio de sesión) de la aplicación de Okta y, a continuación, haga clic con el botón derecho en **Identity Provider metadata** (Metadatos del proveedor de identidad).  
![\[Haga clic con el botón derecho en Identity Provider metadata (Metadatos del proveedor de identidad).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-13.png)

1. Elija **Save Link As** (Guardar enlace como) para guardar los metadatos del proveedor de identidad, que están en formato XML, en un archivo. Dele un nombre que reconozca (por ejemplo, `Athena-LakeFormation-idp-metadata.xml`).  
![\[Guardar los metadatos del proveedor de identidad.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-14.png)

## Paso 4: Crear un proveedor de identidad SAML de AWS y un rol de IAM para acceso a Lake Formation
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role"></a>

En este paso, utiliza la consola de AWS Identity and Access Management (IAM) para realizar las siguientes tareas:
+ Crear un proveedor de identidad para AWS.
+ Crear un rol de IAM para acceso a Lake Formation.
+ Agregar la política administrada AmazonAthenaFullAccess al rol.
+ Agregar una política para Lake Formation y AWS Glue al rol.
+ Agregar una política para los resultados de la consulta de Athena al rol.

**Para crear un proveedor de identidad SAML de AWS**

1. Inicie sesión en la **consola** de la **cuenta de Amazon Web Services** como **administrador de cuenta de Amazon Web Services** y vaya a la consola de **IAM** ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

1. En el panel de navegación, elija **Identity providers** (Proveedores de identidad) y, a continuación, haga clic en **Add provider** (Agregar proveedor).

1. En la pantalla **Configurar proveedor**, ingrese la siguiente información:
   + En **Provider type** (Tipo de proveedor), elija **SAML**.
   + En **Provider name** (Nombre de proveedor), ingrese `AthenaLakeFormationOkta`.
   + En **Metadata document** (Documento de metadatos), utilice la opción **Choose file** (Elegir archivo) para cargar el archivo XML de metadatos del proveedor de identidades (IdP) que descargó.

1. Elija **Add Provider** (Agregar proveedor).

A continuación, cree un rol de IAM para obtener acceso a AWS Lake Formation. Agregue dos políticas insertadas al rol. Una política proporciona permisos para acceder a Lake Formation y a las API de AWS Glue. La otra política proporciona acceso a Athena y a la ubicación de los resultados de consulta de Athena en Amazon S3.

**Para crear un rol de IAM para obtener acceso a AWS Lake Formation**

1. En el panel de navegación de la consola de IAM, elija **Roles** y, a continuación, elija **Create role** (Crear rol).

1. En la página **Crear rol**, siga los siguientes pasos:  
![\[Configuración de un rol de IAM para utilizar SAML 2.0.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-20.png)

   1. En **Select type of trusted entity** (Seleccionar tipo de entidad de confianza), elija **SAML 2.0 Federation** (Federación SAML 2.0).

   1. En **SAML provider** (Proveedor SAML), seleccione **AthenaLakeFormationOkta**.

   1. En **SAML provider** (Proveedor SAML), seleccione la opción **Allow programmatic and Consola de administración de AWS access** (Permitir programación y acceso a ).

   1. Elija **Siguiente: permisos**.

1. En la página **Attach Permissions policies** (Adjuntar políticas de permisos), en **Filter policies** (Filtrar políticas), ingrese **Athena**.

1. Seleccione la política administrada **AmazonAthenaFullAccess** y, a continuación, elija **Siguiente: etiquetas** .  
![\[Adjuntar la política administrada AmazonAthenaFullAccess al rol de IAM.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-21.png)

1. En la página **Add tags (Añadir etiquetas)**, elija **Next: Review (Siguiente: Revisión)**.

1. En la página **Review** (Revisar), en **Role name** (Nombre del rol), ingrese un nombre para el rol (por ejemplo, *Athena-LakeFormation-OktaRole*) y luego elija **Create role** (Crear rol).  
![\[Ingrese un nombre para el rol de Rol de IAM de IAM.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-22.png)

A continuación, agregue políticas insertadas que permitan el acceso a Lake Formation, API de AWS Glue y resultados de consultas de Athena en Amazon S3. 

Siempre que utilice políticas de IAM, asegúrese de seguir las prácticas recomendadas de IAM. Para obtener más información, consulte la sección [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

**Para agregar una política insertada al rol de Lake Formation y AWS Glue**

1. En la lista de roles de la consola de IAM, elija el recién creado `Athena-LakeFormation-OktaRole`.

1. En la página **Summary** (Resumen) del rol, en la pestaña **Permissions** (Permisos), elija **Add inline política** (Agregar política insertada).

1. En la página **Crear política**, elija **JSON**.

1. Agregue una política insertada como la siguiente que proporcione acceso a Lake Formation y a las API de AWS Glue.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "lakeformation:GetDataAccess",
               "glue:GetTable",
               "glue:GetTables",
               "glue:GetDatabase",
               "glue:GetDatabases",
               "glue:CreateDatabase",
               "glue:GetUserDefinedFunction",
               "glue:GetUserDefinedFunctions"
           ],
           "Resource": "*"
       }
   }
   ```

------

1. Elija **Revisar política**.

1. En **Name** (Nombre), ingrese un nombre para la política (por ejemplo, **LakeFormationGlueInlinePolicy**).

1. Elija **Crear política**.

**Para agregar una política insertada al rol para la ubicación de los resultados de consulta de Athena**

1. En la página **Summary** (Resumen) del rol `Athena-LakeFormation-OktaRole`, en la pestaña **Permissions** (Permisos), elija **Add inline policy** (Agregar política insertada).

1. En la página **Crear política**, elija **JSON**.

1. Agregue una política insertada como la siguiente que permita el acceso del rol a la ubicación de los resultados de consulta de Athena. Reemplace los marcadores de posición *<athena-query-results-bucket>* en el ejemplo con el nombre del bucket de Amazon S3.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AthenaQueryResultsPermissionsForS3",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::<athena-query-results-bucket>",
                   "arn:aws:s3:::<athena-query-results-bucket>/*"
               ]
           }
       ]
   }
   ```

------

1. Elija **Revisar política**.

1. En **Name** (Nombre), ingrese un nombre para la política (por ejemplo, **AthenaQueryResultsInlinePolicy**).

1. Elija **Crear política**.

A continuación, copie el ARN del rol de acceso a Lake Formation y el ARN del proveedor SAML creado. Estos son necesarios al configurar la aplicación SAML de Okta en la siguiente sección del tutorial.

**Para copiar el ARN de rol y el ARN del proveedor de identidad SAML**

1. En la consola de IAM, en la página **Summary** (Resumen) del rol `Athena-LakeFormation-OktaRole`, elija el icono **Copy to clipboard** (Copiar al portapapeles) que aparece junto a **Role ARN** (ARN de rol). El ARN tiene el siguiente formato:

   ```
   arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```

1. Guarde el ARN completo de forma segura para su referencia posterior.

1. En el panel de navegación de la consola de IAM, elija **Identity providers** (Proveedores de identidad).

1. Elija el proveedor **AthenaLakeFormationOkta**.

1. En la página **Summary** (Resumen), elija el icono **Copy to clipboard** (Copiar al portapapeles) que aparece junto a **Provider ARN** (ARN del proveedor). El ARN debería tener el siguiente aspecto:

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta
   ```

1. Guarde el ARN completo de forma segura para su referencia posterior.

## Paso 5: Agregar el rol de IAM y el proveedor de identidad SAML a la aplicación de Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider"></a>

En este paso, vuelve a la consola de desarrollador de Okta para realizar las siguientes tareas:
+ Agregar atributos URL de usuario y grupo de Lake Formation a la aplicación de Okta.
+ Agregar el ARN para el proveedor de identidad y el ARN para el rol de IAM a la aplicación de Okta.
+ Copiar el ID de la aplicación de Okta. El ID de la aplicación de Okta es necesario en el perfil del JDBC que se conecta a Athena.

**Para agregar atributos URL de usuario y grupo de Lake Formation a la aplicación de Okta**

1. Inicie sesión en la consola de desarrollador de Okta.

1. Elija la pestaña **Applications** (Aplicaciones), y, a continuación, elija la aplicación `Athena-LakeFormation-Okta`.

1. Elija la pestaña **Sign On** (Inicio de sesión) para la aplicación y, a continuación, elija **Edit** (Editar).  
![\[Edite la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-24.png)

1. Elija **Attributes (optional)** (Atributos [opcional]) para expandirla.  
![\[Agregar un atributo URL de Lake Formation de usuario a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25.png)

1. En **Instrucciones de atributos (opcional)**, agregue el siguiente atributo:
   + En **Nombre**, escriba **https://lakeformation.amazon.com/SAML/Attributes/Username**.
   + En **Value** (Valor), ingrese **user.login**.

1. En **Instrucciones de atributo de grupo (opcional)**, agregue el siguiente atributo:
   + En **Nombre**, escriba **https://lakeformation.amazon.com/SAML/Attributes/Groups**.
   + En **Name format** (Formato de nombre), ingrese **Basic**.
   + En **Filter** (Filtro), elija **Matches regex** (Coincide con la expresión regular) y, a continuación, ingrese **.\$1** en el cuadro de filtro.  
![\[Agregar un atributo URL de Lake Formation de grupo a la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25a.png)

1. Desplácese hacia abajo hasta la sección **Advanced Sign-On Settings** (Configuración avanzada de inicio de sesión), donde agregará los ARN del proveedor de identidad y el rol de IAM a la aplicación de Okta.

**Para agregar los ARN del proveedor de identidad y el rol de IAM a la aplicación de Okta**

1. En **Idp ARN and Role ARN** (ARN de Idp y ARN de rol), ingrese el ARN de proveedor de identidad de AWS y el ARN de rol como valores separados por comas en el formato *<saml-arn>*, *<role-arn>*. La cadena combinada debe ser similar a la siguiente:

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta,arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```  
![\[Ingresar el ARN del proveedor de identidad y el ARN del rol de IAM en la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-26.png)

1. Seleccione **Save**.

A continuación, copie el ID de la aplicación de Okta. Lo necesitará más adelante para la cadena JDBC que se conecta a Athena.

**Para buscar y copiar el ID de la aplicación de Okta**

1. Elija la pestaña **General** de la aplicación de Okta.  
![\[Elija la pestaña General de la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-27.png)

1. Desplácese hacia abajo hasta la sección **App Embed Link** (Enlace insertado de la aplicación).

1. En **Embed Link** (Insertar enlace), copie y guarde de forma segura la parte del ID de la aplicación de Okta de la URL. El ID de la aplicación de Okta es la parte de la URL después de `amazon_aws_redshift/` pero antes de la siguiente barra diagonal. Por ejemplo, si la dirección URL contiene `amazon_aws_redshift/aaa/bbb`, el ID de la aplicación es `aaa`.   
![\[Copie el ID de la aplicación de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-28.png)

**nota**  
El enlace de inserción no se puede utilizar para registrarse directamente en la consola de Athena para ver las bases de datos. Los permisos de Lake Formation para usuarios y grupos de SAML solo se reconocen cuando se utiliza el controlador JDBC u ODBC para enviar consultas a Athena. Para ver las bases de datos, puede utilizar la herramienta SQL Workbench/J, que utiliza el controlador JDBC para conectarse a Athena. La herramienta SQL Workbench/J se aborda en [Paso 7: Verificar el acceso a través del cliente JDBC de Athena](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client).

## Paso 6: Otorgar permisos de usuario y grupo a través de AWS Lake Formation
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation"></a>

En este paso, se utiliza la consola de Lake Formation para conceder permisos en una tabla al usuario y grupo SAML. Puede realizar las siguientes tareas:
+ Especificar el ARN del usuario SAML de Okta y los permisos de usuario asociados en la tabla.
+ Especificar el ARN del grupo SAML de Okta y los permisos de usuario asociados en la tabla.
+ Verificar los permisos que concedió.

**Para conceder permisos en Lake Formation para el usuario de Okta**

1. Inicie sesión como administrador del lago de datos en la Consola de administración de AWS. 

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En el panel de navegación, elija **Tables** (Tablas) y, a continuación, seleccione la tabla a la que desea conceder permisos. En este tutorial se utiliza la tabla `nyctaxi` de la base de datos `tripdb`.  
![\[Elija la tabla a la que desea conceder permisos.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-29.png)

1. En **Actions** (Acciones), elija **Grant** (Conceder).  
![\[Elija Grant (Conceder).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-30.png)

1. En el cuadro de diálogo **Conceder permisos**, ingrese la siguiente información:

   1. En **Usuarios y grupos de SAML y Amazon Quick**, ingrese el ARN de usuario SAML de Okta con el siguiente formato:

      ```
      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:user/<athena-okta-user>@<anycompany.com>       
      ```

   1. En **Columns** (Columnas), en **Choose filter type** (Elegir tipo de filtro), elija **Include columns** (Incluir columnas) o **Exclude columns** (Excluir columnas).

   1. Utilice el menú desplegable **Choose one or more columns** (Elegir una o varias columnas) debajo del filtro para especificar las columnas que desea incluir o excluir del usuario o para él.

   1. En **Table permissions** (Permisos de tabla), elija **Select**. En este tutorial solo se concede el permiso `SELECT`. Los requisitos pueden variar.  
![\[Otorgar permisos de nivel de tabla y columna a un usuario de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31.png)

1. Elija **Grant** (Conceder).

Ahora realice pasos similares para el grupo de Okta.

**Para conceder permisos en Lake Formation para el grupo de Okta**

1. En la página **Tables** (Tablas) de la consola de Lake Formation, asegúrese de que la tabla **nyctaxi** sigue seleccionada.

1. En **Actions** (Acciones), elija **Grant** (Conceder).

1. En el cuadro de diálogo **Grant permissions** (Conceder permisos), ingrese la siguiente información:

   1. En **Usuarios y grupos de SAML y Amazon Quick**, ingrese el ARN de grupo SAML de Okta con el siguiente formato:

      ```
      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:group/lf-business-analyst
      ```

   1. En **Columns** (Columnas), **Choose filter type** (Elegir tipo de filtro), elija **Include Columns** (Incluir columnas).

   1. En **Choose one or more columns** (Elegir una o varias columnas), elija las tres primeras columnas de la tabla.

   1. En **Table permissions** (Permisos de tabla), elija los permisos de acceso específicos que desea conceder. En este tutorial solo se concede el permiso `SELECT`. Los requisitos pueden variar.  
![\[Otorgar permisos de tabla a un grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31b.png)

1. Elija **Grant** (Conceder).

1. Para verificar los permisos que concedió, elija **Actions** (Acciones), **View permissions** (Ver permisos).  
![\[Elija View permissions (Ver permisos) para verificar los permisos que concedió.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-32.png)

   En la página **Permisos de datos** de la tabla `nyctaxi` se muestran los permisos para **athena-okta-user** y el grupo **lf-business-analyst**.  
![\[Visualización de los permisos que se concedieron al usuario y grupo de Okta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-33.png)

## Paso 7: Verificar el acceso a través del cliente JDBC de Athena
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client"></a>

Ahora puede utilizar un cliente JDBC para realizar una conexión de prueba a Athena como usuario SAML de Okta. 

En esta sección, realiza las siguientes tareas:
+ Preparar el cliente de prueba: descargue el controlador JDBC de Athena, instale SQL Workbench y agregue el controlador a Workbench. En este tutorial, se utiliza SQL Workbench para acceder a Athena a través de la autenticación de Okta y verificar los permisos de Lake Formation.
+ En SQL Workbench:
  + Cree una conexión para el usuario Athena Okta.
  + Ejecute consultas de prueba como usuario Athena Okta.
  + Cree y pruebe una conexión para el usuario de analista empresarial.
+ En la consola de Okta, agregue el usuario de analista empresarial al grupo de desarrolladores.
+ En la consola Lake Formation, configure los permisos de tabla para el grupo de desarrolladores.
+ En SQL Workbench, ejecute consultas de prueba como usuario de analista empresarial y verifique cómo afecta el cambio en los permisos a los resultados.

**Para preparar el cliente de prueba**

1. Descargue y extraiga el controlador JDBC de Athena compatible con Lake Formation (versión 2.0.14 o posterior) de [Conexión a Amazon Athena con JDBC](connect-with-jdbc.md).

1. Descargue e instale la herramienta de consulta SQL [SQL Workbench/J](https://www.sql-workbench.eu/index.html), disponible con una licencia modificada de Apache 2.0.

1. En SQL Workbench, elija **File** (Archivo) y, a continuación, elija **Manage Drivers** (Administrar controladores).  
![\[Seleccione Manage Drivers (Administrar controladores).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-1.png)

1. En el cuadro de diálogo **Administrar controladores**, siga los siguientes pasos:

   1. Elija el icono de nuevo controlador.

   1. En **Nombre**, escriba **Athena**.

   1. En **Library** (Biblioteca), busque y elija el archivo `.jar` del controlador Simba JDBC de Athena que acaba de descargar.

   1. Seleccione **Aceptar**.  
![\[Agregar el controlador JDBC de Athena a SQL Workbench.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-2.png)

Ahora puede crear y probar una conexión para el usuario de Athena Okta.

**Para crear una conexión para el usuario de Okta**

1. Elija **File** (Archivo), **Connect window** (Conectar ventana).  
![\[Elija Connect window (Conectar ventana).\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-3.png)

1. En el cuadro de diálogo **Perfil de conexión**, cree una conexión al ingresar la siguiente información:
   + En el cuadro de nombre, ingrese **Athena\$1Okta\$1User\$1Connection**.
   + En **Driver** (Controlador), elija el controlador Simba JDBC de Athena.
   + En **URL**, realice una de las siguientes operaciones:
     + Para utilizar una URL de conexión, ingrese una cadena de conexión de una sola línea. En el siguiente ejemplo se agregan saltos de línea por motivos de legibilidad.

       ```
       jdbc:awsathena://AwsRegion=region-id;
       S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
       AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider;
       user=athena-okta-user@anycompany.com;
       password=password;
       idp_host=okta-idp-domain;
       App_ID=okta-app-id;
       SSL_Insecure=true;
       LakeFormationEnabled=true;
       ```
     + Para utilizar una URL basada en perfiles de AWS, siga estos pasos:

       1. Configure un [perfil de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) que tenga un archivo de credenciales de AWS, como en el siguiente ejemplo.

          ```
          [athena_lf_dev]
          plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider
          idp_host=okta-idp-domain
          app_id=okta-app-id
          uid=athena-okta-user@anycompany.com
          pwd=password
          ```

       1. En **URL**, ingrese una cadena de conexión de una sola línea, como el siguiente ejemplo. En el ejemplo se agregan saltos de línea por motivos de legibilidad.

          ```
          jdbc:awsathena://AwsRegion=region-id;
          S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
          profile=athena_lf_dev;
          SSL_Insecure=true;
          LakeFormationEnabled=true;
          ```

     Tenga en cuenta que estos ejemplos son representaciones básicas de la URL necesaria para conectarse a Athena. Para ver una lista completa de los parámetros admitidos en la URL, consulte la [documentación de JDBC.](connect-with-jdbc.md)

   En la siguiente imagen se muestra un perfil de conexión de SQL Workbench que utiliza una dirección URL de conexión.  
![\[Perfil de conexión en SQL Workbench.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-4.png)

Ahora que ha establecido una conexión para el usuario de Okta, puede probarla recuperando algunos datos.

**Para probar la conexión para el usuario de Okta**

1. Elija **Test** (Probar) y, a continuación, verifique que la conexión se realiza correctamente.

1. Desde la venta **Instrucción** de SQL Workbench, ejecute el siguiente comando SQL `DESCRIBE`. Verifique que se muestren todas las columnas.

   ```
   DESCRIBE "tripdb"."nyctaxi"
   ```  
![\[Se muestran todas las columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-5.png)

1. Desde la venta **Instrucción** de SQL Workbench, ejecute el siguiente comando SQL `SELECT`. Verifique que se muestren todas las columnas.

   ```
   SELECT * FROM tripdb.nyctaxi LIMIT 5
   ```  
![\[Verifique que se muestren todas las columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-6.png)

A continuación, debe verificar que el usuario **athena-ba-user**, como miembro del grupo **lf-business-analyst**, solo tiene acceso a las tres primeras columnas de la tabla que especificó anteriormente en Lake Formation.

**Para verificar el acceso de **athena-ba-user****

1. En SQL Workbench, en el cuadro de diálogo **Connection profile** (Perfil de conexión), cree otro perfil de conexión.
   + En el nombre de perfil de conexión, ingrese ** Athena\$1Okta\$1Group\$1Connection**.
   + En **Driver** (Controlador), elija el controlador Simba JDBC de Athena.
   + En **URL**, realice una de las siguientes operaciones:
     + Para utilizar una URL de conexión, ingrese una cadena de conexión de una sola línea. En el siguiente ejemplo se agregan saltos de línea por motivos de legibilidad.

       ```
       jdbc:awsathena://AwsRegion=region-id;
       S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
       AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider;
       user=athena-ba-user@anycompany.com;
       password=password;
       idp_host=okta-idp-domain;
       App_ID=okta-application-id;
       SSL_Insecure=true;
       LakeFormationEnabled=true;
       ```
     + Para utilizar una URL basada en perfiles de AWS, siga estos pasos:

       1. Configure un perfil de AWS que tenga un archivo de credenciales, como en el siguiente ejemplo.

          ```
          [athena_lf_ba]
          plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider
          idp_host=okta-idp-domain
          app_id=okta-application-id
          uid=athena-ba-user@anycompany.com
          pwd=password
          ```

       1. En **URL**, ingrese una cadena de conexión de una sola línea, como la siguiente. En el ejemplo se agregan saltos de línea por motivos de legibilidad.

          ```
          jdbc:awsathena://AwsRegion=region-id;
          S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results;
          profile=athena_lf_ba;
          SSL_Insecure=true;
          LakeFormationEnabled=true;
          ```

1. Elija **Test** (Probar) para confirmar que la conexión se realiza correctamente.

1. Desde la ventana **SQL Statement** (Instrucción SQL), ejecute los mismos comandos SQL `DESCRIBE` y `SELECT` que ejecutó antes y examine los resultados.

   Como **athena-ba-user** es miembro del grupo **lf-business-analyst**, solo se devuelven las tres primeras columnas que especificó en la consola de Lake Formation.  
![\[Solo se devuelven las primeras tres columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-7.png)  
![\[Datos de las primeras tres columnas.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-8.png)

A continuación, vuelva a la consola de Okta para agregar el usuario `athena-ba-user` al grupo de Okta `lf-developer`.

**Para agregar el usuario athena-ba-user al grupo lf-developer**

1. Inicie sesión en la consola de Okta como usuario administrativo del dominio Okta asignado.

1. Elija **Directory** y, a continuación, elija **Groups** (Grupos).

1. En la página Groups (Grupos), elija el grupo **lf-developer**.  
![\[Elija el grupo lf-developer.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-9.png)

1. Elija **Manage People** (Administrar personas).

1. En la lista **Not Members** (No miembros), elija **athena-ba-user** para agregarlo al grupo **lf-developer**.

1. Seleccione **Save**.

Ahora regrese a la consola de Lake Formation para configurar los permisos de tabla para el grupo **lf-developer**.

**Para configurar los permisos de tabla para lf-developer-group**

1. Inicie sesión en la consola de Lake Formation como administrador del lago de datos.

1. En el panel de navegación, elija **Tablas**.

1. Seleccione la tabla **nyctaxi**.

1. Elija **Actions** (Acciones), **Grant** (Conceder).

1. En el cuadro de diálogo **Conceder permisos**, ingrese la siguiente información:
   + En **Usuarios y grupos de SAML y Amazon Quick**, ingrese el ARN de grupo lf-developer SAML de Okta con el siguiente formato:
   + En **Columns** (Columnas), **Choose filter type** (Elegir tipo de filtro), elija **Include Columns** (Incluir columnas).
   + Elija la columna **trip\$1type**.
   + En **Table permissions** (Permisos de tabla), elija **SELECT**.

1. Elija **Grant** (Conceder).

Ahora puede utilizar SQL Workbench para verificar el cambio en los permisos para el grupo **lf-developer**. El cambio debe reflejarse en los datos disponibles para el usuario **athena-ba-user**, que ahora es miembro del grupo **lf-developer**.

**Para verificar el cambio en los permisos de athena-ba-user**

1. Cierre el programa SQL Workbench y, a continuación, vuelva a abrirlo.

1. Conéctese al perfil de **athena-ba-user**.

1. En la ventana **Statement** (Instrucción), ejecute las mismas instrucciones SQL que ejecutó anteriormente:

   Esta vez, se muestra la columna **trip\$1type**.  
![\[La cuarta columna está disponible para consulta.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-10.png)

   Como **athena-ba-user** ahora es miembro de los grupos **lf-developer** e **lf-business-analyst**, la combinación de permisos de Lake Formation para esos grupos determina las columnas que se devuelven.  
![\[La cuarta columna son los resultados de los datos.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-11.png)

## Conclusión
<a name="security-athena-lake-formation-jdbc-okta-tutorial-conclusion"></a>

En este tutorial configuró la integración de Athena con AWS Lake Formation utilizando Okta como proveedor SAML. Utilizó Lake Formation e IAM para controlar los recursos que están disponibles para el usuario SAML en el catálogo de datos AWS Glue del lago de datos.

## Recursos relacionados
<a name="security-athena-lake-formation-jdbc-okta-tutorial-related-resources"></a>

Para obtener información relacionada, consulte los siguientes recursos.
+ [Conexión a Amazon Athena con JDBC](connect-with-jdbc.md)
+ [Habilitación del acceso federado a la API de Athena](access-federation-saml.md)
+ [AWS Lake Formation Guía para desarrolladores de](https://docs.aws.amazon.com/lake-formation/latest/dg/)
+ [Concesión y revocación de permisos de catálogo de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) en la *Guía para desarrolladores de AWS Lake Formation*.
+ [Federación y proveedores de identidad](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) en la *Guía del usuario de IAM*.
+ [Creación de proveedores de identidad SAML de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) en la *Guía del usuario de IAM*.
+ [Enabling federation to AWS using Windows Active Directory, ADFS, and SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/) (Habilitación de la federación de AWS por medio de Windows Active Directory, ADFS y SAML 2.0) en el *blog de seguridad de *.