Uso do Amazon S3 Access Grants com o Amazon EMR - Amazon EMR

Uso do Amazon S3 Access Grants com o Amazon EMR

Visão geral do S3 Access Grants para o Amazon EMR

Com as versões 6.15.0 e superiores do Amazon EMR, o Amazon S3 Access Grants fornece uma solução de controle de acesso escalável que você pode usar para aumentar o acesso aos dados do Amazon S3 por meio do Amazon EMR. Se você tiver uma configuração de permissão complexa ou grande para os dados do S3, poderá usar a funcionalidade Access Grants para escalar as permissões de dados do S3 para usuários, perfis e aplicações no seu cluster.

Use o S3 Access Grants para aumentar o acesso aos dados do Amazon S3 além das permissões concedidas pelo perfil de runtime ou pelos perfis do IAM anexados às identidades com acesso ao seu cluster do EMR. Para obter mais informações, consulte Gerenciar o acesso com o S3 Access Grants no Guia do usuário do Amazon S3.

Para ver as etapas de uso do S3 Access Grants com outras implantações do Amazon EMR, consulte a seguinte documentação:

Como o Amazon EMR funciona com o S3 Access Grants

O Amazon EMR 6.15.0 e versões superiores oferecem uma integração nativa com o S3 Access Grants. Você pode habilitar o S3 Access Grants no Amazon EMR e executar trabalhos do Spark. Quando um trabalho do Spark faz uma solicitação de dados do S3, o Amazon S3 fornece credenciais temporárias que têm como escopo o bucket, prefixo ou objeto específico.

Veja a seguir uma visão geral de alto nível sobre como o Amazon EMR obtém acesso aos dados protegidos pela funcionalidade Access Grants do S3.

Como o Amazon EMR funciona com o S3 Access Grants
  1. Um usuário envia um trabalho do Spark do Amazon EMR que usa dados armazenados no Amazon S3.

  2. O Amazon EMR solicita ao S3 Access Grants que permita o acesso ao bucket, prefixo ou objeto em nome desse usuário.

  3. O Amazon S3 retorna credenciais temporárias na forma de um token do AWS Security Token Service (STS) para o usuário. O escopo do token é acessar o bucket, prefixo ou objeto do S3.

  4. O Amazon EMR usa o token do STS para recuperar dados do S3.

  5. O Amazon EMR recebe os dados do S3 e retorna os resultados ao usuário.

Considerações sobre o S3 Access Grants com o Amazon EMR

Observe os comportamentos e as limitações a seguir ao usar o S3 Access Grants com o Amazon EMR.

Suporte a recursos

  • O S3 Access Grants é compatível com as versões 6.15.0 e superiores do Amazon EMR.

  • O Spark é o único mecanismo de consulta compatível ao usar o S3 Access Grants com o Amazon EMR.

  • Delta Lake e Hudi são os únicos formatos de tabela aberta compatíveis ao usar o S3 Access Grants com o Amazon EMR.

  • Os seguintes recursos do Amazon EMR não são compatíveis com o S3 Access Grants:

    • Tabelas Apache Iceberg

    • Autenticação nativa LDAP

    • Autenticação nativa do Apache Ranger

    • Solicitações da AWS CLI para o Amazon S3 que usam perfis do IAM

    • Acesso ao S3 por meio do protocolo de código aberto do S3A

  • A opção fallbackToIAM não é compatível com clusters do EMR que usam a propagação de identidade confiável com o Centro de Identidade do IAM.

  • O S3 Access Grants com o AWS Lake Formation só é compatível com clusters do Amazon EMR executados no Amazon EC2.

Considerações comportamentais

  • A integração nativa do Apache Ranger com o Amazon EMR possui funcionalidade congruente com o S3 Access Grants como parte do plug-in EMRFS S3 do Apache Ranger. Se você usa o Apache Ranger para controle de acesso refinado (FGAC), recomendamos usar esse plug-in em vez do S3 Access Grants.

  • O Amazon EMR fornece um cache de credenciais no EMRFS para garantir que o usuário não precise fazer solicitações repetidas das mesmas credenciais em um trabalho do Spark. Portanto, o Amazon EMR sempre solicita o privilégio de nível padrão quando solicita credenciais. Para obter mais informações, consulte Solicitação de acesso aos dados do S3 no Guia do usuário do Amazon S3.

  • No caso de um usuário realizar uma ação que não tenha suporte do S3 Access Grants, o Amazon EMR está configurado para usar o perfil do IAM que foi especificado para a execução do trabalho. Para ter mais informações, consulte Fallback para os perfis do IAM.

Launch an Amazon EMR cluster with S3 Access Grants

Esta seção descreve como iniciar um cluster do EMR que é executado no Amazon EC2 e usa o S3 Access Grants para gerenciar o acesso aos dados no Amazon S3. Para ver as etapas de uso do S3 Access Grants com outras implantações do Amazon EMR, consulte a seguinte documentação:

Use as etapas a seguir para iniciar um cluster do EMR que é executado no Amazon EC2 e usa o S3 Access Grants para gerenciar o acesso aos dados no Amazon S3.

  1. Configure um perfil de execução de trabalhos para o cluster do EMR. Inclua as permissões do IAM necessárias para executar os trabalhos do Spark, s3:GetDataAccess e s3:GetAccessGrantsInstanceForPrefix:

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    nota

    Com o Amazon EMR, a funcionalidade S3 Access Grants aumenta as permissões definidas nos perfis do IAM. Se os perfis do IAM especificados para a execução do trabalho contiverem permissões de acesso direto ao S3, os usuários poderão acessar mais dados do que os definidos por você no S3 Access Grants.

  2. Em seguida, use a AWS CLI para criar um cluster com o Amazon EMR 6.15 ou versões superiores e a classificação do emrfs-site para habilitar o S3 Access Grants, semelhante ao exemplo a seguir:

    aws emr create-cluster --release-label emr-6.15.0 \ --instance-count 3 \ --instance-type m5.xlarge \ --configurations '[{"Classification":"emrfs-site", "Properties":{"fs.s3.s3AccessGrants.enabled":"true", "fs.s3.s3AccessGrants.fallbackToIAM":"false"}}]'

S3 Access Grants com o AWS Lake Formation

Se você usa o Amazon EMR com a integração do AWS Lake Formation, poderá utilizar o Amazon S3 Access Grants para acesso direto ou tabular aos dados no Amazon S3.

nota

O S3 Access Grants com o AWS Lake Formation só é compatível com clusters do Amazon EMR executados no Amazon EC2.

Acesso direto

O acesso direto envolve todas as chamadas para acessar dados do S3 que não invocam a API do serviço AWS Glue que o Lake Formation usa como metastore com o Amazon EMR, por exemplo, para chamar spark.read:

spark.read.csv("s3://...")

Quando você usa o S3 Access Grants com o AWS Lake Formation no Amazon EMR, todos os padrões de acesso direto passam pelo S3 Access Grants para obter credenciais temporárias do S3.

Acesso tabular

O acesso tabular ocorre quando o Lake Formation invoca a API do metastore para acessar sua localização no S3, por exemplo, para consultar dados da tabela:

spark.sql("select * from test_tbl")

Quando você usa o S3 Access Grants com o AWS Lake Formation no Amazon EMR, todos os padrões de acesso tabular passam pelo Lake Formation.

Fallback para os perfis do IAM

Se um usuário tentar realizar uma ação que não tenha o suporte do S3 Access Grants, o Amazon EMR usa como padrão o perfil do IAM que foi especificado para a execução do trabalho quando a configuração fallbackToIAM for true. Isso permite que os usuários efetuem o fallback do perfil de execução de trabalhos para fornecer credenciais de acesso ao S3 em cenários não cobertos pelo S3 Access Grants.

Com a opção fallbackToIAM habilitada, os usuários podem acessar os dados que o Access Grant permite. Se não houver um token do S3 Access Grants para os dados de destino, o Amazon EMR verifica a permissão no perfil de execução de trabalhos.

nota

Recomendamos que você teste suas permissões de acesso com a configuração fallbackToIAM habilitada, mesmo que planeje desabilitar a opção para workloads de produção. Com os trabalhos do Spark, há outras maneiras pelas quais os usuários podem acessar todos os conjuntos de permissões com as credenciais do IAM. Quando habilitadas em clusters do EMR, as concessões do S3 dão aos trabalhos do Spark acesso às localizações do S3. Você deve garantir a proteção dessas localizações do S3 contra o acesso fora do EMRFS. Por exemplo, você deve proteger as localizações do S3 contra o acesso de clientes do S3 usados em notebooks ou por aplicações sem o suporte do S3 Access Grants, como Hive ou Presto.