Conectar o Athena ao Centro de Identidade do IAM - Amazon Athena

Conectar o Athena ao Centro de Identidade do IAM

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

Siga o guia Configurar um emissor de tokens confiável para configurar um emissor de tokens confiável. Isso criará um AWS IAM Identity Center.

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.

Configurar perfis do IAM

Configurar perfil de aplicação do IAM

  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

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

  3. 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.

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRoleWithWebIdentity" ], "Condition": { "StringEquals": { "issuer:aud": "identity-provider-audience" } } } ] }
  4. Adicione a política em linha a seguir para conceder acesso ao usuário para as permissões CreateTokenWithIAM, ListTagsForResource e AssumeRoleWithWebIdentity.

    { "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.

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

Configurar o perfil de acesso do IAM

  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

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

  3. 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.

    2. 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.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/application-role-arn" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] }, { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRole" ] } ] }
  4. Adicione a seguinte política em linha para conceder acesso a fluxos de trabalho do driver:

    { "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": "*" } ] }
  5. Copie o ARN para o perfil de acesso.

Configurar a aplicação do cliente do AWS IAM Identity Center

Para configurar a aplicação do cliente, siga as etapas em Configurar aplicações OAuth 2.0 gerenciadas pelo cliente para a propagação de identidade confiável 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, 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 a aplicar, escolha lakeformation:query.

Configurar a associação de grupo de trabalho

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

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

  3. Escolha Gerenciar tags e insira o seguinte:

    1. ChaveAthenaDriverOidcAppArn

    2. Valor: o ARN da aplicação do AWS IAM Identity Center.

  4. 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

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

  3. WorkgroupARN: o ARN do grupo de trabalho do Athena

  4. JwtRoleSessionName: o nome da sessão para o perfil JWT

  5. 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 AWS IAM Identity Center 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

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. 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. Com base no driver que você deseja usar, forneça os parâmetros listados em:

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

  1. Baixe o jar JDBC mais recente com dependências do Athena. Para obter mais informações, consulte Driver JDBC 3.x do Athena.

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

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

  4. Escolha Novo e, em seguida, Bibliotecas.

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

  6. 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

    2. Nome da classe: com.amazon.athena.jdbc.AthenaDriver

    3. Selecione a opção Sem autenticação.

  7. 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.

  8. 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.

    2. 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.

    3. 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.

    4. CredentialsProvider: insira JWT_TIP.

    5. ApplicationRoleArn: o ARN do perfil para habilitar AssumeRoleWithWebIdentity. Para obter mais informações sobre perfis de ARN, consulte AssumeRole na referência da API do AWS Security Token Service.

    6. 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.

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

    8. 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>;
  9. 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. 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 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.

  10. Abra o Editor de consultas SQL e comece a executar suas consultas. Consulte os Logs do Cloudtrail para verificar a identidade propagada do usuário.