Controle de acesso baseado em tags do Lake Formation - AWS Lake Formation

Controle de acesso baseado em tags do Lake Formation

O controle de acesso baseado em tags do Lake Formation (LF-TBAC) é uma estratégia de autorização que define permissões com base em atributos. No Lake Formation, esses atributos são chamados de tags do LF. Você pode anexar tags do LF aos recursos do Catálogo de Dados e conceder permissões a entidades principais do Lake Formation nesses recursos usando essas tags do LF. O Lake Formation permite operações nesses recursos quando a tag da entidade principal corresponde ao valor da tag do recurso. O LF-TBAC é útil em ambientes que estão crescendo rapidamente e ajuda em situações em que o gerenciamento de políticas se torna um problema.

O LF-TBAC é o método recomendado para conceder permissões do Lake Formation quando há um grande número de recursos do catálogo de dados. O LF-TBAC é mais escalável do que o método de recurso nomeado e requer menos sobrecarga de gerenciamento de permissões.

nota

As tags do IAM não são iguais às tags do LF. Essas tags não são intercambiáveis. As tags do LF são usadas para conceder permissões do Lake Formation e as tags do IAM são usadas para definir políticas do IAM.

Como funciona o controle de acesso baseado em tags do Lake Formation

Cada tag do LF é um par de valores-chave, como department=sales ou classification=restricted. Uma chave pode ter vários valores definidos, como department=sales,marketing,engineering,finance.

Para usar o método LF-TBAC, os administradores e engenheiros de dados do data lake realizam as seguintes tarefas.

Tarefa Detalhes da tarefa

1. Defina as propriedades e os relacionamentos das tags do LF.

-

2. Crie os criadores de tags do LF no Lake Formation.

Adicionar criadores de tags do LF

3. Crie a tag do LF no Lake Formation.

Criação de tags do LF

4. Atribua tags do LF aos recursos do catálogo de dados.

Atribuição de tags do LF aos recursos do catálogo de dados

5. Conceda permissões a outras entidades principais para atribuir tags do LF aos recursos, opcionalmente com a opção de concessão.

Gerenciar permissões de valor de tag do LF

6. Conceda expressões de tag do LF às entidades principais, opcionalmente com a opção de concessão.

Conceder permissões de data lake usando o método LF-TBAC

7. (Recomendado) Depois de verificar se as entidades principais têm acesso aos recursos corretos por meio do método LF-TBAC, revogue as permissões concedidas usando o método de recurso nomeado.

-

Considere o caso em que você deve conceder permissões a três entidade principais em três bancos de dados e sete tabelas.

Três figuras de usuários estão à esquerda, dispostas verticalmente. À direita estão três bancos de dados rotulados A, B e C, organizados verticalmente. O banco de dados A tem duas tabelas rotuladas como A.1 e A.2, o banco de dados B tem rótulos de tabelas B.1 e B.2 e o banco de dados C tem três tabelas rotuladas como C.1, C.2 e C.3. Dezessete setas conectam os usuários aos bancos de dados e tabelas, indicando concessões nos bancos de dados e tabelas aos usuários.

Para obter as permissões indicadas no diagrama anterior usando o método de recurso nomeado, você precisaria fazer 17 concessões, da seguinte forma (em pseudocódigo).

GRANT CREATE_TABLE ON Database A TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.1 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table B.2 TO PRINCIPAL 1 ... GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 2 GRANT CREATE_TABLE ON Database B TO PRINCIPAL 2 ... GRANT SELECT, INSERT ON Table C.3 TO PRINCIPAL 3

Agora, considere como você concederia permissões usando o LF-TBAC. O diagrama a seguir indica que você atribuiu tags do LF a bancos de dados e tabelas e concedeu permissões sobre tags do LF às entidades principais.

Neste exemplo, as tags do LF representam áreas do data lake que contêm análises para diferentes módulos de um pacote de aplicativos de planejamento de recursos corporativos (ERP). Você deve controlar o acesso aos dados analíticos dos vários módulos. Todas as tags do LF têm a chave module e os valores possíveis Sales, Orders e Customers. Um exemplo de uma tag do LF é semelhante a este:

module=Sales

O diagrama mostra somente os valores da tag do LF.

Como no diagrama anterior, três figuras de usuários estão à esquerda, organizadas verticalmente, e à direita estão três bancos de dados rotulados A, B e C, organizados verticalmente. O banco de dados A tem duas tabelas rotuladas como A.1 e A.2, o banco de dados B tem rótulos de tabelas B.1 e B.2 e o banco de dados C tem três tabelas rotuladas como C.1, C.2 e C.3. Não há setas entre os usuários e os bancos de dados e tabelas. Em vez disso, as “bandeiras” marcadas ao lado dos usuários indicam que o usuário 1 recebeu as Vendas e Clientes de tags do LF, o usuário 2 recebeu os Pedidos de tags do LF e o usuário 3 recebeu os Clientes de tags do LF. As bandeiras ao lado dos bancos de dados e tabelas indicam as seguintes atribuições de tags do LF a bancos de dados e tabelas: Banco de dados A: Vendas. Tabela A1: uma bandeira esmaecida indica que as vendas foram herdadas do banco de dados A. Tabela A2: pedidos, mas uma bandeira esmaecida indica que as vendas foram herdadas do banco de dados A. Banco de dados B: pedidos. As Tabelas B.1 e B.2 herdam pedidos, e a Tabela B.2 tem clientes. O banco de dados C tem clientes, e as tabelas C.1, C.2 e C.3 herdam clientes. As tabelas C não têm nenhuma outra atribuição.
Atribuições de tags aos recursos e herança do catálogo de dados

As tabelas herdam as tags do LF dos bancos de dados e as colunas herdam as tags do LF das tabelas. Os valores herdados podem ser substituídos. No diagrama anterior, as tags do LF esmaecidas são herdadas.

Por causa da herança, o administrador do data lake precisa fazer somente as cinco seguintes atribuições de tag do LF aos recursos (em pseudocódigo).

ASSIGN TAGS module=Sales TO database A ASSIGN TAGS module=Orders TO table A.2 ASSIGN TAGS module=Orders TO database B ASSIGN TAGS module=Customers TO table B.2 ASSIGN TAGS module=Customers TO database C
Concessões de tags a entidade principais

Depois de atribuir tags do LF aos bancos de dados e tabelas, o administrador do data lake deve fazer apenas quatro concessões de tags do LF às entidades principais, da seguinte forma (em pseudocódigo).

GRANT TAGS module=Sales TO Principal 1 GRANT TAGS module=Customers TO Principal 1 GRANT TAGS module=Orders TO Principal 2 GRANT TAGS module=Customers TO Principal 3

Agora, uma entidade principal com a tag do LF module=Sales pode acessar os recursos do catálogo de dados com a tag do LF module=Sales (por exemplo, banco de dados A), uma entidade principal com a tag do LF module=Customers pode acessar recursos com a tag do LF module=Customers e assim por diante.

Os comandos de concessão anteriores estão incompletos. Isso ocorre porque, embora indiquem por meio de tags do LF os recursos do catálogo de dados sobre os quais as entidades principais têm permissões, eles não indicam exatamente quais permissões do Lake Formation (por exemplo SELECT, ALTER) as entidades principais têm sobre esses recursos. Portanto, os comandos de pseudocódigo a seguir são uma representação mais precisa de como as permissões do Lake Formation são concedidas nos recursos do catálogo de dados por meio de tags do LF.

GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Sales TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Sales TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Orders TO Principal 2 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Orders TO Principal 2 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 3 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 3
Reunir tudo: permissões resultantes em recursos

Considerando as tags do LF atribuídas aos bancos de dados e tabelas no diagrama anterior e as tags do LF concedidas às entidades principais no diagrama, a tabela a seguir lista as permissões do Lake Formation que as entidades principais têm nos bancos de dados e tabelas.

Entidade principal Permissões concedidas por meio de tags do LF
Entidade principal 1
  • CREATE_TABLE no banco de dados A

  • SELECT, INSERT na tabela A.1

  • SELECT, INSERT na tabela B.2

  • CREATE_TABLE no banco de dados C

  • SELECT, INSERT na tabela C.1

  • SELECT, INSERT na tabela C.2

  • SELECT, INSERT na tabela C.3

Entidade principal 2
  • SELECT, INSERT na tabela A.2

  • CREATE_TABLE no banco de dados B

  • SELECT, INSERT na tabela B.1

Entidade principal 3
  • SELECT, INSERT na tabela B.2

  • CREATE_TABLE no banco de dados C

  • SELECT, INSERT na tabela C.1

  • SELECT, INSERT na tabela C.2

  • SELECT, INSERT na tabela C.3

Conclusão

Neste exemplo simples, usando cinco operações de atribuição e oito operações de concessão, o administrador do data lake conseguiu especificar 17 permissões. Quando há dezenas de bancos de dados e centenas de tabelas, a vantagem do método LF-TBAC sobre o método de recurso nomeado fica clara. No caso hipotético da necessidade de conceder a todos os principais acesso a todos os recursos, e onde n(P) é o número de entidades principais e n(R) o número de recursos:

  • Com o método de recurso nomeado, o número de concessões necessárias é n(P)n(R).

  • Com o método LF-TBAC, usando uma única tag do LF, o total do número de concessões para entidades principais e atribuições de recursos é n(P) + n(R).