

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.

# Uso de la integración de aplicaciones de Lake Formation
<a name="using-cred-vending"></a>

Lake Formation permite que los servicios de terceros se integren con Lake Formation y obtengan acceso temporal a los datos de Amazon S3 en nombre de sus usuarios mediante el uso [GetTemporaryGlueTableCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGlueTableCredentials.html)y [GetTemporaryGluePartitionCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGluePartitionCredentials.html)las operaciones. Esto permite que los servicios de terceros utilicen la misma función de venta de autorizaciones y credenciales que utilizan el resto de los servicios de AWS análisis. En esta sección se describe cómo utilizar estas operaciones de la API para integrar un motor de consultas de terceros con Lake Formation.

 Estas operaciones de la API están deshabilitadas de forma predeterminada. Existen dos opciones para autorizar a Lake Formation a integrar aplicaciones:
+ Configurar las etiquetas de sesión de IAM para que se validen cada vez que se invoquen las operaciones de la API de integración de aplicaciones

  Para obtener más información, consulte [Habilitar los permisos para que un motor de consultas de terceros llame a las operaciones de la API de integración de aplicaciones](permitting-third-party-call.md).
+ Habilitar la opción que **permite a los motores externos acceder a los datos en las ubicaciones de Amazon S3 con acceso completo a las tablas**

  Esta opción permite que los motores de consultas y las aplicaciones obtengan credenciales sin etiquetas de sesión de IAM si el usuario tiene acceso completo a la tabla. Proporciona beneficios de rendimiento a los motores de consulta y las aplicaciones, además de simplificar el acceso a los datos. Amazon EMR en Amazon EC2 puede aprovechar esta configuración. 

  Para obtener más información, consulte [Integración de aplicaciones para un acceso completo a la tabla](full-table-credential-vending.md).

**Topics**
+ [Cómo funciona la integración de aplicaciones de Lake Formation](how-vending-works.md)
+ [Roles y responsabilidades en la integración de aplicaciones de Lake Formation](roles-and-responsibilities.md)
+ [Flujo de trabajo de Lake Formation para las operaciones de la API de integración de aplicaciones](api-overview.md)
+ [Registro de un motor de consultas de terceros](register-query-engine.md)
+ [Habilitar los permisos para que un motor de consultas de terceros llame a las operaciones de la API de integración de aplicaciones](permitting-third-party-call.md)
+ [Integración de aplicaciones para un acceso completo a la tabla](full-table-credential-vending.md)

# Cómo funciona la integración de aplicaciones de Lake Formation
<a name="how-vending-works"></a>

En esta sección se describe cómo utilizar las operaciones de la API de integración de aplicaciones para integrar una aplicación de terceros (motor de consultas) con Lake Formation.

![\[Lake Formation data access workflow with user authentication and service integration.\]](http://docs.aws.amazon.com/es_es/lake-formation/latest/dg/images/credential-vending-new.png)


1. El administrador de Lake Formation efectúa las siguientes actividades:
   + Registra una ubicación de Amazon S3 en Lake Formation proporcionando un rol de IAM (utilizado para suministrar credenciales) que tiene los permisos adecuados para acceder a los datos de la ubicación de Amazon S3
   + Registra una aplicación de terceros para hacer llamadas a las operaciones de la API de suministro de credenciales de Lake Formation. Consulte [Registro de un motor de consultas de terceros](register-query-engine.md)
   + Concede permisos para permitir el acceso a bases de datos y tablas

     Por ejemplo, si desea publicar un conjunto de datos de sesiones de usuario que incluya algunas columnas que contengan información de identificación personal (PII), para restringir el acceso, asigne a estas columnas una etiqueta [LF-TBAC](https://docs.aws.amazon.com/lake-formation/latest/dg/tag-based-access-control.html.html) denominada «clasificación» con el valor «confidencial». A continuación, define un permiso que permita a un analista empresarial acceder a los datos de las sesiones de los usuarios, pero excluye las columnas etiquetadas con *classification = sensitive*. 

1. Una entidad principal (usuario) envía una consulta a un servicio integrado.

1. La aplicación integrada envía la solicitud a Lake Formation solicitando la información de la tabla y las credenciales para acceder a la tabla. 

1. Si la entidad principal que efectúa la consulta está autorizada a acceder a la tabla, Lake Formation devuelve las credenciales a la aplicación integrada, lo que permite el acceso a los datos.
**nota**  
Lake Formation no accede a los datos subyacentes al expedir credenciales.

1. El servicio integrado lee los datos de Amazon S3, filtra las columnas según las políticas que ha recibido y devuelve los resultados a la entidad principal.

**importante**  
Las operaciones de la API de suministro de credenciales de Lake Formation permiten una **aplicación distribuida con un modelo explícito de denegación en caso de fallo (cierre por error)**. Esto introduce un modelo de seguridad tripartito entre los clientes, los servicios de terceros y Lake Formation. Se confía en los servicios integrados para hacer cumplir adecuadamente los permisos de Lake Formation (aplicación distribuida). 

El servicio integrado es responsable de filtrar los datos leídos de Amazon S3 según las políticas devueltas de Lake Formation antes de que los datos filtrados regresen al usuario. Los servicios integrados siguen un modelo de cierre por error, lo que significa que la consulta debe fallar si no pueden hacer cumplir los permisos de Lake Formation necesarios. 

# Roles y responsabilidades en la integración de aplicaciones de Lake Formation
<a name="roles-and-responsibilities"></a>

Las siguientes son las funciones y sus responsabilidades asociadas para permitir la integración de aplicaciones de terceros con. AWS Lake Formation


****  

| Rol | Responsabilidad | 
| --- | --- | 
| El cliente |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/lake-formation/latest/dg/roles-and-responsibilities.html)  | 
| El tercero |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/lake-formation/latest/dg/roles-and-responsibilities.html)  | 
| AWS Lake Formation |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/lake-formation/latest/dg/roles-and-responsibilities.html)  | 

# Flujo de trabajo de Lake Formation para las operaciones de la API de integración de aplicaciones
<a name="api-overview"></a>

A continuación se muestra el flujo de trabajo para las operaciones de la API de integración de aplicaciones:

1. Un usuario envía una consulta o solicitud de datos mediante un motor de consultas integrado de terceros. El motor de consultas asume un rol de IAM que representa al usuario o a un grupo de usuarios y recupera las credenciales de confianza para utilizarlas al llamar a las operaciones de la API de integración de aplicaciones.

1.  El motor de consultas invoca `GetUnfilteredTableMetadata`. Si se trata de una tabla con particiones, invoca `GetUnfilteredPartitionsMetadata` para recuperar los metadatos y la información sobre políticas del Catálogo de datos.

1.  Lake Formation autoriza la solicitud. Si el usuario no tiene los permisos adecuados en la tabla, *AccessDeniedException*se descarta. 

1. Como parte de la solicitud, el motor de consultas envía el filtrado que admite. Hay dos indicadores que se pueden enviar dentro de una matriz: *COLUMN\$1PERMISSIONS* y *CELL\$1FILTER\$1PERMISSION.* Si el motor de consultas no admite ninguna de estas funciones y existe una política sobre la misma, se lanza una y la consulta no *PermissionTypeMismatchException*se realiza correctamente. Esto ocurre para evitar la fuga de datos.

1. La respuesta devuelta contiene lo siguiente:
   + El esquema completo de la tabla, que los motores de consultas pueden usar para analizar los datos almacenados.
   + Una lista de columnas autorizadas a las que el usuario tiene acceso. Si la lista de columnas autorizadas está vacía, significa que el usuario tiene permisos de `DESCRIBE`, pero no tiene permisos de `SELECT`, y se produce un error en la consulta.
   + Una marca, `IsRegisteredWithLakeFormation`, que indica si Lake Formation puede vender credenciales a los datos de este recurso. Si el resultado es falso, deben usarse credenciales de clientes para acceder a Amazon S3. 
   +  Una lista de `CellFilters` si hay alguno que deba aplicarse a las filas de datos. Esta lista contiene columnas y una expresión para evaluar cada fila. Solo debe rellenarse si se envía *CELL\$1FILTER\$1PERMISSION* como parte de la solicitud y hay un filtro de datos en la tabla para el usuario que llama.

1. Una vez recuperados los metadatos, el motor de consultas llama `GetTemporaryGlueTableCredentials` o `GetTemporaryGluePartitionCredentials` solicita AWS credenciales para recuperar los datos de la ubicación de Amazon S3. 

1. El motor de consultas lee los objetos relevantes de Amazon S3, filtra los datos según las políticas recibidas en el paso 2 y devuelve los resultados al usuario. 

Las operaciones de la API de integración de aplicaciones para Lake Formation incluyen contenido adicional para configurar la integración con motores de consultas de terceros. Puede ver los detalles de la operación en la sección [Operaciones de la API de suministro de credenciales](aws-lake-formation-api-credential-vending.md).

 `QuerySessionContext`Se trata de una estructura a la que los motores de consultas también pueden enviar información Lake Formation para estas operaciones de la API de integración de aplicaciones. Permite Lake Formation almacenar y utilizar contexto adicional para una consulta determinada. A continuación se proporciona un ejemplo de cómo se [QuerySessionContext](https://docs.aws.amazon.com/glue/latest/webapi/API_QuerySessionContext.html)debe utilizar:

1. El motor de consultas realiza una `GetInternalUnfilteredMetadata` llamada y pasa una estructura QSC que contiene un identificador de consulta único en la solicitud:

   ```
   {
       "QuerySessionContext": {
           "QueryId": "your-unique-identifier-here"
       }
   }
   ```

1. La `GetInternalUnfilteredMetadata` llamada habrá devuelto una `QueryAuthorizationId` cadena en la respuesta. En la siguiente llamada de consulta (y en cualquier otra posterior) que acepte una estructura QSC en la entrada, el motor de consultas pasa la misma estructura QSC que ahora también contiene la información `QueryAuthorizationId` devuelta por. Lake Formation Supongamos que la siguiente llamada es`GetTemporaryGlueTableCredentials`; la solicitud contendrá:

   ```
   {
       "QuerySessionContext": {
           "QueryAuthorizationId": "lf-returned-query-authz-id-here",
           "QueryId": "your-unique-identifier-here"
       },
   }
   ```

# Registro de un motor de consultas de terceros
<a name="register-query-engine"></a>

Antes de que un motor de consultas de terceros pueda utilizar las operaciones de la API de integración de aplicaciones, debe habilitar explícitamente los permisos para que el motor de consultas llame a las operaciones de la API en su nombre. Esto se efectúa en unos pocos pasos:

1. Debe especificar AWS las cuentas y las etiquetas de sesión de IAM que requieren permiso para llamar a las operaciones de la API de integración de aplicaciones a través de la AWS Lake Formation consola, la API AWS CLI o el SDK. 

1. Cuando el motor de consultas de terceros asume el rol de ejecución en su cuenta, el motor de consultas debe adjuntar una etiqueta de sesión registrada en Lake Formation que represente al motor de terceros. Lake Formation usa esta marca para validar si la solicitud proviene de un motor aprobado. Para obtener más información acerca de las marcas de sesión, consulte [Etiquetas de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) el la Guía del usuario de IAM.

1. Al configurar un rol de ejecución de un motor de consultas de terceros, debe tener el siguiente conjunto mínimo de permisos en la política de IAM:

------
#### [ 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",
         "glue:GetPartition",
         "glue:GetPartitions"
       ],
       "Resource": "*"
     }
   }
   ```

------

1. Configure una política de confianza de roles en el rol de ejecución del motor de consultas para tener un control de acceso preciso sobre qué par clave-valor de etiqueta de sesión puede adjuntarse a este rol. En el ejemplo siguiente, a este rol solo se le permite adjuntar una clave de etiqueta de sesión `"LakeFormationAuthorizedCaller"` y un valor de etiqueta de sesión `"engine1"`, y no se permite ningún otro par de valores clave de etiqueta de sesión.

   ```
   {
       "Sid": "AllowPassSessionTags",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/query-execution-role"
       },
       "Action": "sts:TagSession",
       "Condition": {
       "StringLike": {
           "aws:RequestTag/LakeFormationAuthorizedCaller": "engine1"        }
       }
   }
   ```

[Cuando se `LakeFormationAuthorizedCaller` llama a la operación STS: AssumeRole API para obtener credenciales para que las utilice el motor de consultas, la etiqueta de sesión debe incluirse en la solicitud. AssumeRole ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role) La credencial temporal devuelta se puede usar para efectuar solicitudes a la API de integración de aplicaciones de Lake Formation.

Las operaciones de la API de integración de aplicaciones de Lake Formation requieren que la entidad principal que llama tenga un rol de IAM. El rol de IAM debe incluir una etiqueta de sesión con un valor predeterminado que se haya registrado en Lake Formation. Esta etiqueta permite a Lake Formation verificar si el rol utilizado para llamar a las operaciones de la API de integración de aplicaciones está autorizado a hacerlo.

# Habilitar los permisos para que un motor de consultas de terceros llame a las operaciones de la API de integración de aplicaciones
<a name="permitting-third-party-call"></a>

Siga estos pasos para permitir que un motor de consultas de terceros llame a las operaciones de la API de integración de aplicaciones a través de la AWS Lake Formation consola, la API AWS CLI o el SDK.

------
#### [ Console ]

**Para registrar tu cuenta para el filtrado de datos externo:**

1. Inicie sesión en y abra la Consola de administración de AWS consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En el panel de navegación de la izquierda, expanda **Administración** y, a continuación, elija **Configuración de integración de aplicaciones**.

1. En la página **Configuración de integración de aplicaciones**, elija la opción **Permitir que motores externos filtren datos en las ubicaciones de Amazon S3 registradas en Lake Formation**.

1. Introduzca las etiquetas de sesión que creó para el motor de terceros. Para obtener información sobre las etiquetas de sesión, consulte [Pasar etiquetas de sesión en AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) en la *Guía del AWS Identity and Access Management usuario*.

1. Introduzca la cuenta IDs para los usuarios que pueden utilizar el motor de terceros para acceder a la información de metadatos sin filtrar y a las credenciales de acceso a los datos de los recursos de la cuenta actual.

   También puede usar el campo de ID de AWS cuenta para configurar el acceso entre cuentas.  
![\[La captura de pantalla muestra la página Configuración de integración de aplicaciones para Lake Formation. La opción Permitir que motores externos filtren datos en las ubicaciones de Amazon S3 registradas en Lake Formation queda seleccionada. En Valores de etiquetas de sesión, el cuadro de texto está vacío, pero debajo del campo hay seis etiquetas, con los valores «engine1», «engine2», «engine3», «session1», «session2» y «session3». El último campo muestra el Cuenta de AWS IDs campo. El campo de texto está vacío, pero debajo de este campo se muestran tres etiquetas explicativas IDs. Los valores del ID de la cuenta están redactados.\]](http://docs.aws.amazon.com/es_es/lake-formation/latest/dg/images/cred-vending-external-data-filtering.png)

------
#### [ CLI ]

Utilice el siguiente comando de CLI `put-data-lake-settings` para establecer los parámetros siguientes.

Hay tres campos que se deben configurar cuando se utiliza este AWS CLI comando:
+ `allow-external-data-filtering ` – (booleano) Indica que un motor de terceros puede acceder a la información de metadatos y a las credenciales de acceso a los datos sin filtrar de los recursos de la cuenta actual. 
+ `external-data-filtering-allow-list`— (matriz) Una lista de cuentas IDs que pueden acceder a la información de metadatos sin filtrar y a las credenciales de acceso a los datos de los recursos de la cuenta corriente cuando se utiliza un motor de terceros. Si AllowExternalDataFiltering se establece en true, la ExternalDataFilteringAllowList propiedad debe incluir al menos un identificador de cuenta. No se permite una lista vacía.
+ `authorized-sessions-tag-value-list` – (matriz) Una lista de valores de etiquetas de sesión autorizados (cadenas). Si se ha adjuntado una credencial de rol de IAM a un par clave-valor autorizado, en caso de que la etiqueta de sesión figure en la lista, la sesión tendrá acceso a la información de metadatos y a las credenciales de acceso a los datos sin filtrar de los recursos de la cuenta configurada. La clave de etiqueta de sesión autorizada se define como `*LakeFormationAuthorizedCaller*`.
+ `AllowFullTableExternalDataAccess` - (booleano) Si se debe permitir que un motor de consultas de terceros obtenga credenciales de acceso a los datos sin etiquetas de sesión cuando la persona que llama tiene todos los permisos de acceso a los datos. 

Por ejemplo:

```
aws lakeformation put-data-lake-settings --cli-input-json file://datalakesettings.json

{
  "DataLakeSettings": {
    "DataLakeAdmins": [
      {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111111111111:user/lakeAdmin"
      }
    ],
    "CreateDatabaseDefaultPermissions": [],
    "CreateTableDefaultPermissions": [],
    "TrustedResourceOwners": [],
    "AllowExternalDataFiltering": true,
    "ExternalDataFilteringAllowList": [
        {"DataLakePrincipalIdentifier": "111111111111"}
        ],
    "AuthorizedSessionTagValueList": ["engine1"],
    "AllowFullTableExternalDataAccess": false
    }
    

}
```

------
#### [ API/SDK ]

Para ello, use la operación de la API `PutDataLakeSetting` para establecer los parámetros siguientes. 

Al utilizar esta operación de la API, se deben configurar tres campos:
+ `AllowExternalDataFiltering` – (booleano) Indica SI un motor de terceros puede acceder a la información de metadatos y a las credenciales de acceso a los datos sin filtrar de los recursos de la cuenta actual. 
+ `ExternalDataFilteringAllowList`— (matriz) Una lista de cuentas IDs que pueden acceder a la información de metadatos sin filtrar y a las credenciales de acceso a los datos de los recursos de la cuenta corriente mediante un motor de terceros. 
+ `AuthorizedSectionsTagValueList` – (matriz) Una lista de valores de etiquetas autorizadas (cadenas). Si se ha adjuntado una credencial de rol de IAM a una etiqueta autorizada, la sesión recibirá acceso a la información de metadatos y a las credenciales de acceso a los datos sin filtrar de los recursos de la cuenta configurada. La clave de etiqueta de sesión autorizada se define como `*LakeFormationAuthorizedCaller*`. 
+  `AllowFullTableExternalDataAccess` - (booleano) Si se debe permitir que un motor de consultas de terceros obtenga credenciales de acceso a los datos sin etiquetas de sesión cuando la persona que llama tiene todos los permisos de acceso a los datos. 

Por ejemplo:

```
//Enable session tag on existing data lake settings
public void sessionTagSetUpForExternalFiltering(AWSLakeFormationClient lakeformation) {
    GetDataLakeSettingsResult getDataLakeSettingsResult = lfClient.getDataLakeSettings(new GetDataLakeSettingsRequest());
    DataLakeSettings dataLakeSettings = getDataLakeSettingsResult.getDataLakeSettings();
    
    //set account level flag to allow external filtering
    dataLakeSettings.setAllowExternalDataFiltering(true);
    
    //set account that are allowed to call credential vending or Glue GetFilteredMetadata API
    List<DataLakePrincipal> allowlist = new ArrayList<>();
    allowlist.add(new DataLakePrincipal().withDataLakePrincipalIdentifier("111111111111"));
    dataLakeSettings.setWhitelistedForExternalDataFiltering(allowlist);
    
    //set registered session tag values
    List<String> registeredTagValues = new ArrayList<>();
    registeredTagValues.add("engine1");
    dataLakeSettings.setAuthorizedSessionTagValueList(registeredTagValues);

    lakeformation.putDataLakeSettings(new PutDataLakeSettingsRequest().withDataLakeSettings(dataLakeSettings));
}
```

------

# Integración de aplicaciones para un acceso completo a la tabla
<a name="full-table-credential-vending"></a>

Siga estos pasos para permitir que los motores de consultas de terceros accedan a los datos sin la validación de la etiqueta de sesión de IAM: 

------
#### [ Console ]

1. Inicie sesión en 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 de la izquierda, expanda **Administración** y, a continuación, elija **Configuración de integración de aplicaciones**.

1. En la página **Configuración de integración de aplicaciones**, elija la opción **Permitir que motores externos accedan a datos en las ubicaciones de Amazon S3 con acceso total a las tablas**. 

   Al activar esta opción, Lake Formation devuelve las credenciales a la aplicación que efectúa la consulta directamente sin validar la etiqueta de sesión de IAM. 

![\[La captura de pantalla muestra la página Configuración de la integración de aplicaciones para Lake Formation. La opción Permitir que motores accedan a datos en las ubicaciones de Amazon S3 con acceso total a las tablas está seleccionada.\]](http://docs.aws.amazon.com/es_es/lake-formation/latest/dg/images/cred-vending-external-full-table.png)


------
#### [ AWS CLI ]

Utilice el comando CLI `put-data-lake-settings` para establecer el parámetro `AllowFullTableExternalDataAccess`.

```
aws lakeformation put-data-lake-settings —cli-input-json file://put-data-lake-settings.json —region ap-northeast-1 
{
    "DataLakeSettings": {
        "DataLakeAdmins": [
            {
                "DataLakePrincipalIdentifier": "arn:aws:iam::111111111111:user/lakeAdmin"
            }
        ],
        "AllowFullTableExternalDataAccess": true
    }
}
```

------