As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Habilite a formação de lagos com grupos de recursos
Ao habilitar o AWS Lake Formation em um grupo de recursos na Amazon SageMaker Feature Store, você pode aplicar a segurança em nível de coluna, linha e célula para os dados de recursos em sua loja offline. Em vez de gerenciar o acesso por meio de políticas individuais do IAM no Amazon S3 e nos AWS Glue recursos, você usa o modelo de permissão de concessão e revogação do Lake Formation para controlar quais usuários e funções podem acessar recursos e registros específicos. Para obter mais informações sobre a formação de lagos, consulte o Guia do desenvolvedor de formações de AWS lagos.
Importante
O controle de acesso do Lake Formation se aplica somente à loja offline. A loja offline é apoiada pelo Amazon S3 e registrada no AWS Glue Data Catalog, que a Lake Formation governa. O acesso à loja virtual continua sendo controlado por meio de políticas do IAM. Para configurar o Lake Formation, você usa as LakeFormationConfig classes FeatureGroupManager e do SDK do SageMaker AI Python SDK ()sagemaker.mlops.feature_store. O Lake Formation suporta o modo de acesso híbrido, que permite que as políticas do IAM e as permissões do Lake Formation coexistam durante uma migração gradual.
Pré-requisitos
Antes de ativar o Lake Formation, verifique se você tem o seguinte:
-
Um grupo de recursos de SageMaker IA com uma loja offline configurada, ou você pode criar um novo com uma loja offline como parte da configuração. O Lake Formation exige uma loja offline porque controla o acesso por meio da tabela do catálogo de AWS Glue dados que a loja offline cria.
-
Uma função de execução do IAM com as permissões apropriadas. O exemplo a seguir mostra a política mínima de IAM necessária. Substitua os valores dos espaços reservados pelos seus próprios.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerFeatureGroupOperations", "Effect": "Allow", "Action": [ "sagemaker:CreateFeatureGroup", "sagemaker:DescribeFeatureGroup" ], "Resource": "arn:aws:sagemaker:*:*:feature-group/*" }, { "Sid": "LakeFormation", "Effect": "Allow", "Action": [ "lakeformation:RegisterResource", "lakeformation:GrantPermissions", "lakeformation:RevokePermissions", "lakeformation:ListPermissions" ], "Resource": "*" }, { "Sid": "GlueCatalogReadAccess", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:table/sagemaker_featurestore/*" ] }, { "Sid": "GlueCatalogTableCreate", "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:table/sagemaker_featurestore/*" ] }, { "Sid": "PassOfflineStoreRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<account-id>:role/<offline-store-role-name>" }, { "Sid": "S3FeatureStoreStorage", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<offline-store-bucket-name>" }, { "Sid": "LakeFormationRegistrationRole", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetRolePolicy" ], "Resource": "arn:aws:iam::<account-id>:role/<registration-role-name>" } ] }nota
A
LakeFormationRegistrationRoledeclaração concede permissões para ler a função usada para registrar a localização do Amazon S3 com o Lake Formation. Se você usar a função vinculada ao serviço Lake Formation (use_service_linked_role=True), defina o recurso como.arn:aws:iam::<account-id>:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccessSe você fornecer sua própria função de registro, defina-a como o ARN dessa função.nota
Se o modo de acesso híbrido estiver desativado no
sagemaker_featurestorebanco de dados, o chamador também deverá ter aCREATE_TABLEpermissão Lake Formation no banco de dados. O administrador do Lake Formation pode conceder essa permissão por meio do console ou da API do Lake Formation. -
Um administrador do Lake Formation configurado em sua conta. Você deve designar pelo menos um usuário ou função do IAM como administrador do Lake Formation. Para obter instruções de configuração, consulte Introdução à formação de lagos na documentação de formação de lagos.
-
O SDK do SageMaker AI Python versão 3.8.0 ou posterior. Instale ou atualize o
sagemakerpacote:pip install --upgrade sagemaker>=3.8.0 -
Cross-account configuração (se aplicável). Se o bucket Amazon S3 da loja offline do grupo de recursos estiver em uma configuração diferente Conta da AWS, será necessária uma configuração adicional de compartilhamento entre contas do Lake Formation, incluindo políticas de AWS Glue recursos, aceitação do compartilhamento de AWS RAM, links de recursos e configuração do banco de dados do consumidor. Para obter mais informações, consulte Compartilhamento de dados entre contas na documentação do Lake Formation.
Principais conceitos
Os conceitos a seguir são importantes para entender como o Lake Formation funciona com o Feature Store.
Modelo de permissão de formação de lago comparado ao IAM-only modelo
Por padrão, o acesso às AWS Glue Data Catalog tabelas, incluindo aquelas criadas pela Feature Store, é controlado somente por meio de políticas do IAM. Quando você ativa o Lake Formation, o acesso exige permissões do IAM e do Lake Formation. O Lake Formation usa um modelo de concessão e revogação em que você concede explicitamente permissões, como SELECT ouDESCRIBE, em bancos de dados, tabelas ou colunas específicos para diretores do IAM.
Modo de acesso híbrido
Ao ativar o Lake Formation, você escolhe se deseja usar o modo de acesso híbrido ou o Formation-only modo Lago:
-
Modo de acesso híbrido (
hybrid_access_mode_enabled=True): as políticas do IAM e as permissões do Lake Formation são avaliadas. Os diretores que têm acesso por meio de políticas de IAM existentes continuam tendo acesso, e você também pode conceder acesso refinado por meio do Lake Formation. Isso é útil para a migração gradual. -
Formation-only Modo Lago (
hybrid_access_mode_enabled=False): Somente as permissões de Formação de Lago são avaliadas. O IAM-based acesso existente à AWS Glue tabela é revogado. Isso fornece o controle de acesso mais forte, mas pode interromper as cargas de trabalho existentes.
Atenção
Quando você definehybrid_access_mode_enabled=False, o SDK revoga a IAMAllowedPrincipal concessão na AWS Glue tabela. Todos os trabalhos, notebooks ou pipelines existentes que acessam essa tabela somente por meio de permissões do IAM perdem o acesso imediatamente. Verifique se você concedeu as permissões necessárias de Lake Formation a todos os diretores que precisam de acesso antes de desativar o modo de acesso híbrido.
nota
Você deve desativar o modo de acesso híbrido para acesso entre contas quando o formato da tabela for Iceberg.
Política de negação do S3
Mesmo depois de habilitar o Lake Formation na AWS Glue Data Catalog mesa, os usuários com acesso direto ao Amazon S3 (por meio de políticas do IAM) podem ignorar o Lake Formation lendo diretamente os objetos subjacentes do Amazon S3. Para fechar essa lacuna, aplique uma política de bucket do Amazon S3 que negue acesso direto ao prefixo da loja offline para todos os diretores, exceto a função de serviço Lake Formation e a função de execução da Feature Store.
Importante
O SDK não aplica automaticamente a política de negação do Amazon S3. Depois de ativar o Lake Formation, o SDK registra uma política de bucket recomendada como uma mensagem de aviso. Analise essa política e aplique-a ao seu bucket do Amazon S3 para impor o controle de acesso de ponta a ponta.
Referência da configuração
Use a LakeFormationConfig classe para configurar o Lake Formation. Você passa essa configuração para FeatureGroupManager.create() ao criar um novo grupo de recursos ou usa os parâmetros individuais diretamente com enable_lake_formation() os grupos de recursos existentes.
| Parâmetro | Tipo | Padrão | Obrigatório | Description |
|---|---|---|---|---|
enabled |
bool | Falso | Não | Defina como True para ativar o Lake Formation na loja offline do grupo de recursos. |
use_service_linked_role |
bool | Verdadeiro | Não | Se deve usar a função vinculada ao serviço Lake Formation para registrar a localização do S3. Defina como False se você usa uma função de registro personalizada. Você não pode usar uma função vinculada ao serviço para acesso entre contas ou ao usar mecanismos de consulta de terceiros (como o Apache Spark). Para mecanismos de terceiros, você deve fornecer sua própria função de registro por meio deregistration_role_arn. |
registration_role_arn |
str | Nenhum | Condicional | O ARN de uma função personalizada do IAM para registrar a localização do S3 da loja offline com Lake Formation. Obrigatório quando use_service_linked_role éFalse. |
hybrid_access_mode_enabled |
bool | — | Sim | Se deve ser IAMAllowedPrincipal retirado da AWS Glue tabela. False = Formation-only Permissões do lago. True= modo híbrido (IAM e Lake Formation). Você deve escolher explicitamente. |
acknowledge_risk |
bool | — | Sim | Deve ser True para continuar. Essa é uma confirmação de segurança. A configuração para False aumentar a RuntimeError antes de qualquer operação ser executada. |
Entendendo o acknowledge_risk
O acknowledge_risk parâmetro é um portão de proteção. Ao configurá-lo comoTrue, você reconhece o seguinte:
-
Se
hybrid_access_mode_enabled=False: IAM-based Trabalhos, notebooks e pipelines existentes que consultam essa AWS Glue tabela perdem o acesso imediatamente. Você deve conceder permissões de Lake Formation a esses diretores antes ou logo após a habilitação. -
Se as permissões do Lake Formation não estiverem configuradas corretamente: os dados no grupo de recursos podem ficar inacessíveis para todos os usuários até que as permissões sejam corrigidas.
-
A operação modifica as permissões do catálogo de AWS Glue dados: essas alterações afetam todos os consumidores da AWS Glue tabela, não apenas os usuários da Feature Store. Todas as consultas do Athena, tarefas do Spark ou outros serviços lidos nesta tabela são afetados.
Como funciona
Quando você ativa o Lake Formation, o SDK executa uma configuração trifásica:
-
Registre a localização do S3. O SDK registra o caminho S3 da loja offline com o Lake Formation usando a função vinculada ao serviço Lake Formation ou uma função de registro personalizada que você especificar. Se você usa mecanismos de consulta de terceiros (como o Apache Spark), deverá fornecer sua própria função de registro, pois a função vinculada ao serviço não oferece suporte ao acesso a mecanismos de terceiros.
-
Conceda permissões à Lake Formation. O SDK concede
SELECT,INSERT,DELETEDESCRIBE, eALTERpermissões na tabela do Catálogo de AWS Glue Dados para a função de execução do grupo de recursos. -
Opcionalmente, revogue IAMAllowedPrincipal. Se você definir
hybrid_access_mode_enabled=False, o SDK revogará aIAMAllowedPrincipalconcessão na AWS Glue tabela.
Após a conclusão de todas as fases, o SDK registra uma política recomendada de negação de bucket do S3. Analise e aplique essa política para evitar o acesso direto ao Amazon S3 que ignore o controle de acesso do Lake Formation.
nota
Se a configuração falhar no meio (por exemplo, após registrar a localização do S3, mas antes de conceder permissões), você poderá executar novamente o método com segurança. enable_lake_formation() O SDK é idempotente e ignora etapas que já foram concluídas com êxito.
Exemplos de uso
Crie um novo grupo de recursos com o controle de acesso do Lake Formation
O exemplo a seguir cria um novo grupo de recursos com uma loja offline e permite o controle de acesso à Lake Formation em uma única operação.
from sagemaker.core.helper.session_helper import Session from sagemaker.core.shapes import ( FeatureDefinition, OfflineStoreConfig, OnlineStoreConfig, S3StorageConfig, ) from sagemaker.mlops.feature_store import FeatureGroupManager, LakeFormationConfig session = Session() region = session.boto_region_name role_arn = "arn:aws:iam::<account-id>:role/<execution-role-name>" registration_role_arn = "arn:aws:iam::<account-id>:role/<registration-role-name>" fg_name = "my-feature-group" bucket = session.default_bucket() offline_s3_uri = f"s3://{bucket}/feature-store/{fg_name}" feature_definitions = [ FeatureDefinition(feature_name="customer_id", feature_type="String"), FeatureDefinition(feature_name="event_time", feature_type="String"), FeatureDefinition(feature_name="age", feature_type="Integral"), FeatureDefinition(feature_name="total_purchases", feature_type="Integral"), FeatureDefinition(feature_name="avg_order_value", feature_type="Fractional"), ] fg = FeatureGroupManager.create( feature_group_name=fg_name, record_identifier_feature_name="customer_id", event_time_feature_name="event_time", feature_definitions=feature_definitions, online_store_config=OnlineStoreConfig(enable_online_store=False), offline_store_config=OfflineStoreConfig( s3_storage_config=S3StorageConfig(s3_uri=offline_s3_uri), table_format="Iceberg", ), role_arn=role_arn, description="A feature group with Lake Formation-managed offline store", # Example configuration — adjust parameters for your use case. lake_formation_config=LakeFormationConfig( enabled=True, use_service_linked_role=False, registration_role_arn=registration_role_arn, # Set to True to keep existing IAM-based access (hybrid mode). hybrid_access_mode_enabled=False, acknowledge_risk=True, ), region=region, )
Habilitar a formação de lagos em um grupo de recursos existente
O exemplo a seguir habilita o Lake Formation em um grupo de recursos que já existe.
from sagemaker.mlops.feature_store import FeatureGroupManager fg = FeatureGroupManager.get(feature_group_name="my-existing-feature-group") result = fg.enable_lake_formation( use_service_linked_role=False, registration_role_arn="arn:aws:iam::<account-id>:role/<registration-role-name>", hybrid_access_mode_enabled=False, acknowledge_risk=True, )
Use grupos de Formation-enabled recursos do Lake com trabalhos de SageMaker IA
Você pode acessar os grupos de Formation-enabled recursos do Lake a partir de trabalhos de treinamento e processamento de SageMaker IA. Para ler os dados dos Formation-enabled recursos do Lake, você pode consultar os dados por meio do Athena ou usar a GetTemporaryGlueTableCredentials API Lake Formation para vender credenciais temporárias do Amazon S3 com escopo definido na tabela. AWS Glue Para obter mais informações sobre como configurar as permissões do Lake Formation para funções de computação, consulte a referência de permissões do Lake Formation na documentação do Lake Formation.
Cross-account acesso
O Lake Formation suporta o compartilhamento de dados de grupos de recursos entre Contas da AWS. Quando a conta do produtor ativa o Lake Formation em um grupo de recursos, ela pode conceder acesso entre contas às contas do consumidor usando o método de recurso nomeado ou o controle de acesso baseado em tag do Lake Formation ()LF-TBAC.
Cross-account o compartilhamento requer a seguinte configuração:
-
A conta do produtor concede permissões entre contas na tabela do Catálogo de AWS Glue Dados para a conta do consumidor, AWS organização ou unidade organizacional.
-
Se as contas não estiverem na mesma AWS organização, a conta do consumidor aceitará o convite de compartilhamento de recursos de AWS RAM. Para obter mais informações, consulte Aceitar um convite de compartilhamento de recursos.
-
A conta do consumidor cria um link de recurso para a tabela compartilhada em um banco de dados local. Os links de recursos são necessários para que serviços como o Athena e o Amazon Redshift Spectrum consultem recursos compartilhados. Para obter mais informações, consulte Sobre links de recursos.
-
O administrador do Lake Formation na conta do consumidor concede permissões no link do recurso e na tabela compartilhada subjacente aos diretores do IAM que precisam de acesso.
Importante
Se você usa mecanismos de consulta de terceiros (como o Apache Spark), deverá habilitar o acesso total à tabela compartilhada. Third-party os mecanismos exigem a venda completa de credenciais de tabela porque não suportam a filtragem em nível de coluna ou célula do Lake Formation por meio de tags de sessão. Você também deve registrar a localização do Amazon S3 com uma função de registro personalizada em vez da função vinculada ao serviço. Para obter mais informações, consulte Acesso completo à tabela para mecanismos de terceiros.
Para ver os pré-requisitos, instruções passo a passo e as melhores práticas para compartilhamento entre contas, consulte os tópicos a seguir no Guia do desenvolvedor do Lake Formation: AWS
-
Cross-account acesso — Visão geral dos métodos de compartilhamento entre contas e integração AWS de RAM.
-
Cross-account pré-requisitos — Configuração necessária para contas de produtores e consumidores.
-
Compartilhamento de tabelas e bancos de dados do Catálogo de Dados — Step-by-step instruções para o método e LF-TBAC o método do recurso nomeado.
-
Tag-based controle de acesso — recomendado para gerenciar permissões em grande escala em várias contas.
Conceda acesso refinado após a configuração
Depois de habilitar o Lake Formation, o administrador do Lake Formation pode conceder permissões refinadas a outros diretores do IAM usando o console, a API ou a CLI do Lake Formation. O Lake Formation suporta controle de acesso em nível de coluna, linha e célula.
Para obter instruções sobre como conceder e gerenciar permissões de formação de lagos, consulte os seguintes tópicos no Guia do desenvolvedor de formações de AWS lagos:
-
Filtros de dados em Lake Formation para filtragem em nível de linha e em nível de célula