Zephyrnet Logo

Como a BMO melhorou a segurança de dados com Amazon Redshift e AWS Lake Formation | Amazon Web Services

Data:

Esta postagem foi escrita em colaboração com Amy Tseng, Jack Lin e Regis Chow da BMO.

BMO é o 8º maior banco da América do Norte em ativos. Oferece serviços bancários pessoais e comerciais, mercados globais e serviços bancários de investimento para 13 milhões de clientes. À medida que continuam a implementar a sua estratégia Digital First para velocidade, escala e eliminação da complexidade, procuram sempre formas de inovar, modernizar e também agilizar o controlo de acesso a dados na Cloud. A BMO acumulou dados financeiros confidenciais e precisava construir um ambiente analítico seguro e de alto desempenho. Um dos principais desafios do banco relacionados aos rigorosos requisitos de segurança cibernética é implementar criptografia em nível de campo para informações de identificação pessoal (PII), indústria de cartões de pagamento (PCI) e dados classificados como alto risco de privacidade (HPR). Os dados com essa classificação segura são armazenados de forma criptografada no data warehouse e no data lake. Somente usuários com permissões necessárias têm permissão para acessar dados em texto não criptografado.

Amazon RedShift é um serviço de data warehouse totalmente gerenciado que dezenas de milhares de clientes usam para gerenciar análises em escala. O Amazon Redshift oferece suporte à segurança líder do setor com gerenciamento de identidade integrado e federação para logon único (SSO), além de autenticação multifator. O Espectro Amazon Redshift recurso permite consulta direta do seu Amazon Simple Storage Service (Amazon S3) data lake, e muitos clientes estão usando isso para modernizar sua plataforma de dados.

Formação AWS Lake é um serviço totalmente gerenciado que simplifica a construção, proteção e gerenciamento de data lakes. Ele fornece controle de acesso refinado, marcação (controle de acesso baseado em tags (TBAC)) e integração entre serviços analíticos. Ele permite simplificar a governança de objetos do catálogo de dados e acessar dados seguros de serviços como o Amazon Redshift Spectrum.

Neste post, compartilhamos a solução usando Controle de acesso baseado em função (RBAC) do Amazon Redshift e Baseado em tags do AWS Lake Formation controle de acesso para usuários federados consultarem seu data lake usando o Amazon Redshift Spectrum.

Caso de uso

A BMO tinha mais de Petabyte(PB) de dados financeiros sensíveis classificados da seguinte forma:

  1. Informações de identificação pessoal (PII)
  2. Indústria de Cartões de Pagamento (PCI)
  3. Alto risco de privacidade (HPR)

O banco pretende armazenar dados em seu data warehouse Amazon Redshift e no data lake Amazon S3. Eles têm uma base grande e diversificada de usuários finais em vendas, marketing, risco de crédito e outras linhas de negócios e personas:

  1. Analistas de negócios
  2. Engenheiros de dados
  3. Cientistas de dados

O controle de acesso refinado precisa ser aplicado aos dados do Amazon Redshift e aos dados do data lake acessados ​​usando o Amazon Redshift Spectrum. O banco aproveita serviços da AWS como Cola AWS e Amazon Sage Maker nesta plataforma de análise. Eles também usam um provedor de identidade externo (IdP) para gerenciar sua base de usuários preferida e integrá-la a essas ferramentas analíticas. Os usuários finais acessam esses dados usando clientes SQL de terceiros e ferramentas de business intelligence.

Visão geral da solução

Nesta postagem, usaremos dados sintéticos muito semelhantes aos dados BMO com dados classificados como PII, PCI ou HPR. Usuários e grupos existem no IdP externo. Esses usuários federam para logon único no Amazon Redshift usando federação de IdP nativo. Definiremos as permissões usando o controle de acesso baseado em função (RBAC) do Redshift para as funções de usuário. Para usuários que acessam os dados no data lake usando o Amazon Redshift Spectrum, usaremos políticas do Lake Formation para controle de acesso.

Solução técnica

Para implementar as necessidades do cliente para proteger diferentes categorias de dados, é necessária a definição de várias funções do AWS IAM, o que requer conhecimento em políticas de IAM e manutenção delas quando os limites de permissão mudam.

Nesta postagem, mostramos como simplificamos o gerenciamento das políticas de classificação de dados com um número mínimo de funções Amazon Redshift AWS IAM alinhadas por classificação de dados, em vez de permutações e combinações de funções por linhas de negócios e classificações de dados. Outras organizações (por exemplo, Instituto de Serviços Financeiros [FSI]) podem se beneficiar da implementação da segurança e conformidade de dados do BMO.

Como parte deste blog, os dados serão carregados no Amazon S3. O acesso aos dados é controlado usando políticas definidas usando Redshift RBAC para grupos de usuários de provedores de identidade correspondentes e o controle de acesso baseado em TAG será implementado usando AWS Lake Formation para dados no S3.

Arquitetura da solução

O diagrama a seguir ilustra a arquitetura da solução junto com as etapas detalhadas.

  1. Usuários IdP com grupos como lob_risk_public, Lob_risk_pci, hr_public e hr_hpr são atribuídos no IdP Externo (Provedor de Identidade).
  2. Cada usuário é mapeado para as funções locais do Amazon Redshift que são enviadas do IdP e incluindo aad:lob_risk_pci, aad:lob_risk_public, aad:hr_public e aad:hr_hpr no Amazon Redshift. Por exemplo, User1 que faz parte de Lob_risk_public e hr_hpr concederá o uso da função de acordo.
  3. Anexar iam_redshift_hpr, iam_redshift_pcipii e iam_redshift_public Funções do AWS IAM para cluster do Amazon Redshift.
  4. Bancos de dados AWS Glue com suporte em s3 (por exemplo, lobrisk,lobmarket,hr e suas respectivas tabelas) são referenciados no Amazon Redshift. Usando o Amazon Redshift Spectrum, você pode consultar essas tabelas e bancos de dados externos (por exemplo, external_lobrisk_pci, external_lobrisk_public, external_hr_public e external_hr_hpr), que são criados usando funções AWS IAM iam_redshift_pcipii, iam_redshift_hpr, iam_redshift_public conforme mostrado nas etapas da solução.
  5. AWS Lake Formation é usado para controlar o acesso aos esquemas e tabelas externos.
  6. Usando tags do AWS Lake Formation, aplicamos o controle de acesso refinado a essas tabelas externas para funções AWS IAM (por exemplo, iam_redshift_hpr, iam_redshift_pcipii e iam_redshift_public).
  7. Por fim, conceda o uso desses esquemas externos às funções do Amazon Redshift.

Passo a passo

As seções a seguir orientam você na implementação da solução usando dados sintéticos.

Baixe os arquivos de dados e coloque-os em buckets

O Amazon S3 funciona como um data lake escalável e durável na AWS. Usando o Data Lake, você pode trazer quaisquer dados de formato aberto, como CSV, JSON, PARQUET ou ORC, para o Amazon S3 e realizar análises de seus dados.

As soluções utilizam arquivos de dados CSV contendo informações classificadas como PCI, PII, HPR ou Públicas. Você pode baixar os arquivos de entrada usando os links fornecidos abaixo. Usando o upload dos arquivos baixados para o Amazon S3 criando pastas e arquivos conforme mostrado na captura de tela abaixo, seguindo as instruções SUA PARTICIPAÇÃO FAZ A DIFERENÇA. Os detalhes de cada arquivo são fornecidos na lista a seguir:

Registre os arquivos no AWS Glue Data Catalog usando rastreadores

As instruções a seguir demonstram como registrar arquivos baixados no AWS Glue Data Catalog usando crawlers. Organizamos arquivos em bancos de dados e tabelas usando o AWS Glue Data Catalog, conforme as etapas a seguir. Recomenda-se revisar a documentação para saber como configurar corretamente um Banco de dados do AWS Glue. Os rastreadores podem automatizar o processo de registro de nossos arquivos baixados no catálogo, em vez de fazê-lo manualmente. Você criará os seguintes bancos de dados no Catálogo de dados do AWS Glue:

  • lobrisk
  • lobmarket
  • hr

Etapas de exemplo para criar um banco de dados AWS Glue para lobrisk os dados são os seguintes:

  • Vou ao Console do AWS Glue.
  • Em seguida, selecione Bases de dados para Catálogo de Dados.
  • Escolha Adicionar banco de dados e insira o nome dos bancos de dados como lobisco.
  • Selecionar Criar banco de dados, como mostrado na captura de tela a seguir.

Repita as etapas para criar outro banco de dados como lobmarket e hr.

Um AWS Glue Crawler verifica os arquivos acima e cataloga metadados sobre eles no AWS Glue Data Catalog. O Glue Data Catalog organiza esses dados do Amazon S3 em tabelas e bancos de dados, atribuindo colunas e tipos de dados para que os dados possam ser consultados usando SQL que o Amazon Redshift Spectrum possa entender. Por favor, revise o Documentação do AWS Glue sobre a criação do Glue Crawler. Depois que o rastreador do AWS Glue terminar a execução, você verá os seguintes bancos de dados e tabelas:

  • lobrisk
    • lob_risk_high_confidential_public
    • lob_risk_high_confidential
  • lobmarket
    • credit_card_transaction_pci
    • credit_card_transaction_pci_public
  • hr
    • customers_pii_hpr_public
    • customers_pii_hpr

Etapas de exemplo para criar um AWS Glue Crawler para lobrisk os dados são os seguintes:

  • Selecionar Rastreadores para Catálogo de Dados no console do AWS Glue.
  • Em seguida, escolha Criar rastreador. Forneça o nome do rastreador como lobrisk_crawler e escolha Próximo.

Certifique-se de selecionar a fonte de dados como Amazon S3 e navegue pelo caminho do Amazon S3 até o lob_risk_high_confidential_public pasta e escolha uma fonte de dados do Amazon S3.

  • Os rastreadores podem rastrear várias pastas no Amazon S3. Escolher Adicionar uma fonte de dados e inclua o caminho S3://<<Your Bucket >>/ lob_risk_high_confidential.

  • Depois de adicionar outra pasta Amazon S3, escolha Próximo.

  • A seguir, crie um novo Papel do IAM no Segurança de configuração configurações.
  • Escolha Próximo.

  • Selecione o banco de dados de destino como lobrisk. Escolher Próximo.

  • A seguir, sob Avaliações, escolha Criar rastreador.
  • Selecionar Executar rastreador. Isso cria duas tabelas: lob_risk_high_confidential_public e lob_risk_high_confidential no banco de dados lobrisk.

Da mesma forma, crie um rastreador AWS Glue para lobmarket e hr dados usando as etapas acima.

Criar funções AWS IAM

Usando o AWS IAM, crie as seguintes funções do IAM com permissões do Amazon Redshift, Amazon S3, AWS Glue e AWS Lake Formation.

Você pode criar funções AWS IAM neste serviço usando este link. Posteriormente, você poderá anexar uma política gerenciada a estas funções do IAM:

  • iam_redshift_pcipii (Função AWS IAM anexada ao cluster Amazon Redshift)
    • AmazonRedshiftFullAccess
    • AmazonS3FullAccess
    • Adicione uma política inline (Lakeformation-inline) para permissão do Lake Formation da seguinte forma:
      {
         "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "RedshiftPolicyForLF",
                  "Effect": "Allow",
                  "Action": [
                      "lakeformation:GetDataAccess"
                  ],
                  "Resource": "*"
              }
          ]

    • iam_redshift_hpr (Função AWS IAM anexada ao cluster do Amazon Redshift): Adicione o seguinte gerenciado:
      • AmazonRedshiftFullAccess
      • AmazonS3FullAccess
      • Adicione a política inline (Lakeformation-inline), que foi criada anteriormente.
    • iam_redshift_public (Função AWS IAM anexada ao cluster do Amazon Redshift): adicione a seguinte política gerenciada:
      • AmazonRedshiftFullAccess
      • AmazonS3FullAccess
      • Adicione a política inline (Lakeformation-inline), que foi criada anteriormente.
    • LF_admin (Administrador do Lake Formation): Adicione a seguinte política gerenciada:
      • AWSLakeFormationDataAdmin
      • AWSLakeFormationCrossAccountManager
      • AWSGlueConsoleFullAccess

Use o controle de acesso baseado em tags do Lake Formation (LF-TBAC) para controlar o acesso às tabelas do catálogo de dados do AWS Glue.

LF-TBAC é uma estratégia de autorização que define permissões com base em atributos. Usando LF_admin Administrador do Lake Formation, você pode criar tags LF, conforme mencionado nos detalhes a seguir:

Chave Valor
Classificação: HPR não sim
Classificação:PCI não sim
Classificação:PII não sim
Classificações não sensível, sensível

Siga as instruções abaixo para criar tags Lake Formation:

  • Faça login no console do Lake Formation (https://console.aws.amazon.com/lakeformation/) usando a função LF-Admin AWS IAM.
  • Acesse LF-Tags e permissões in Seções de permissões.
  • Selecionar Adicionar LF-Tag.

  • Crie as LF-Tags restantes conforme indicado na tabela anterior. Uma vez criadas você encontra as LF-Tags conforme mostrado abaixo.

Atribuir LF-TAG às tabelas de catálogo do AWS Glue

Atribuir tags do Lake Formation a tabelas normalmente envolve uma abordagem estruturada. O administrador do Lake Formation pode atribuir tags com base em vários critérios, como fonte de dados, tipo de dados, domínio comercial, proprietário dos dados ou qualidade dos dados. Você tem a capacidade de alocar LF-Tags para ativos do Data Catalog, incluindo bancos de dados, tabelas e colunas, o que permite gerenciar o acesso a recursos de maneira eficaz. O acesso a esses recursos é restrito aos principais que receberam LF-Tags correspondentes (ou àqueles que receberam acesso por meio da abordagem de recursos nomeados).

Siga as instruções no link fornecido para atribuir LF-TAGS ao Glue Tabelas do catálogo de dados:

Tabelas de catálogo de cola Chave Valor
customers_pii_hpr_public Classificação não sensível
customers_pii_hpr Classificação: HPR sim
credit_card_transaction_pci Classificação:PCI sim
credit_card_transaction_pci_public Classificações não sensível
lob_risk_high_confidential_public Classificações não sensível
lob_risk_high_confidential Classificação:PII sim

Siga as instruções abaixo para atribuir uma tag LF às tabelas Glue do console AWS da seguinte maneira:

  • Para acessar os bancos de dados no Lake Formation Console, vá para o Catálogo de dados seção e escolha Bases de dados.
  • Selecione os lobisco banco de dados e escolha Ver tabelas.
  • Selecionar lob_risk_high_confidencial tabela e edite o Tags LF.
  • Atribuir o Classificação: HPR as Chaves Atribuídas e Valores como Sim. Selecionar Salvar.

  • Da mesma forma, atribua a Classificação Chave e Valor como não sensível para lob_risk_high_confidential_public tabela.

Siga as instruções acima para atribuir tabelas às tabelas restantes para lobmarket e hr bases de dados.

Conceder permissões a recursos usando uma concessão de expressão LF-Tag para funções IAM do Redshift

Conceda selecionar, descreve Permissão do Lake Formation para LF-Tags e função Redshift IAM usando o Lake Formation Administrator no console do Lake Formation. Para conceder, siga o documentação.

Use a tabela a seguir para conceder a função IAM correspondente às tags LF:

Papel do IAM Chave de tags LF Valor das tags LF Permissão
iam_redshift_pcipii Classificação:PII sim Descreva, selecione
. Classificação:PCI sim .
iam_redshift_hpr Classificação: HPR sim Descreva, selecione
iam_redshift_public Classificações não sensível Descreva, selecione

Siga as instruções abaixo para conceder permissões a tags LF e funções IAM:

  • Escolha Permissões do data lake in Permissões seção no console do AWS Lake Formation.
  • Escolha Subsídios. Selecionar usuários IAM e papéis em Principais.
  • Em tags LF ou recursos de catálogo, selecione Chave as Classifications e valores as non-sensitive.

  • Em seguida, selecione Permissões de mesa as Selecione e descreva. Escolher subsídios.

Siga as instruções acima para as tags LF restantes e suas funções IAM, conforme mostrado na tabela anterior.

Mapeie os grupos de usuários IdP para as funções do Redshift

No Redshift, use a federação de IdP nativo para mapear os grupos de usuários IdP para as funções do Redshift. Usar Editor de consultas V2.

create role aad:rs_lobrisk_pci_role;
create role aad:rs_lobrisk_public_role;
create role aad:rs_hr_hpr_role;
create role aad:rs_hr_public_role;
create role aad:rs_lobmarket_pci_role;
create role aad:rs_lobmarket_public_role;

Criar esquemas externos

No Redshift, crie esquemas externos usando funções AWS IAM e bancos de dados do AWS Glue Catalog. Esquemas externos são criados de acordo com a classificação de dados usando iam_role.

create external schema external_lobrisk_pci
from data catalog
database 'lobrisk'
iam_role 'arn:aws:iam::571750435036:role/iam_redshift_pcipii';

create external schema external_hr_hpr
from data catalog
database 'hr'
iam_role 'arn:aws:iam::571750435036:role/iam_redshift_hpr';

create external schema external_lobmarket_pci
from data catalog
database 'lobmarket'
iam_role 'arn:aws:iam::571750435036:role/iam_redshift_pcipii';

create external schema external_lobrisk_public
from data catalog
database 'lobrisk'
iam_role 'arn:aws:iam::571750435036:role/iam_redshift_public';

create external schema external_hr_public
from data catalog
database 'hr'
iam_role 'arn:aws:iam::571750435036:role/iam_redshift_public';

create external schema external_lobmarket_public
from data catalog
database 'lobmarket'
iam_role 'arn:aws:iam::571750435036:role/iam_redshift_public';

Verifique a lista de tabelas

Verifique a lista de tabelas em cada esquema externo. Cada esquema lista apenas as tabelas que o Lake Formation concedeu IAM_ROLES usado para criar esquema externo. Abaixo está a lista de tabelas na saída da edição v2 da consulta Redshift no canto superior esquerdo.

Conceder uso em esquemas externos para diferentes funções locais do Redshift

No Redshift, conceda o uso em esquemas externos a diferentes funções locais do Redshift da seguinte forma:

grant usage on schema external_lobrisk_pci to role aad:rs_lobrisk_pci_role;
grant usage on schema external_lobrisk_public to role aad:rs_lobrisk_public_role;

grant usage on schema external_lobmarket_pci to role aad:rs_lobmarket_pci_role;
grant usage on schema external_lobmarket_public to role aad:rs_lobmarket_public_role;

grant usage on schema external_hr_hpr_pci to role aad:rs_hr_hpr_role;
grant usage on schema external_hr_public to role aad:rs_hr_public_role;

Verifique o acesso ao esquema externo

Verifique o acesso ao esquema externo usando o usuário da equipe Lob Risk. Do utilizador lobrisk_pci_user federado na função local do Amazon Redshift rs_lobrisk_pci_role. Papel rs_lobrisk_pci_role só tem acesso ao esquema externo external_lobrisk_pci.

set session_authorization to creditrisk_pci_user;
select * from external_lobrisk_pci.lob_risk_high_confidential limit 10;

Ao consultar a tabela de external_lobmarket_pci esquema, você verá que sua permissão foi negada.

set session_authorization to lobrisk_pci_user;
select * from external_lobmarket_hpr.lob_card_transaction_pci;

Provisionamento de acesso automatizado do BMO

Trabalhando com o banco, desenvolvemos uma estrutura de provisionamento de acesso que permite ao banco criar um repositório central de usuários e a quais dados eles têm acesso. O arquivo de política é armazenado no Amazon S3. Quando o arquivo é atualizado, ele é processado, as mensagens são colocadas em Amazon SQS. AWS Lambda usando API de dados é usado para aplicar controle de acesso às funções do Amazon Redshift. Simultaneamente, AWS Lambda é usado para automatizar o controle de acesso baseado em tags no AWS Lake Formation.

Os benefícios da adoção deste modelo foram:

  1. Criou um processo de automação escalonável para permitir a aplicação dinâmica de políticas em mudança.
  2. Simplificou a integração e o processamento de acessos de usuários com o gerenciamento de acesso empresarial existente.
  3. Capacitou cada linha de negócios para restringir o acesso aos dados confidenciais de sua propriedade e proteger os dados e a privacidade dos clientes em nível empresarial.
  4. Simplificou o gerenciamento e a manutenção de funções do AWS IAM, reduzindo bastante o número de funções necessárias.

Com o recente lançamento da integração do Amazon Redshift com o AWS Identity Center, que permite a propagação de identidade no serviço AWS, pode ser aproveitado para simplificar e dimensionar isso implementação.

Conclusão

Nesta postagem, mostramos como implementar controles de acesso robustos para dados confidenciais de clientes no Amazon Redshift, o que foi um desafio ao tentar definir muitas funções distintas do AWS IAM. A solução apresentada nesta postagem demonstra como as organizações podem atender às necessidades de segurança e conformidade de dados com uma abordagem consolidada, usando um conjunto mínimo de funções AWS IAM organizadas por classificação de dados em vez de linhas de negócios.

Ao usar a integração nativa do Amazon Redshift com IdP externo e definir políticas RBAC no Redshift e no AWS Lake Formation, controles de acesso granulares podem ser aplicados sem criar um número excessivo de funções distintas. Isso permite os benefícios do acesso baseado em função e, ao mesmo tempo, minimiza a sobrecarga administrativa.

Outras instituições de serviços financeiros que procuram proteger os dados dos clientes e cumprir os regulamentos de conformidade podem seguir uma abordagem RBAC consolidada semelhante. A definição cuidadosa de políticas, alinhada à confidencialidade dos dados e não às funções de negócios, pode ajudar a reduzir a proliferação de funções AWS IAM. Esse modelo equilibra segurança, conformidade e capacidade de gerenciamento para governança de dados confidenciais no Amazon Redshift e em plataformas de dados em nuvem mais amplas.

Resumindo, um modelo RBAC centralizado baseado na classificação de dados agiliza o gerenciamento de acesso, ao mesmo tempo que fornece segurança e conformidade de dados robustas. Essa abordagem pode beneficiar qualquer organização que gerencia informações confidenciais de clientes na nuvem.


Sobre os autores

Amy Tseng é Diretor Geral de Integração de Dados e Análise (DnA) na BMO. Ela é uma das AWS Data Hero. Ela tem mais de 7 anos de experiência em migrações de dados e análises para nuvem na AWS. Fora do trabalho, Amy adora viajar e fazer caminhadas.

Jack Lin é Diretor de Engenharia da Plataforma de Dados da BMO. Ele tem mais de 20 anos de experiência trabalhando em engenharia de plataforma e engenharia de software. Fora do trabalho, Jack adora jogar futebol, assistir jogos de futebol e viajar.

Régis Chow é Diretor de Integração de DNA na BMO. Ele tem mais de 5 anos de experiência trabalhando na nuvem e gosta de resolver problemas por meio da inovação na AWS. Fora do trabalho, Regis adora todas as atividades ao ar livre, ele é especialmente apaixonado por golfe e por cuidar do gramado.

Nishchai JM é um arquiteto de soluções especialista em análise na Amazon Web Services. Ele é especialista em criar aplicativos de Big Data e ajudar o cliente a modernizar seus aplicativos na nuvem. Ele acha que os dados são um novo petróleo e passa a maior parte do tempo extraindo insights dos dados.

Harshida Patel é arquiteto de soluções principal e analítico da AWS.

Raghu Kuppala é um arquiteto de soluções especialista em análise com experiência em bancos de dados, armazenamento de dados e espaço analítico. Fora do trabalho, ele gosta de experimentar diferentes culinárias e de passar tempo com a família e amigos.

local_img

Inteligência mais recente

local_img