

# Tutorial: configurar o acesso federado ao Athena para usuários do Okta usando o Lake Formation e o JDBC
<a name="security-athena-lake-formation-jdbc-okta-tutorial"></a>

Este tutorial mostra como configurar o Okta, o AWS Lake Formation, as permissões do AWS Identity and Access Management e o driver Athena JDBC para habilitar o uso federado baseado em SAML do Athena. O Lake Formation oferece controle de acesso refinado dos dados que estão disponíveis no Athena para o usuário baseado em SAML. Para definir essa configuração, o tutorial usa o console do desenvolvedor do Okta, os consoles do AWS IAM e do Lake Formation e a ferramenta SQL Workbench/J.
<a name="security-athena-lake-formation-jdbc-okta-tutorial-prerequisites"></a>
**Pré-requisitos**  
Este tutorial pressupõe que você tenha feito o seguinte:
+ Criado uma conta da Amazon Web Services. Para criar uma conta, acesse a [home page da Amazon Web Services](https://aws.amazon.com/).
+ [Configurado um local de resultados de consultas](query-results-specify-location.md) do Athena no Amazon S3.
+ [Registrado um local de bucket de dados do Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) no Lake Formation.
+ Definido um [banco de dados](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) e [tabelas](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) no [Catálogo de Dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) que aponte para seus dados no Amazon S3.
  + Se você ainda não definiu uma tabela, [execute um crawler do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) ou [use o Athena para definir um banco de dados e uma ou mais tabelas](work-with-data.md) para os dados que deseja acessar.
  + Este tutorial usa uma tabela baseada no [conjunto de dados de trajetos de táxi na cidade de Nova York](https://registry.opendata.aws/nyc-tlc-trip-records-pds/) disponível no [Registry of Open Data on AWS](https://registry.opendata.aws/) (Registro aberto de dados na ). O tutorial usa o nome do banco de dados `tripdb` e o nome da tabela`nyctaxi`.

**Topics**
+ [Etapa 1: Criar uma conta do Okta](#security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account)
+ [Etapa 2: Adicionar usuários e grupos ao Okta](#security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication)
+ [Etapa 3: Configurar uma aplicação do Okta para autenticação SAML](#security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication)
+ [Etapa 4: Criar um provedor de identidade SAML para AWS e uma função do IAM para acesso ao Lake Formation](#security-athena-lake-formation-jdbc-okta-tutorial-step-4-create-an-aws-saml-identity-provider-and-lake-formation-access-IAM-role)
+ [Etapa 5: Adicionar a função do IAM e o provedor de identidade SAML à aplicação do Okta](#security-athena-lake-formation-jdbc-okta-tutorial-step-5-update-the-okta-application-with-the-aws-role-and-saml-identity-provider)
+ [Etapa 6: Conceder permissões de usuário e grupo pelo AWS Lake Formation](#security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation)
+ [Etapa 7: Verificar o acesso pelo cliente Athena JDBC](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client)
+ [Conclusão](#security-athena-lake-formation-jdbc-okta-tutorial-conclusion)
+ [Recursos relacionados](#security-athena-lake-formation-jdbc-okta-tutorial-related-resources)

## Etapa 1: Criar uma conta do Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-1-create-an-okta-account"></a>

Este tutorial usa o Okta como provedor de identidade baseado em SAML. Se você ainda não tem uma conta do Okta, pode criar uma gratuitamente. Ela é necessária para que você possa criar uma aplicação do Okta para autenticação SAML.

**Para criar uma conta do Okta**

1. Para usar o Okta, navegue até a [página de cadastro de desenvolvedor do Okta](https://developer.okta.com/signup/) e crie uma conta de avaliação gratuita. O Developer Edition Service é gratuito dentro dos limites especificados pelo Okta em [developer.okta.com/pricing](https://developer.okta.com/pricing).

1. Quando você receber o e-mail de ativação, ative sua conta. 

   Um nome de domínio do Okta será atribuído a você. Salve-o para referência. Mais tarde, você usará o nome de domínio (*<okta-idp-domain>*) na string JDBC que se conecta ao Athena.

## Etapa 2: Adicionar usuários e grupos ao Okta
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-2-set-up-an-okta-application-for-saml-authentication"></a>

Nesta etapa, você usa o console do Okta para executar as seguintes tarefas:
+ Criar dois usuários do Okta.
+ Criar dois grupos do Okta.
+ Adicionar um usuário a cada grupo do Okta.

**Para adicionar usuários ao Okta**

1. Depois de ativar sua conta do Okta, faça login como usuário administrativo no domínio do Okta atribuído.

1. No painel de navegação à esquerda, escolha **Directory** (Diretório) e **People** (Pessoas).

1. Escolha **Add Person** (Adicionar pessoa) para adicionar um novo usuário que acessará o Athena por meio do driver JDBC.  
![\[Escolha Add Person (Adicionar pessoa).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-3.png)

1. Na caixa de diálogo **Add Person** (Adicionar pessoa), insira as informações necessárias.
   + Insira os valores em **First name** (Nome) e **Last name** (Sobrenome). Este tutorial usa o *athena-okta-user*.
   + Insira um **Username** (Nome de usuário) e **Primary email** (E-mail principal). Este tutorial usa o *athena-okta-user@anycompany.com*.
   + Em **Password** (Senha), escolha **Set by admin** (Definir por administrador) e insira uma senha. Neste tutorial, a opção **User must change password on first login** (O usuário deve alterar a senha no primeiro login) está desmarcada, mas seus requisitos de segurança podem variar.  
![\[Adicione um usuário à aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4.png)

1. Escolha **Save and Add Another** (Salvar e adicionar outro).

1. Insira as informações do outro usuário. Este exemplo adiciona o usuário analista de negócios *athena-ba-user@anycompany.com*.  
![\[Adicione um usuário à aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4a.png)

1. Escolha **Salvar**.

No procedimento a seguir, você concede acesso a dois grupos do Okta por meio do driver Athena JDBC adicionando um grupo “Business Analysts” e um grupo “Developer”.

**Para adicionar grupos do Okta**

1. No painel de navegação do Okta, escolha **Directory** (Diretório) e **Groups** (Grupos).

1. Na página **Groups** (Grupos), escolha **Add Group** (Adicionar grupo).  
![\[Escolha Adicionar grupo.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4c.png)

1. Na caixa de diálogo **Add Group** (Adicionar grupo), insira as informações necessárias.
   + Em **Name** (Nome), insira *lf-business-analyst*.
   + Em **Group Description** (Descrição do grupo), insira *Business Analysts* (Analistas de negócios).  
![\[Adicionar um grupo do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4d.png)

1. Escolha **Adicionar grupo**.

1. Na página **Groups** (Grupos), escolha **Add Group** (Adicionar grupo) novamente. Desta vez, você insere as informações do grupo Developer.

1. Insira as informações necessárias.
   + Em **Name** (Nome), insira *lf-developer*.
   + Em **Group Description** (Descrição do grupo), insira *Developers* (Desenvolvedores).

1. Escolha **Adicionar grupo**.

Agora que você tem dois usuários e dois grupos, está pronto para adicionar um usuário a cada grupo.

**Para adicionar usuários a grupos**

1. Na página **Groups** (Grupos), escolha o grupo **lf-developer** que você acabou de criar. Adicione a esse grupo um dos usuários do Okta que você criou como desenvolvedor.  
![\[Escolha lf-developer.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4f.png)

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

1. Na lista **Not Members** (Não membros), escolha **athena-okta-user**.   
![\[Escolha um usuário para adicionar à lista de membros.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4h.png)

   A entrada referente ao usuário é transferida da lista **Not Members** (Não membros) à esquerda para a lista **Members** (Membros) à direita.   
![\[Usuário do Okta adicionado a um grupo do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4i.png)

1. Escolha **Salvar**.

1. Escolha **Back to Group** (Voltar ao grupo) ou **Directory** (Diretório) e selecione **Groups** (Grupos).

1. Escolha o grupo **lf-business-analyst**.

1. Escolha **Manage People** (Gerenciar pessoas).

1. Adicione o **athena-ba-user** à lista **Members** (Membros) do grupo **lf-business-analyst** e escolha **Save** (Salvar). 

1. Escolha **Back to Group** (Voltar ao grupo) ou **Directory** (Diretório) e selecione **Groups** (Grupos).

   A página **Groups** (Grupos) agora mostra cada grupo com um usuário do Okta.  
![\[Um usuário foi adicionado a cada grupono console do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-4j.png)

## Etapa 3: Configurar uma aplicação do Okta para autenticação SAML
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-3-set-up-an-okta-application-for-saml-authentication"></a>

Nesta etapa, você usa o console de desenvolvedor do Okta para executar as seguintes tarefas:
+ Adicionar uma aplicação do SAML para usar com a AWS.
+ Atribuir a aplicação a um usuário do Okta.
+ Atribuir a aplicação a um grupo do Okta.
+ Baixe os metadados resultantes do provedor de identidade para uso posterior com a AWS.

**Para adicionar uma aplicação para autenticação SAML**

1. No painel de navegação do Okta, escolha **Applications** (Aplicações), **Applications** (Aplicações) para configurar uma aplicação do Okta para autenticação SAML no Athena.

1. Clique em **Browse App Catalog** (Procurar no catálogo de aplicações).

1. Na caixa de pesquisa, insira **Redshift**.

1. Escolha **Amazon Web Services Redshift**. Neste tutorial, a aplicação do Okta usa a integração existente com SAML para Amazon Redshift.  
![\[Escolha Amazon Web Services Redshift.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-7.png)

1. Na página **Amazon Web Services Redshift**, escolha **Add** (Adicionar) para criar uma aplicação baseada em SAML para o Amazon Redshift.  
![\[Escolha Add (Adicionar) para criar uma aplicação baseada em SAML.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-8.png)

1. Em **Application label** (Rótulo da aplicação), insira `Athena-LakeFormation-Okta` e escolha **Done** (Concluído).  
![\[Insira um nome para a aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-9.png)

Agora que você criou uma aplicação do Okta, pode atribuí-la aos usuários e grupos criados.

**Para atribuir uma aplicação a usuários e grupos**

1. Na página **Applications** (Aplicações), escolha a aplicação **Athena-LakeFormation-Okta**.

1. Na guia **Assignments** (Atribuições), escolha **Assign** (Atribuir), **Assign to People** (Atribuir a pessoas).  
![\[Escolha Assign (Atribuir), Assign to People (Atribuir a pessoas).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-10.png)

1. Na caixa de diálogo **Assign Athena-LakeFormation-Okta to People** (Atribuir Athena-LakeFormation-Okta a pessoas), encontre o usuário **athena-okta-user** que você criou.

1. Escolha **Assign** (Atribuir) para atribuir o usuário à aplicação.  
![\[Selecione Assign (Atribuir).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-11.png)

1. Escolha **Save and Go Back** (Salvar e voltar).

1. Selecione **Concluído**.

1. Na guia **Assignments** (Atribuições) da aplicação **Athena-LakeFormation-Okta**, escolha **Assign** (Atribuir), **Assign to Groups** (Atribuir a grupos). 

1. Em **lf-business-analyst**, escolha **Assign** (Atribuir) para atribuir a aplicação **Athena-LakeFormation-Okta** ao grupo **lf-business-analyst** e escolha **Done** (Concluído).  
![\[Atribuir uma aplicação do Okta a um grupo de usuários do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12b.png)

   O grupo aparecerá na lista de grupos da aplicação.  
![\[A aplicação do Okta é atribuída ao grupo do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-12c.png)

Agora você está pronto para baixar os metadados da aplicação do provedor de identidade para uso com a AWS.

**Para baixar os metadados da aplicação**

1. Escolha a guia **Sign On** (Logon) da aplicação do Okta e clique com o botão direito em **Identity Provider metadata** (Metadados do provedor de identidade).  
![\[Clique com o botão direito em Identity Provider metadata (Metadados do provedor de identidade).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-13.png)

1. Escolha **Save Link As** (Salvar link como) para salvar os metadados do provedor de identidade, que estão no formato XML, em um arquivo. Dê a ele um nome que você reconhece (por exemplo, `Athena-LakeFormation-idp-metadata.xml`).  
![\[Salvar os metadados do provedor de identidade.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-14.png)

## Etapa 4: Criar um provedor de identidade SAML para AWS e uma função do IAM para acesso ao 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>

Nesta etapa, use o console do AWS Identity and Access Management (IAM) para executar as seguintes tarefas:
+ Criar um provedor de identidade para AWS.
+ Criar uma função do IAM para acesso ao Lake Formation.
+ Adicionar a política gerenciada AmazonAthenaFullAccess à função.
+ Adicionar uma política para Lake Formation e AWS Glue à função.
+ Adicionar uma política para os resultados das consultas do Athena à função.

**Para criar um provedor de identidade SAML para AWS**

1. Faça login no **console** da **conta da Amazon Web Services** como **administrador da conta da Amazon Web Services** e navegue até o console do **IAM** ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

1. No painel de navegação, escolha **Identity providers** (Provedores de identidade) e clique em **Add provider** (Adicionar provedor).

1. Na tela **Configure provider** (Configurar provedor), insira as seguintes informações:
   + Em **Provider type** (Tipo de provedor), escolha **SAML**.
   + Em **Provider name** (Nome do provedor), insira `AthenaLakeFormationOkta`.
   + Em **Metadata document** (Documento de metadados), use a opção **Choose file** (Escolher arquivo) para carregar o arquivo XML de metadados do provedor de identidade (IdP) que você baixou.

1. Escolha **Add provider** (Adicionar provedor).

Em seguida, você cria uma função do IAM para acesso ao AWS Lake Formation. Adicione duas políticas em linha à função. Uma política concede permissões para acessar o Lake Formation e as APIs do AWS Glue. A outra política concede acesso ao Athena e ao local de resultados das consultas do Athena no Amazon S3.

**Para criar uma função do IAM para acesso ao AWS Lake Formation**

1. No painel de navegação do console do IAM, escolha **Roles** (Funções) e **Create role** (Criar função).

1. Na página **Create role** (Criar função), siga estas etapas:  
![\[Configure uma função do IAM para usar o SAML 2.0.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-20.png)

   1. Em **Select type of trusted entity** (Selecionar tipo de entidade confiável), escolha **SAML 2.0 Federation**.

   1. Em **SAML provider** (Provedor SAML), selecione **AthenaLakeFormationOkta**.

   1. Em **SAML provider** (Provedor SAML), selecione a opção **Allow programmatic and Console de gerenciamento da AWS access** (Permitir acesso programático e por console).

   1. Escolha **Próximo: Permissões**.

1. Na página **Attach Permissions policies** (Anexar políticas de permissões), em **Filter policies** (Filtrar políticas), insira **Athena**.

1. Selecione a política gerenciada **AmazonAthenaFullAccess** e escolha **Next: Tags** (Próximo: etiquetas).  
![\[Anexar a política gerenciada AmazonAthenaFullAccess à função do IAM.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-21.png)

1. Na página **Add tags (Adicionar tags)**, escolha **Next: Review(Próximo: Revisar)**.

1. Na página **Review** (Revisão), em **Role name** (Nome da função), insira um nome para a função (por exemplo, *Athena-LakeFormation-OktaRole*) e escolha **Create role** (Criar função).  
![\[Insira um nome para a função do IAM.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-22.png)

Na sequência, adicione as políticas em linha que permitem o acesso ao Lake Formation, às APIs do AWS Glue e aos resultados das consultas do Athena no Amazon S3. 

Sempre que você usar as políticas do IAM, siga as práticas recomendadas do IAM. Para obter mais informações, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Manual do usuário do IAM*.

**Para adicionar uma política em linha à função para o Lake Formation e o AWS Glue**

1. Na lista de funções no console do IAM, escolha a recém-criada `Athena-LakeFormation-OktaRole`.

1. Na página **Summary** (Resumo) da função, na guia **Permissions** (Permissões), escolha **Add inline policy** (Adicionar política em linha).

1. Na página **Create policy (Criar política)**, escolha **JSON**.

1. Adicione uma política em linha, semelhante à mostrada abaixo, que concede acesso ao Lake Formation e às APIs do 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. Selecione **Revisar política**.

1. Em **Name** (Nome), insira um nome para a política (por exemplo, **LakeFormationGlueInlinePolicy**).

1. Escolha **Criar política**.

**Para adicionar uma política em linha à função para o local de resultados das consultas do Athena**

1. Na página **Summary** (Resumo) da função `Athena-LakeFormation-OktaRole`, na guia **Permissions** (Permissões), escolha **Add inline policy** (Adicionar política em linha).

1. Na página **Create policy (Criar política)**, escolha **JSON**.

1. Adicione uma política em linha, semelhante à mostrada abaixo, que permite o acesso da função ao local de resultados das consultas do Athena. Substitua os espaços reservados *<athena-query-results-bucket>* no exemplo pelo nome do seu bucket do 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. Selecione **Revisar política**.

1. Em **Name** (Nome), insira um nome para a política (por exemplo, **AthenaQueryResultsInlinePolicy**).

1. Escolha **Criar política**.

Na sequência, copie o ARN da função de acesso do Lake Formation e o ARN do provedor SAML criado. Eles serão necessários para você configurar a aplicação SAML do Okta na próxima seção do tutorial.

**Para copiar o ARN da função e o ARN do provedor de identidade SAML**

1. No console do IAM, na página **Summary** (Resumo) da função `Athena-LakeFormation-OktaRole`, escolha o ícone **Copy to clipboard** (Copiar para área de transferência) ao lado de **Role ARN** (ARN da função). O ARN tem o seguinte formato:

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

1. Salve o ARN completo com segurança para referência futura.

1. No painel de navegação do console do IAM, escolha **Identity providers** (Provedores de identidade).

1. Escolha o provedor **AthenaLakeFormationOkta**.

1. Na página **Summary** (Resumo), escolha o ícone **Copy to clipboard** (Copiar para área de transferência) ao lado de **Provider ARN** (ARN do provedor). O Nome de região da Amazon (ARN) deve se parecer com o seguinte:

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

1. Salve o ARN completo com segurança para referência futura.

## Etapa 5: Adicionar a função do IAM e o provedor de identidade SAML à aplicação do 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>

Nesta etapa, você retorna ao console de desenvolvedor do Okta e executa as seguintes tarefas:
+ Adicionar atributos de URL do Lake Formation de usuário e de grupo à aplicação do Okta.
+ Adicionar o ARN do provedor de identidade e da função do IAM à aplicação do Okta.
+ Copiar o ID da aplicação do Okta. O ID da aplicação do Okta é necessário no perfil JDBC que se conecta ao Athena.

**Para adicionar atributos de URL do Lake Formation de usuário e de grupo à aplicação do Okta**

1. Faça login no console de desenvolvedor do Okta.

1. Escolha a guia **Applications** (Aplicações) e selecione a aplicação `Athena-LakeFormation-Okta`.

1. Escolha a guia **Sign On** (Logon) da aplicação e selecione **Edit** (Editar).  
![\[Edite a aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-24.png)

1. Escolha **Attributes (optional)** (Atributos (opcional)) para expandi-los.  
![\[Adicionar atributos de URL do Lake Formation de usuário à aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25.png)

1. Em **Attribute Statements (optional)** (Instruções do atributo (opcional)), adicione o seguinte atributo:
   + Em **Nome**, digite **https://lakeformation.amazon.com/SAML/Attributes/Username**.
   + Em **Value** (Valor), insira **user.login**

1. Em **Group Attribute Statements (optional)** (Instruções do atributo de grupo (opcional)), adicione o seguinte atributo:
   + Em **Nome**, digite **https://lakeformation.amazon.com/SAML/Attributes/Groups**.
   + Em **Name format** (Formato de nome), insira **Basic**
   + Em **Filter** (Filtro), escolha **Matches regex** (Corresponde a regex) e insira **.\$1** na caixa do filtro.  
![\[Adicionar atributos de URL do Lake Formation de grupo à aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-25a.png)

1. Role para baixo até a seção **Advanced Sign-On Settings** (Configurações avançadas de logon), na qual você adiciona os ARNs do provedor de identidade e da função do IAM à aplicação do Okta.

**Para adicionar os ARNs do provedor de identidade e da função do IAM à aplicação do Okta**

1. Em **Idp ARN and Role ARN** (ARN do ldp e ARN da função), insira o ARN do provedor de identidade da AWS e o ARN da função como valores separados por vírgulas no formato *<saml-arn>*,*<role-arn>*. A string combinada deve ter a seguinte aparência:

   ```
   arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta,arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
   ```  
![\[Inserir o ARN do provedor de identidade e o ARN da função do IAM na aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-26.png)

1. Escolha **Salvar**.

Em seguida, copie o ID da aplicação do Okta. Você precisará dele mais tarde para a string JDBC que se conecta ao Athena.

**Para localizar e copiar o ID da aplicação do Okta.**

1. Escolha a guia **General** (Geral) da aplicação do Okta.  
![\[Escolha a guia General (Geral) da aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-27.png)

1. Rola para baixo até a seção **App Embed Link** (Link de incorporação de aplicação).

1. Em **Embed Link** (Link de incorporação), copie e salve a parte do URL da aplicação do Okta com segurança. O ID da aplicação do Okta é a parte do URL que vem depois de `amazon_aws_redshift/`, mas antes da próxima barra. Por exemplo, se o URL incluir `amazon_aws_redshift/aaa/bbb`, o ID da aplicação será `aaa`.   
![\[Copie o ID da aplicação do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-28.png)

**nota**  
O link de incorporação não pode ser usado para fazer login diretamente no console do Athena para a exibição bancos de dados. As permissões do Lake Formation para usuários e grupos SAML são reconhecidas somente quando você utiliza o driver JDBC ou ODBC para enviar consultas ao Athena. Para exibir os bancos de dados, é possível utilizar usar a ferramenta SQL Workbench/J, que usa o driver JDBC para se conectar ao Athena. A ferramenta SQL Workbench/J é discutida em [Etapa 7: Verificar o acesso pelo cliente Athena JDBC](#security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client).

## Etapa 6: Conceder permissões de usuário e grupo pelo AWS Lake Formation
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-6-grant-permissions-through-aws-lake-formation"></a>

Nesta etapa, você usa o console do Lake Formation para conceder permissões em uma tabela ao usuário e grupo do SAML. Você executa as seguintes tarefas:
+ Especificar o ARN do usuário SAML do Okta e as permissões do usuário associadas na tabela.
+ Especificar o ARN do grupo SAML do Okta e as permissões do grupo associadas na tabela.
+ Verificar as permissões que você concedeu.

**Para conceder permissões no Lake Formation para o usuário do Okta**

1. Faça login como administrador de data lake no Console de gerenciamento da AWS. 

1. 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, escolha **Tables** (Tabelas) e selecione a tabela à qual você deseja conceder as permissões. Este tutorial usa a tabela `nyctaxi` do banco de dados `tripdb`.  
![\[Escolha a tabela à qual deseja conceder as permissões.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-29.png)

1. Em **Actions** (Ações), escolha **Grant** (Conceder).  
![\[Escolha Grant (Conceder).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-30.png)

1. Na caixa de diálogo **Grant permissions** (Conceder permissões), insira as seguintes informações:

   1. Em **Usuários e grupos do SAML e do Amazon Quick**, insira o ARN do usuário SAML do Okta no seguinte formato:

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

   1. Em **Columns** (Colunas), **Choose filter type** (Escolher tipo de filtro), escolha **Include columns** (Incluir colunas) ou **Exclude columns** (Excluir colunas) conforme desejado.

   1. Use o menu suspenso **Choose one or more columns** (Escolher uma ou mais colunas) do filtro para especificar as colunas que você deseja incluir ou excluir do usuário.

   1. Em **Table permissions** (Permissões de tabela), escolha **Select** (Selecionar). Este tutorial concede apenas as permissões `SELECT`, seus requisitos podem variar.  
![\[Conceder permissões no nível da tabela e da coluna a um usuário do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31.png)

1. Escolha **Grant** (Conceder).

Agora você executa as mesmas etapas para o grupo do Okta.

**Para conceder permissões no Lake Formation ao grupo do Okta**

1. Na página **Tables** (Tabelas) do console do Lake Formation, verifique se a tabela **nyctaxi** ainda está selecionada.

1. Em **Actions** (Ações), escolha **Grant** (Conceder).

1. Na caixa de diálogo **Grant permissions** (Conceder permissões), insira as seguintes informações:

   1. Em **Usuários e grupos do SAML e do Amazon Quick**, insira o ARN do grupo SAML do Okta no seguinte formato:

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

   1. Em **Columns** (Colunas), **Choose filter type** (Escolher tipo de filtro), escolha **Include columns** (Incluir colunas).

   1. Em **Choose one or more columns** (Escolher uma ou mais colunas), escolha as primeiras três colunas da tabela.

   1. Em **Table permissions** (Permissões de tabela), escolha as permissões de acesso específicas para conceder. Este tutorial concede apenas as permissões `SELECT`, seus requisitos podem variar.  
![\[Conceder permissões de tabela a um grupo do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-31b.png)

1. Escolha **Grant** (Conceder).

1. Para verificar as permissões concedidas, escolha **Actions** (Ações), **View permissions** (Visualizar permissões).  
![\[Escolha View permissions (Visualizar permissões) para verificar as permissões concedidas.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-32.png)

   A página **Permissões de dados** da tabela `nyctaxi` mostra as permissões do **athena-okta-user** e do grupo **lf-business-analyst**.  
![\[Visualizar as permissões concedidas ao usuário e grupo do Okta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-33.png)

## Etapa 7: Verificar o acesso pelo cliente Athena JDBC
<a name="security-athena-lake-formation-jdbc-okta-tutorial-step-7-verify-access-through-athena-jdbc-client"></a>

Agora você está pronto para usar um cliente JDBC para executar uma conexão de teste com o Athena como usuário SAML do Okta. 

Nesta seção, você pode executar as seguintes tarefas:
+ Preparar o cliente de teste: baixe o driver Athena JDBC, instale o SQL Workbench e adicione o driver ao Workbench. Este tutorial usa o SQL Workbench para acessar o Athena por meio da autenticação do Okta e verificar as permissões do Lake Formation.
+ No SQL Workbench:
  + Crie uma conexão para o usuário do Okta no Athena.
  + Execute as consultas de teste como o usuário do Okta no Athena.
  + Crie e teste uma conexão para o usuário “analista de negócios”.
+ No console do Okta, adicione o usuário “analista de negócios” ao grupo de desenvolvedores.
+ No console do Lake Formation, configure as permissões de tabela para o grupo de desenvolvedores.
+ No SQL Workbench, execute as consultas de teste como o usuário “analista de negócios” e verifique como a alteração nas permissões afeta os resultados.

**Para preparar o cliente de teste**

1. Baixe e extraia o driver Athena JDBC compatível com o Lake Formation (2.0.14 ou versão mais recente) em [Conectar ao Amazon Athena com JDBC](connect-with-jdbc.md).

1. Baixe e instale a ferramenta de consulta SQL gratuita [SQL Workbench/J](https://www.sql-workbench.eu/index.html), disponível na licença modificada do Apache 2.0.

1. No SQL Workbench, escolha **File** (Arquivo) e **Manage Drivers** (Gerenciar drivers).  
![\[Escolha Manage Drivers (Gerenciar drivers).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-1.png)

1. Na caixa de diálogo **Manage Drivers** (Gerenciar drivers), execute as seguintes etapas:

   1. Escolha o ícone do novo driver.

   1. Em **Name** (Nome), insira **Athena**.

   1. Em **Library** (Biblioteca), procure e escolha o arquivo `.jar` do Simba Athena JDBC que você acabou de baixar.

   1. Escolha **OK**.  
![\[Adicionar o driver Athena JDBC ao SQL Workbench.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-2.png)

Agora você está pronto para criar e testar uma conexão para o usuário do Okta no Athena.

**Para criar uma conexão para o usuário do Okta**

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

1. Na caixa de diálogo **Connection profile** (Perfil de conexão), crie uma conexão inserindo as seguintes informações:
   + Na caixa do nome, insira **Athena\$1Okta\$1User\$1Connection**.
   + Em **Driver**, escolha o driver Simba Athena JDBC.
   + Em **URL**, realize um destes procedimentos:
     + Para usar um URL de conexão, insira uma string de conexão de linha única. O exemplo a seguir contém quebras de linha para facilitar a leitura.

       ```
       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 usar um URL baseado no perfil da AWS, execute as seguintes etapas:

       1. Configure um [perfil da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) que tenha um arquivo de credenciais da AWS, como mostrado no exemplo a seguir.

          ```
          [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. Em **URL**, insira uma string de conexão de linha única, como mostrado no exemplo a seguir. O exemplo contém quebras de linha para facilitar a leitura.

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

     Observe que esses exemplos são representações básicas do URL necessário para se conectar ao Athena. Para ver a lista completa dos parâmetros permitidos na URL, consulte a [documentação do JDBC](connect-with-jdbc.md).

   A imagem a seguir mostra um perfil de conexão do SQL Workbench que usa um URL de conexão.  
![\[Um perfil de conexão no SQL Workbench.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-4.png)

Agora que você estabeleceu uma conexão para o usuário do Okta, pode testá-la recuperando alguns dados.

**Para testar a conexão do usuário do Okta**

1. Escolha **Test** (Testar) e verifique se a conexão foi estabelecida.

1. Na janela **Statement** (Instrução) do SQL Workbench, execute o comando SQL `DESCRIBE` a seguir. Verifique se todas as colunas são exibidas.

   ```
   DESCRIBE "tripdb"."nyctaxi"
   ```  
![\[Todas as colunas exibidas.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-5.png)

1. Na janela **Statement** (Instrução) do SQL Workbench, execute o comando SQL `SELECT` a seguir. Verifique se todas as colunas são exibidas.

   ```
   SELECT * FROM tripdb.nyctaxi LIMIT 5
   ```  
![\[Verifique se todas as colunas são exibidas.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-6.png)

Na sequência, verifique se o **athena-ba-user**, como membro do grupo **lf-business-analyst**, tem acesso apenas às primeiras três colunas da tabela que você especificou anteriormente no Lake Formation.

**Para verificar o acesso do **athena-ba-user****

1. No SQL Workbench, na caixa de diálogo **Connection profile** (Perfil de conexão), crie outro perfil de conexão.
   + Para o nome do perfil de conexão, insira ** Athena\$1Okta\$1Group\$1Connection**.
   + Em **Driver**, escolha o driver Simba Athena JDBC.
   + Em **URL**, realize um destes procedimentos:
     + Para usar um URL de conexão, insira uma string de conexão de linha única. O exemplo a seguir contém quebras de linha para facilitar a leitura.

       ```
       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 usar um URL baseado no perfil da AWS, execute as seguintes etapas:

       1. Configure um perfil da AWS que tenha um arquivo de credenciais, como mostrado no exemplo a seguir.

          ```
          [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. Em **URL**, insira uma string de conexão de linha única, como mostrado a seguir. O exemplo contém quebras de linha para facilitar a leitura.

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

1. Escolha **Test** (Testar) para confirmar se a conexão foi estabelecida.

1. Na janela **SQL Statement** (Instrução SQL), execute os mesmos comandos SQL `DESCRIBE` e `SELECT` de antes e confira os resultados.

   Como o **athena-ba-user** é membro do grupo **lf-business-analyst**, apenas as três primeiras colunas que você especificou no console do Lake Formation são retornadas.  
![\[Somente as três primeiras colunas são retornadas.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-7.png)  
![\[Dados das três primeiras colunas.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-8.png)

Depois disso, retorne ao console do Okta para adicionar o `athena-ba-user` ao grupo do Okta `lf-developer`.

**Para adicionar o athena-ba-user ao grupo lf-developer**

1. Faça login no console do Okta como usuário administrativo do domínio do Okta atribuído.

1. Escolha **Directory** (Diretório) e **Groups** (Grupos).

1. Na página Groups (Grupos), escolha o grupo **lf-developer**.  
![\[Escolha o grupo lf-developer.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-9.png)

1. Escolha **Manage People** (Gerenciar pessoas).

1. Na lista **Not Members** (Não membros), escolha o **athena-ba-user** para adicionar ao **grupo lf-developer**.

1. Escolha **Salvar**.

Agora você retorna ao console do Lake Formation para configurar as permissões de tabela do grupo **lf-developer**.

**Para configurar as permissões de tabela do grupo lf-developer**

1. Faça login no console do Lake Formation como administrador do data lake.

1. No painel de navegação, selecione **Tabelas**.

1. Selecione a tabela **nyctaxi**.

1. Escolha **Actions** (Ações), **Grant** (Conceder).

1. Na caixa de diálogo **Grant Permissions** (Conceder permissões), insira as seguintes informações:
   + Em **Usuários e grupos do SAML e do Amazon Quick**, insira o ARN do grupo SAML lf-developer do Okta no seguinte formato:
   + Em **Columns** (Colunas), **Choose filter type** (Escolher tipo de filtro), escolha **Include columns** (Incluir colunas).
   + Escolha a coluna **trip\$1type**.
   + Em **Table permissions** (Permissões de tabela), escolha **SELECT**.

1. Escolha **Grant** (Conceder).

Agora você pode usar o SQL Workbench para verificar a alteração nas permissões do grupo **lf-developer**. A alteração deve ser refletida nos dados disponíveis ao **athena-ba-user**, que agora é membro do grupo **lf-developer**.

**Para verificar a alteração nas permissões do athena-ba-user**

1. Feche e reabra o programa SQL Workbench.

1. Conecte-se ao perfil do **athena-ba-user**.

1. Na janela **Statement** (Instrução), emita as mesmas instruções SQL que você executou antes:

   Desta vez, a coluna **trip\$1type** é exibida.  
![\[A quarta coluna está disponível para consulta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-10.png)

   Como o **athena-ba-user** agora é membro dos dois grupos **lf-developer** e **lf-business-analyst**, a combinação das permissões do Lake Formation desses grupos determina as colunas que são retornadas.  
![\[A quarta coluna nos resultados dos dados.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/security-athena-lake-formation-jdbc-okta-tutorial-verify-access-11.png)

## Conclusão
<a name="security-athena-lake-formation-jdbc-okta-tutorial-conclusion"></a>

Neste tutorial, você configurou a integração do Athena com o AWS Lake Formationusando o Okta como provedor SAML. Você usou o Lake Formation e o IAM para controlar os recursos disponíveis ao usuário SAML no Catálogo de dados do AWS Glue do seu data lake.

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

Para obter informações relacionadas, consulte os recursos a seguir.
+ [Conectar ao Amazon Athena com JDBC](connect-with-jdbc.md)
+ [Habilitar o acesso federado à API do Athena](access-federation-saml.md)
+ [AWS Lake Formation Guia do desenvolvedor do](https://docs.aws.amazon.com/lake-formation/latest/dg/)
+ [Granting and revoking Data Catalog permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) (Conceder e revogar permissões de catálogo de dados) no *Guia do desenvolvedor do AWS Lake Formation*.
+ [Provedores de identidade e federação](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) no *Guia do usuário do IAM*.
+ [Criação de provedores de identidade SAML do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) no *Guia do usuário do IAM*.
+ [Habilitar a federação na AWS usando Windows Active Directory, ADFS e SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/) no *blog de segurança da AWS*.