

# Usar a propagação de identidade confiável com drivers do Amazon Athena
<a name="using-trusted-identity-propagation"></a>

A propagação de identidade confiável fornece uma nova opção de autenticação para organizações que desejam centralizar o gerenciamento de permissões de dados e autorizar solicitações com base em sua identidade de IdP entre os limites do serviço. Com o Centro de Identidade do IAM, é possível configurar um IdP existente para gerenciar usuários e grupos e usar AWS Lake Formation para definir permissões de controle de acesso refinadas nos recursos do catálogo para essas identidades de IdP. O Athena oferece suporte à propagação de identidade ao consultar dados para auditar o acesso aos dados por identidades de IdP a fim de ajudar sua organização a atender aos requisitos regulatórios e de conformidade.

Agora você pode se conectar ao Athena usando os drivers de conectividade de banco de dados Java (JDBC) ou conectividade aberta de banco de dados (ODBC) com recursos de login único via Centro de Identidade do IAM. Quando você acessa o Athena a partir de ferramentas como PowerBI, Tableau ou DBeaver, sua identidade e permissões são propagadas automaticamente para o Athena por meio do Centro de Identidade do IAM. Isso significa que suas permissões individuais de acesso aos dados são aplicadas diretamente ao consultar dados, sem exigir etapas de autenticação separadas ou gerenciamento de credenciais.

Para administradores, esse recurso centraliza o controle de acesso por meio do Centro de Identidade do IAM e do Lake Formation, garantindo a aplicação consistente de permissões em todas as ferramentas de análise compatíveis conectadas ao Athena. Para começar, certifique-se de que sua organização tenha configurado o Centro de Identidade do IAM como sua fonte de identidade e tenha configurado as permissões de acesso aos dados apropriadas para seus usuários.

**Topics**
+ [Definições de chaves](#using-trusted-identity-propagation-key-definitions)
+ [Considerações](#using-trusted-identity-propagation-considerations)
+ [Pré-requisitos](#using-trusted-identity-propagation-prerequisites)
+ [Conectar o Athena ao Centro de Identidade do IAM](using-trusted-identity-propagation-setup.md)
+ [Configure e implante recursos usando AWS CloudFormation](using-trusted-identity-propagation-cloudformation.md)

## Definições de chaves
<a name="using-trusted-identity-propagation-key-definitions"></a>

1. **Perfil de aplicação**: perfil para trocar tokens, recuperar o grupo de trabalho e o ARN da aplicação do Centro de Identidade do AWS gerenciado pelo cliente.

1. **Perfil de acesso**: perfil ser usado com drivers do Athena para executar fluxos de trabalho de clientes com credenciais aprimoradas de identidade. Isso significa que esse perfil é necessário para acessar serviços downstream.

1. **Aplicação gerenciada pelo cliente**: a aplicação do Centro de I dentidade do AWS IAM. Para obter mais informações, consulte [Aplicação gerenciada pelo cliente](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps.html).

## Considerações
<a name="using-trusted-identity-propagation-considerations"></a>

1. Esse recurso funciona somente em regiões onde o Athena geralmente está disponível com propagação de identidade confiável. Para obter mais informações sobre disponibilidade, consulte [Considerações e limitações](https://docs.aws.amazon.com/athena/latest/ug/workgroups-identity-center.html).

1. Os drivers JDBC e ODBC são compatíveis com a propagação de identidade confiável com grupos de trabalho habilitados para o IAM.

1. É possível usar JDBC e ODBC como drivers autônomos ou com qualquer ferramenta de BI ou SQL com propagação de identidade confiável usando esse plug-in de autenticação.

## Pré-requisitos
<a name="using-trusted-identity-propagation-prerequisites"></a>

1. É necessário ter uma instância do Centro de Identidade do AWS IAM habilitada. Para obter mais informações, consulte [O que é o Centro de Identidade do IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-center-instances.html).

1. É necessário ter um provedor de identidade externo ativo e os usuários ou grupos devem existir no Centro de Identidade do AWS IAM. É possível provisionar seus usuários ou grupos de forma automática ou manual ou ainda via SCIM. Para obter mais informações, consulte [Provisionar um provedor de identidade externo no Centro de Identidade do IAM usando SCIM](https://docs.aws.amazon.com/singlesignon/latest/userguide/provision-automatically.html).

1. Você deve conceder Permissões do Lake Formation a usuários ou grupos para catálogos, bancos de dados e tabelas. Para obter informações, consulte [Usar o Athena para consultar dados registrados no Lake Formation](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html).

1. É necessário ter uma ferramenta de BI ou um cliente SQL em funcionamento para executar consultas do Athena usando o driver JDBC ou ODBC.

# Conectar o Athena ao Centro de Identidade do IAM
<a name="using-trusted-identity-propagation-setup"></a>

A seção a seguir lista o processo de conexão do Athena ao Centro de Identidade do IAM.

## Configurar um emissor de tokens confiável
<a name="using-trusted-identity-propagation-step1"></a>

Siga o guia [Configurar um emissor de tokens confiável](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) para configurar um emissor de tokens confiável. Isso criará um Centro de Identidade do AWS IAM.

**nota**  
Em **Tipo de provedor**, escolha **OpenID Connect**. Em **URL do provedor**, insira a URL do emissor do seu provedor de identidade. Em **Público**, especifique o ID do cliente emitido pelo provedor de identidade para sua aplicação.  
 

Copie o nome do recurso do aplicativo (ARN) do provedor de identidade do AWS IAM. Para obter mais informações, consulte [Provedores de identidade e federação](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html).

## Configurar perfis do IAM
<a name="using-trusted-identity-propagation-step2"></a>

### Configurar perfil de aplicação do IAM
<a name="using-trusted-identity-propagation-step2-application-role"></a>

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Perfis** e **Criar perfil**.

1. Em **Tipo de entidade confiável**, escolha **Política de confiança personalizada** da seguinte forma:

   1. Em **Entidade principal federada**, adicione o ARN do provedor de identidade do AWS IAM que você copiou durante a configuração do emissor de tokens confiável.

   1. Como condição da política, adicione o público do seu provedor de identidade federado externo.

1. Adicione a política em linha a seguir para conceder acesso ao usuário para as permissões [CreateTokenWithIAM](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html), [ListTagsForResource](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListTagsForResource.html) e [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:ListTags*",
                   "sso:ListTags*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**nota**  
As permissões `CreateTokenWithIam` são fornecidas na aplicação do Centro de Identidade do IAM gerenciada pelo cliente.

1. Copie o ARN para o perfil de aplicação.

### Configurar o perfil de acesso do IAM
<a name="using-trusted-identity-propagation-step2-access-role"></a>

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Perfis** e **Criar perfil**.

1. Em **Tipo de entidade confiável**, escolha **Política de confiança personalizada** da seguinte forma:

   1. Em **Entidade principal federada**, adicione o ARN do Centro de Identidade do AWS IAM copiado durante a configuração do emissor de tokens confiável.

   1. Em **Entidade principal da AWS**, adicione o ARN para o perfil de aplicação do AWS IAM copiado durante a configuração do perfil de aplicação do IAM.

1. Adicione a seguinte **política em linha** para conceder acesso a fluxos de trabalho do driver:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:StartQueryExecution",
                   "athena:GetQueryExecution",
                   "athena:GetQueryResults",
                   "athena:ListWorkGroups",
                   "athena:ListDataCatalogs",
                   "athena:ListDatabases",
                   "athena:ListTableMetadata"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:PutObject"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:CreateTable",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:UpdateTable",
                   "glue:DeleteTable",
                   "glue:BatchDeleteTable",
                   "glue:GetTableVersion",
                   "glue:GetTableVersions",
                   "glue:DeleteTableVersion",
                   "glue:BatchDeleteTableVersion",
                   "glue:CreatePartition",
                   "glue:BatchCreatePartition",
                   "glue:GetPartition",
                   "glue:GetPartitions",
                   "glue:BatchGetPartition",
                   "glue:UpdatePartition",
                   "glue:DeletePartition",
                   "glue:BatchDeletePartition"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Copie o ARN para o perfil de acesso.

## Configurar a aplicação gerenciada pelo cliente do Centro de Identidade do AWS IAM
<a name="using-trusted-identity-propagation-step3"></a>

Para configurar a aplicação gerenciada pelo cliente, siga as etapas em [Configurar aplicações OAuth 2.0 gerenciadas pelo cliente para a propagação de identidade confiável](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html) com as considerações a seguir para o Athena.
+ Em **Tags**, adicione os seguintes pares de chave-valor:
  + **Chave**: **AthenaDriverOidcAppArn**
  + **Valor**: **AccessRoleARN** que foi copiado durante a configuração do perfil de acesso do IAM.
+ Ao [especificar as credenciais da aplicação](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html#customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2-specify-application-credentials), adicione o ARN para o perfil de aplicação do AWS IAM que você copiou durante a configuração do perfil de aplicação do IAM.
+ Em **Aplicações que podem receber solicitações**, escolha **AWS-Lake-Formation-AWS-Glue-Data-Catalog-<account-id>**.
+ Em **Escopos de acesso para aplicação**, selecione **lakeformation:query** para grupos de trabalho habilitados para IAM, ou **lakeformation:query**, **athena:workgroup:read\$1write** e **s3:access\$1grants:read\$1write** para grupos de trabalho habilitados para o Centro de Identidade.

## Configurar a associação de grupo de trabalho
<a name="using-trusted-identity-propagation-step4"></a>

1. No painel de navegação do console do Athena, escolha **Workgroups** (Grupos de trabalho).

1. Escolha um grupo de trabalho na lista e abra a guia **Tags**. 

1. Escolha **Gerenciar tags** e insira o seguinte:

   1. **Chave** – `AthenaDriverOidcAppArn`

   1. **Valor**: o ARN da aplicação do Centro de Identidade do AWS IAM.

1. Escolha **Salvar**.

Depois que os administradores concluírem a configuração única, eles poderão distribuir detalhes essenciais da conexão aos usuários. Os usuários precisam desses cinco parâmetros obrigatórios para executar workloads SQL:

1. **ApplicationRoleARN**: o ARN do perfil de aplicação

1. **JwtWebIdentityToken**: o token JWT para verificação de identidade

1. **WorkgroupARN**: o ARN do grupo de trabalho do Athena

1. **JwtRoleSessionName**: o nome da sessão para o perfil JWT

1. **CredentialsProvider**: a configuração do provedor de credenciais

**nota**  
Simplificamos a configuração da string de conexão por meio de marcação estratégica. Ao marcar adequadamente o grupo de trabalho do Athena Centro de Identidade do AWS IAM e a aplicação gerenciada pelo cliente do , os administradores eliminam a necessidade de os usuários fornecerem `AccessRoleArn` e `CustomerIdcApplicationArn`. O plug-in lida com isso automaticamente usando o perfil de aplicação para localizar as tags necessárias e recuperar os valores de ARN correspondentes para seu fluxo de trabalho.   
Os administradores ainda podem fazer com que os usuários forneçam `AccessRoleArn` ou `CustomerIdcApplicationArn` na string de conexão ajustando as permissões do perfil de aplicação conforme necessário.

## Execute consultas usando drivers do Athena habilitados para propagação de identidade confiável
<a name="using-trusted-identity-propagation-step5"></a>

Baixe a versão mais recente do driver que deseja usar. Para obter mais informações sobre a instalação do JDBC, consulte [Conceitos básicos do driver JDBC 3.x](jdbc-v3-driver-getting-started.md). Você pode optar por instalar os drivers ODBC com base na plataforma compatível. Para obter mais informações, consulte [Conceitos básicos do driver ODBC 2.x](odbc-v2-driver-getting-started.md). Com base no driver que você deseja usar, forneça os parâmetros listados em:
+ [Parâmetros de conexão do plug-in de autenticação JDBC](jdbc-v3-driver-jwt-tip-credentials.md)
+ [Parâmetros de conexão do plug-in de autenticação ODBC](odbc-v2-driver-jwt-tip.md)

**nota**  
A propagação de identidade confiável com drivers só está disponível após a versão 3.6.0 no JDBC e a versão 2.0.5.0 no ODBC.

## Usar drivers do Athena e a propagação de identidade confiável com o DBeaver
<a name="using-trusted-identity-propagation-step6"></a>

1. Baixe o jar JDBC mais recente com dependências do Athena. Para obter mais informações, consulte [Driver JDBC 3.x do Athena](jdbc-v3-driver.md).

1. Abra a aplicação DBeaver em seu computador.

1. Navegue até o menu **Banco de dados** na parte superior da tela e escolha **Gerenciador de drivers**.

1. Escolha **Novo** e, em seguida, **Bibliotecas**.

1. Adicione o driver mais recente e escolha **Localizar classe**. Isso fornecerá um caminho de arquivo como `com.amazon.athena.jdbc.AthenaDriver`.

1. Abra a guia **Configurações** e forneça os campos a seguir

   1. **Nome do driver**: propagação de identidade confiável JDBC do Athena

   1. **Nome da classe** – `com.amazon.athena.jdbc.AthenaDriver`

   1. Selecione a opção **Sem autenticação**.

1. Escolha **Conectar a um banco de dados** e encontre a propagação de identidade confiável JDBC do Athena. Isso levará você ao URL do JDBC. Para obter mais informações, consulte [Configurar o driver](jdbc-v3-driver-getting-started.md#jdbc-v3-driver-configuring-the-driver).

1. Forneça os seguintes detalhes

   1. **Grupo de trabalho**: o grupo de trabalho no qual você deseja executar consultas. Para obter mais informações sobre grupos de trabalho, consulte [WorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html).

   1. **Região**: a Região da AWS onde as consultas serão executadas. Para conferir a lista de regiões, consulte [Amazon Athena endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/athena.html).

   1. **OutputLocation**: o local no Amazon S3 em que você deseja armazenar os resultados da consulta. Para obter informações sobre o local de saída, consulte [ResultConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html).

   1. **CredentialsProvider**: insira `JWT_TIP`.

   1. **ApplicationRoleArn**: o ARN do perfil para habilitar `AssumeRoleWithWebIdentity`. Para obter mais informações sobre perfis de ARN, consulte [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) na referência da API do AWS Security Token Service.

   1. **WorkgroupArn**: o ARN do grupo de trabalho no qual as consultas serão executadas. Ele deve ser o mesmo grupo de trabalho fornecido no campo **Grupo de trabalho**. Para obter mais informações sobre grupos de trabalho, consulte [WorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html).

   1. **JwtRoleSessionName**: o nome da sessão quando você usa as credenciais JWT para autenticação. Pode ser qualquer nome de sua escolha.

   1. **JwtWebIdentityToken**: o token JWT obtido de um provedor de identidade federado externo. Esse token é usado para autenticação no Athena.

      ```
      jdbc:athena://Workgroup=<value>;Region=<region>;OutputLocation=<location>;CredentialsProvider=JWT_TIP;ApplicationRoleArn=<arn>;WorkgroupArn=<arn>;JwtRoleSessionName=JDBC_TIP_SESSION;JwtWebIdentityToken=<token>;
      ```

1. Escolha **OK** e feche a janela. O DBeaver começará a carregar seus metadados após essa etapa e você deverá começar a ver seus catálogos, bancos de dados e tabelas sendo preenchidos.
**nota**  
Se a declaração de JTI estiver presente no token e você escolher **Testar conexão** antes de escolher **OK**, isso impedirá que a mesma JTI seja reutilizada para trocas de tokens. Para obter mais informações, consulte [Pré-requisitos e considerações para emissores de tokens confiáveis](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html#trusted-token-issuer-prerequisites). Para lidar com isso, o JDBC implementa um cache na memória cujo ciclo de vida depende da instância principal do driver. Para ODBC, opcionalmente, existe um [cache de arquivos](odbc-v2-driver-jwt-tip.md#odbc-v2-driver-jwt-tip-file-cache) que permite que credenciais temporárias sejam armazenadas em cache e reutilizadas para reduzir o número de tokens de identidade da web usados durante o ciclo de vida da sessão.

1. Abra o **Editor de consultas SQL** e comece a executar suas consultas. Consulte os [Logs do Cloudtrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) para verificar a identidade propagada do usuário.

# Configure e implante recursos usando AWS CloudFormation
<a name="using-trusted-identity-propagation-cloudformation"></a>

É possível configurar e implantar recursos usando modelos do CloudFormation para começar a usar a propagação de identidade confiável com os drivers do Athena conforme mostrado a seguir.

1. Baixe um modelo do CloudFormation para configurar a aplicação gerenciada pelo cliente do Centro de Identidade do IAM e os perfis de acesso junto com as tags do grupo de trabalho e da aplicação do Centro de Identidade do IAM. Você pode baixá-lo neste [link de modelo do CloudFormation](https://downloads.athena.us-east-1.amazonaws.com/drivers/CFNTemplate/AthenaDriversTrustedIdentityPropagationCFNTemplate.yaml)..

1. Execute o comando `create-stack` da AWS CLI para implantar a pilha do CloudFormation que provisionará os recursos configurados conforme mostrado a seguir.

   ```
   aws cloudformation create-stack \
       --stack-name my-stack \
       --template-url URL_of_the_file_that_contains_the_template_body \
       --parameters file://params.json
   ```

1. Para ver o status do provisionamento de recursos, navegue até o console do CloudFormation. Depois que a criação do cluster for concluída, visualize a nova aplicação do Centro de Identidade do IAM no console do Centro de Identidade. Os perfis do IAM podem ser visualizados no console do IAM. 

   As tags serão associadas ao grupo de trabalho e à aplicação do Centro de Identidade do IAM.

1. Com os perfis e a aplicação criados, é possível usar os drivers do Athena imediatamente. Para usar o driver JDBC, consulte [Parâmetros de conexão do plug-in de autenticação JDBC](jdbc-v3-driver-jwt-tip-credentials.md). Para usar o driver ODBC, consulte [Parâmetros de conexão do plug-in de autenticação ODBC](odbc-v2-driver-jwt-tip.md).