Habilitar o Lake Formation com o Amazon EMR
Com o Amazon EMR 6.15.0 e versões superiores, ao executar trabalhos do Spark em clusters do Amazon EMR no EC2 que acessam dados no AWS Glue Data Catalog, você pode usar o AWS Lake Formation para aplicar permissões no nível de tabela, linha, coluna e célula em tabelas baseadas em Hudi, Iceberg ou Delta Lake.
Nesta seção, abordamos como criar uma configuração de segurança e configurar o Lake Formation para trabalhar com o Amazon EMR. Também veremos como iniciar um cluster com a configuração de segurança criada para o Lake Formation.
Etapa 1: configurar um perfil de runtime para o cluster do EMR
Para usar um perfil de runtime para o cluster do EMR, é necessário criar uma configuração de segurança. Com uma configuração de segurança, você pode aplicar opções consistentes de segurança, autorização e autenticação nos clusters.
-
Crie um arquivo chamado
lf-runtime-roles-sec-cfg.json
com a configuração a seguir.{ "AuthorizationConfiguration": { "IAMConfiguration": { "EnableApplicationScopedIAMRole": true, "ApplicationScopedIAMRoleConfiguration": { "PropagateSourceIdentity": true } }, "LakeFormationConfiguration": { "AuthorizedSessionTagValue": "Amazon EMR" } }, "EncryptionConfiguration": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }
-
Em seguida, para garantir que a etiqueta da sessão possa autorizar o Lake Formation, defina a propriedade
LakeFormationConfiguration/AuthorizedSessionTagValue
comoAmazon EMR
. -
Use o comando a seguir para criar uma configuração de segurança do Amazon EMR.
aws emr create-security-configuration \ --name 'iamconfig-with-iam-lf' \ --security-configuration file://lf-runtime-roles-sec-cfg.json
Como alternativa, é possível usar o console do Amazon EMR
para criar uma configuração de segurança com configurações personalizadas.
Etapa 2: iniciar um cluster do Amazon EMR
Agora, você já pode iniciar um cluster do EMR com a configuração de segurança criada na etapa anterior. Para obter mais informações sobre configurações de segurança, consulte Uso de configurações de segurança para definir a segurança do cluster do Amazon EMR e Perfis de runtime para etapas ao Amazon EMR.
Etapa 3a: configurar permissões no nível de tabela baseadas no Lake Formation com perfis de runtime do Amazon EMR
Se você não precisar de um controle de acesso refinado no nível de coluna, linha ou célula, poderá configurar permissões no nível de tabela com o Glue Data Catalog. Para habilitar o acesso no nível de tabela, navegue até o console do AWS Lake Formation e selecione a opção Configurações de integração de aplicações na seção Administração na barra lateral. Em seguida, habilite a seguinte opção e escolha Salvar:
Permitir que mecanismos externos acessem dados em locais do Amazon S3 com acesso total à tabela
Etapa 3b: configurar permissões no nível de coluna, linha ou célula baseadas no Lake Formation com perfis de runtime do Amazon EMR
Para aplicar permissões no nível de tabela e coluna com o Lake Formation, o administrador do data lake no Lake Formation deve definir o Amazon EMR
como o valor da configuração da tag de sessão, AuthorizedSessionTagValue
. O Lake Formation usa essa etiqueta de sessão para autorizar os chamadores e fornecer acesso ao data lake. Você pode definir essa etiqueta de sessão na seção Filtragem de dados externos do console do Lake Formation. Substitua 123456789012
pelo ID de sua própria Conta da AWS.
Etapa 4: configurar concessões do AWS Glue e do Lake Formation para perfis de runtime do Amazon EMR
Para continuar com a configuração do controle de acesso baseado em Lake Formation com perfis de runtime do Amazon EMR, é necessário configurar subsídios do AWS Glue e do Lake Formation para perfis de runtime do Amazon EMR. Para permitir que os perfis de runtime do IAM interajam com o Lake Formation, conceda a eles acesso com lakeformation:GetDataAccess
e glue:Get*
.
As permissões do Lake Formation controlam o acesso aos recursos do Catálogo de Dados do AWS Glue, aos locais do Amazon S3 e aos dados subjacentes nesses locais. As permissões do IAM controlam o acesso às APIs e aos recursos do Lake Formation e do AWS Glue. Embora você possa ter a permissão do Lake Formation para acessar uma tabela no catálogo de dados (SELECT), a operação falhará se você não tiver a permissão do IAM na API glue:Get*
. Para obter mais detalhes sobre o controle de acesso do Lake Formation, consulte a visão geral do controle de acesso do Lake Formation.
-
Crie o arquivo
emr-runtime-roles-lake-formation-policy.json
com o conteúdo a seguir.{ "Version": "2012-10-17", "Statement": { "Sid": "LakeFormationManagedAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": "*" } }
-
Crie a política do IAM relacionada ao IAM.
aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
-
Para atribuir essa política aos perfis de runtime do IAM, siga as etapas descritas em Managing AWS Lake Formation permissions.
Já é possível usar perfis de runtime e o Lake Formation para aplicar permissões em nível de tabela e coluna. Você também pode usar uma identidade de origem para controlar ações e monitorar operações como AWS CloudTrail. Para ver um exemplo detalhado e completo, consulte Introducing runtime roles for Amazon EMR steps