

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como usar a integração de aplicativos Lake Formation
<a name="using-cred-vending"></a>

O Lake Formation permite que serviços terceirizados se integrem ao Lake Formation e obtenham acesso temporário aos dados do Amazon S3 em nome de seus usuários por meio do uso [GetTemporaryGlueTableCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGlueTableCredentials.html)e [GetTemporaryGluePartitionCredentials](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GetTemporaryGluePartitionCredentials.html)das operações. Isso permite que serviços de terceiros usem o mesmo recurso de autorização e venda de credenciais que o restante dos serviços de AWS análise usa. Esta seção descreve como usar essas operações de API para integrar um mecanismo de consulta de terceiros com o Lake Formation.

 Por padrão, essas operações de API estão desativadas. Há duas opções para autorizar a integração de aplicativos com o Lake Formation:
+ Configure tags de sessão do IAM que são validadas sempre que as operações da API de integração de aplicativos são chamadas

  Para obter mais informações, consulte [Como habilitar permissões para que um mecanismo de consulta de terceiros chame operações de API de integração de aplicativos](permitting-third-party-call.md).
+ Ative a opção que **permite que mecanismos externos acessem dados em locais do Amazon S3 com acesso total à tabela**.

  Essa opção permite que mecanismos de consulta e aplicativos obtenham credenciais sem tags de sessão do IAM se o usuário tiver acesso total à tabela. Ele fornece benefícios de desempenho para mecanismos de consulta e aplicativos, além de simplificar o acesso aos dados. O Amazon EMR no Amazon EC2 é capaz de utilizar essa configuração. 

  Para obter mais informações, consulte [Integração de aplicativos para acesso total à tabela](full-table-credential-vending.md).

**Topics**
+ [Como funciona a integração de aplicações do Lake Formation](how-vending-works.md)
+ [Perfis e responsabilidades na integração de aplicativos do Lake Formation](roles-and-responsibilities.md)
+ [Fluxo de trabalho do Lake Formation para operações de API de integração de aplicativos](api-overview.md)
+ [Como registrar um mecanismo de consulta de terceiros](register-query-engine.md)
+ [Como habilitar permissões para que um mecanismo de consulta de terceiros chame operações de API de integração de aplicativos](permitting-third-party-call.md)
+ [Integração de aplicativos para acesso total à tabela](full-table-credential-vending.md)

# Como funciona a integração de aplicações do Lake Formation
<a name="how-vending-works"></a>

Esta seção descreve como usar as operações da API de integração de aplicativos para integrar um aplicativo de terceiros (mecanismo de consulta) com o Lake Formation.

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


1. O administrador do Lake Formation executa as seguintes atividades:
   + Registra um local do Amazon S3 no Lake Formation fornecendo um perfil do IAM (usado para fornecimento de credenciais) que tem permissões apropriadas para acessar dados dentro do local do Amazon S3
   + Registra um aplicativo de terceiros para poder chamar as operações de API de fornecimento credenciais do Lake Formation. Consulte [Como registrar um mecanismo de consulta de terceiros](register-query-engine.md)
   + Concede permissões para que os usuários acessem bancos de dados e tabelas

     Por exemplo, se você quiser publicar um conjunto de dados de sessões de usuário que inclua algumas colunas contendo informações de identificação pessoal (PII), para restringir o acesso, atribua a essas colunas uma [LF-TBAC](https://docs.aws.amazon.com/lake-formation/latest/dg/tag-based-access-control.html.html) chamada “classificação” com o valor “sensível”. Em seguida, defina uma permissão para um analista de negócios acessar os dados das sessões do usuário, mas exclui as colunas marcadas com *classificação = sensível*. 

1. Uma entidade principal (usuário) envia uma consulta para um serviço integrado.

1. O aplicativo integrado solicita ao Lake Formation informações e credenciais da tabela para acessar a tabela. 

1. Se a entidade principal que faz a consulta estiver autorizada a acessar a tabela, o Lake Formation retornará as credenciais para o aplicativo integrado, que permite o acesso aos dados.
**nota**  
O Lake Formation não acessa os dados subjacentes ao fornecer credenciais.

1. O serviço integrado lê dados do Amazon S3, filtra as colunas com base nas políticas recebidas e retorna os resultados à entidade principal.

**Importante**  
As operações de API do Lake Formation de fornecimento de credenciais permitem um modelo de **fiscalização distribuída com negação explícita em caso de falha (fail-close)**. Isso introduz um modelo de segurança tripartido entre clientes, serviços terceirizados e Lake Formation. Os serviços integrados são confiáveis para aplicar adequadamente as permissões do Lake Formation (fiscalização distribuída). 

O serviço integrado é responsável por filtrar os dados lidos do Amazon S3 com base nas políticas retornadas do Lake Formation antes que os dados filtrados sejam devolvidos ao usuário. Os serviços integrados seguem um modelo de "fail-close", o que significa que eles devem falhar na consulta se não conseguirem aplicar as permissões do Lake Formation necessárias. 

# Perfis e responsabilidades na integração de aplicativos do Lake Formation
<a name="roles-and-responsibilities"></a>

A seguir estão as funções e suas responsabilidades associadas para permitir a integração de aplicativos de terceiros com AWS Lake Formation.


****  

| Perfil | Responsabilidade | 
| --- | --- | 
| O consumidor |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lake-formation/latest/dg/roles-and-responsibilities.html)  | 
| Terceiros |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lake-formation/latest/dg/roles-and-responsibilities.html)  | 
| AWS Lake Formation |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lake-formation/latest/dg/roles-and-responsibilities.html)  | 

# Fluxo de trabalho do Lake Formation para operações de API de integração de aplicativos
<a name="api-overview"></a>

A seguir está o fluxo de trabalho das operações da API de integração de aplicativos:

1. Um usuário envia uma consulta ou solicitação de dados usando um mecanismo de consulta integrado de terceiros. O mecanismo de consulta assume um perfil do IAM que representa o usuário ou um grupo de usuários e recupera credenciais confiáveis para serem usadas ao chamar as operações da API de integração de aplicativos.

1.  O mecanismo de consulta chama `GetUnfilteredTableMetadata` e, se for uma tabela particionada, o mecanismo de consulta chama `GetUnfilteredPartitionsMetadata` para recuperar metadados e informações de política do catálogo de dados.

1.  O Lake Formation realiza a autorização para a solicitação. Se o usuário não tiver as permissões apropriadas na mesa, ele será *AccessDeniedException*descartado. 

1. Como parte da solicitação, o mecanismo de consulta envia a filtragem compatível. Há dois sinalizadores que podem ser enviados em uma matriz: *COLUMN\$1PERMISSIONS* e *CELL\$1FILTER\$1PERMISSION*. Se o mecanismo de consulta não oferecer suporte a nenhum desses recursos e existir uma política na tabela para o recurso, a será lançado e a consulta falhará. *PermissionTypeMismatchException* Isso acontece para evitar o vazamento de dados.

1. A resposta obtida contém o seguinte:
   + O esquema inteiro da tabela para que os mecanismos de consulta possam usá-lo para analisar os dados do armazenamento.
   + Uma lista de colunas autorizadas que o usuário tem acesso. Se a lista de colunas autorizadas estiver vazia, isso indica que o usuário tem permissões `DESCRIBE`, mas não tem permissões `SELECT`, e a consulta falha.
   + Um alerta, `IsRegisteredWithLakeFormation`, que indica se o Lake Formation pode fornecer credenciais para esses dados de recursos. Se isso retornar falso, as credenciais dos clientes devem ser usadas para acessar o Amazon S3. 
   +  Uma lista de `CellFilters`, se houver, que deve ser aplicada às linhas de dados. Essa lista contém colunas e uma expressão para avaliar cada linha. Isso só deve ser preenchido se *CELL\$1FILTER\$1PERMISSION* for enviado como parte da solicitação e houver um filtro de dados na tabela do usuário chamador.

1. Depois que os metadados são recuperados, o mecanismo de consulta chama `GetTemporaryGlueTableCredentials` ou obtém AWS credenciais `GetTemporaryGluePartitionCredentials` para recuperar dados da localização do Amazon S3. 

1. O mecanismo de consulta lê objetos relevantes do Amazon S3, filtra os dados com base nas políticas recebidas na etapa 2 e retorna os resultados ao usuário. 

As operações da API de integração de aplicativos para o Lake Formation contêm conteúdo adicional para configurar a integração com mecanismos de consulta de terceiros. Você pode ver os informações da operação na seção [Operações da API de fornecimento de credenciais.](aws-lake-formation-api-credential-vending.md)

 Essa `QuerySessionContext` é uma estrutura que os mecanismos de consulta também podem enviar Lake Formation para essas operações de API de integração de aplicativos. Ele permite Lake Formation armazenar e utilizar contexto adicional para uma determinada consulta. Veja a seguir um exemplo de como [QuerySessionContext](https://docs.aws.amazon.com/glue/latest/webapi/API_QuerySessionContext.html)deve ser usado:

1. O mecanismo de consulta faz uma `GetInternalUnfilteredMetadata` chamada, passando uma estrutura QSC contendo um ID de consulta exclusivo na solicitação:

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

1. A `GetInternalUnfilteredMetadata` chamada retornará uma `QueryAuthorizationId` string na resposta. Na próxima chamada de consulta (e em qualquer chamada subsequente) que aceita uma estrutura QSC na entrada, o mecanismo de consulta passa a mesma estrutura QSC que agora também contém o `QueryAuthorizationId` retornado por. Lake Formation Suponha que a próxima chamada seja`GetTemporaryGlueTableCredentials`; a solicitação conterá:

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

# Como registrar um mecanismo de consulta de terceiros
<a name="register-query-engine"></a>

Antes que um mecanismo de consulta de terceiros possa usar as operações da API de integração de aplicativos, você precisa habilitar explicitamente as permissões para que o mecanismo de consulta chame as operações da API em seu nome. Isso é feito em algumas etapas:

1. Você precisa especificar as AWS contas e as tags de sessão do IAM que exigem permissão para chamar as operações da API de integração de aplicativos por meio do AWS Lake Formation console AWS CLI ou da API/SDK. 

1. Quando o mecanismo de consulta de terceiros assume o perfil de execução em sua conta, o mecanismo de consulta deve anexar uma tag de sessão registrada no Lake Formation representando o mecanismo de terceiros. O Lake Formation usa essa tag para validar se a solicitação for proveniente de um mecanismo aprovado. Para obter mais informações sobre tags de sessão, consulte [Tags de sessão](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) no Guia do usuário do IAM.

1. Ao configurar um perfil de execução de mecanismo de consulta de terceiros, você deve ter o seguinte conjunto mínimo de permissões na política do 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 uma política de confiança de perfil no perfil de execução do mecanismo de consulta para ter um controle de acesso preciso sobre qual par de chave-valor de tag de sessão pode ser anexado a esse perfil. No exemplo a seguir, esse perfil só pode ter a chave `"LakeFormationAuthorizedCaller"` da tag da sessão e o valor `"engine1"` da tag da sessão a serem anexados, e nenhum outro par de chave e valor da tag da sessão é permitido.

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

[Quando `LakeFormationAuthorizedCaller` chama a operação STS: AssumeRole API para buscar credenciais para o mecanismo de consulta usar, a tag da sessão deve ser incluída na AssumeRole solicitação.](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role) A credencial temporária retornada pode ser usada para fazer solicitações de API de integração de aplicativos do Lake Formation.

As operações da API de integração de aplicativos do Lake Formation exigem que a entidade principal da chamada tenha um perfil do IAM. O perfil do IAM deve incluir uma tag de sessão com um valor predeterminado que tenha sido registrado com o Lake Formation. Essa tag permite ao Lake Formation verificar se o perfil usada para chamar as operações da API de integração de aplicativos tem permissão para fazer isso.

# Como habilitar permissões para que um mecanismo de consulta de terceiros chame operações de API de integração de aplicativos
<a name="permitting-third-party-call"></a>

Siga estas etapas para permitir que um mecanismo de consulta terceirizado chame operações de API de integração de aplicativos por meio do AWS Lake Formation console AWS CLI ou da API/SDK.

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

**Como registrar sua conta para filtragem externa de dados:**

1. Faça login no Console de gerenciamento da AWS, e abra o console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. No painel de navegação à esquerda, expanda **Administração** e selecione **Configurações da integração de aplicações**.

1. Na página de configuração de **Integração do aplicativo**, selecione a opção **Permitir que mecanismos externos filtrem dados em locais do Amazon S3 registrados com o Lake Formation**.

1. Digite as tags de sessão que você criou para o mecanismo de terceiros. Para obter informações sobre tags de sessão, consulte [Passando tags de sessão no AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html) no *Guia AWS Identity and Access Management do usuário*.

1. Insira a conta IDs para usuários que podem usar o mecanismo de terceiros para acessar informações de metadados não filtradas e as credenciais de acesso aos dados dos recursos na conta atual.

   Você também pode usar o campo ID da AWS conta para configurar o acesso entre contas.  
![\[A captura de tela mostra a página de configurações de Integração de aplicativos para o Lake Formation. A opção Permitir que mecanismos externos filtrem dados em locais do Amazon S3 registrados com o Lake Formation está selecionada. Para Valores de tag de sessão, a caixa de texto está vazia, mas há seis tags exibidas abaixo do campo, com os valores “engine1, “engine2", “engine3", “session1", “session2" e “session3". O último campo mostra o Conta da AWS IDs campo. O campo de texto está vazio, mas há três tags exibidas abaixo desse campo com a conta IDs. Os valores do ID da conta são redigidos.\]](http://docs.aws.amazon.com/pt_br/lake-formation/latest/dg/images/cred-vending-external-data-filtering.png)

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

Use o comando `put-data-lake-settings` do CLI para definir os parâmetros a seguir.

Há três campos a serem configurados ao usar esse AWS CLI comando:
+ `allow-external-data-filtering ` — (boolean) Indica que um mecanismo de terceiros pode acessar informações de metadados não filtradas e credenciais de acesso a dados de recursos na conta corrente. 
+ `external-data-filtering-allow-list`— (matriz) Uma lista de contas IDs que podem acessar informações de metadados não filtradas e credenciais de acesso a dados de recursos na conta atual ao usar um mecanismo de terceiros. Quando AllowExternalDataFiltering definido como verdadeiro, a ExternalDataFilteringAllowList propriedade deve incluir pelo menos um ID de conta. Não é permitida uma lista vazia.
+ `authorized-sessions-tag-value-list` — (matriz) Uma lista de valores de tags de sessão autorizados (cadeias). Se uma credencial de perfil do IAM tiver sido anexada a um par de chave e valor autorizado, se a tag da sessão for incluída na lista, a sessão terá acesso a informações de metadados não filtrados e credenciais de acesso a dados em recursos na conta configurada. A chave da tag de sessão autorizada é definida como `*LakeFormationAuthorizedCaller*`.
+ `AllowFullTableExternalDataAccess` - (booleano) Permitir ou não que um mecanismo de consulta de terceiros obtenha credenciais de acesso a dados sem tags de sessão quando um chamador tiver permissões completas de acesso a dados. 

Por exemplo:

```
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 ]

Use a operação `PutDataLakeSetting` da API para definir os seguintes parâmetros. 

Há três campos a serem configurados ao usar essa operação de API:
+ `AllowExternalDataFiltering` — (boolean) Indica se um mecanismo de terceiros pode acessar informações de metadados não filtradas e credenciais de acesso a dados de recursos nesta conta. 
+ `ExternalDataFilteringAllowList`— (matriz) Uma lista de contas IDs que podem acessar informações de metadados não filtradas e as credenciais de acesso aos dados dos recursos na conta atual usando um mecanismo de terceiros. 
+ `AuthorizedSectionsTagValueList` — (matriz) Uma lista de valores de tag autorizados (cadeias). Se uma credencial de perfil do IAM tiver sido anexada a uma tag autorizada, a sessão terá acesso às informações de metadados não filtradas e às credenciais de acesso aos dados nos recursos da conta configurada. A chave da tag de sessão autorizada é definida como `*LakeFormationAuthorizedCaller*`. 
+  `AllowFullTableExternalDataAccess` - (booleano) Permitir ou não que um mecanismo de consulta de terceiros obtenha credenciais de acesso a dados sem tags de sessão quando um chamador tiver permissões completas de acesso a dados. 

Por exemplo:

```
//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));
}
```

------

# Integração de aplicativos para acesso total à tabela
<a name="full-table-credential-vending"></a>

 Siga estas etapas para permitir que mecanismos de consulta de terceiros acessem dados sem a validação da tag de sessão do IAM: 

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

1. Faça login no console do Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. No painel de navegação à esquerda, expanda **Administração** e selecione **Configurações da integração de aplicações**.

1. Na página **Configurações da integração de aplicações**, marque a caixa de seleção **Permitir que mecanismos externos acessem dados em locais do Amazon S3 com acesso total à tabela**. 

   Quando você habilita essa opção, o Lake Formation exibe as credenciais diretamente para a aplicação de consulta, sem a validação da tag de sessão do IAM. 

![\[A captura de tela mostra a página de configuração de Integração de aplicativos no Lake Formation. A opção Permitir que mecanismos externos acessem dados em locais do Amazon S3 com acesso total à tabela está selecionada.\]](http://docs.aws.amazon.com/pt_br/lake-formation/latest/dg/images/cred-vending-external-full-table.png)


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

Use o comando `put-data-lake-settings` do CLI para definir os parâmetros em `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
    }
}
```

------