AWS – Redshift – Usuário para leituras


O Redshift tem umas vantagens bem interessantes, baixo custo, RDS, baixa necessidade de manutenção.

No fundo ele é um PostgreSQL modificado para prover volume de dados e não ficar trabalhando como OLTP, ele é ótimo como estrutura para DW.

Imagine o seguinte cenário, você vende uma solução mas precisa prover um acesso do seu cliente para que ele consiga acessar uma parte dos dados diretamente na sua estrutura de banco, para ele “ter a liberdade” de cruzar esses dados, montar estruturas de relatórios, etc. da forma que ele achar mais interessante, ou até mesmo exportar esses dados para uma estrutura dele e usar da forma que achar melhor.

Certo, temos várias formas de fazer isso, todas tem seus prós e contras, mas nesse caso vou usar como exemplo justamente o título do post, vamos colocar os dados no Redshift.

Então, você tem alguma forma de extração de dados incrementais (SSIS, Pentaho, Informática, estagiário, etc.) que leva os dados do seu OLTP para o Redshift e isso funciona bem.

Agora você precisa criar a estrutura de permissões para liberar o acesso do seu cliente para essa estrutura de dados.

Uma coisa muito importante : Todos os usuários do Redshift são exclusivos do banco de dados e não da instância, Então caso o cliente tenha mais de um banco ou você queira dar permissão para mais de um banco, siga o processo quantas vezes for necessário.

— Normalmente quando os objetos são criados no Redshift ele ficam armazenados no schema public.
— Isso não é um problema, o problema começa quando é criado um schema para armazenar um outro conjunto de objetos
— para um setor da empresa, ou um outro departamento…
— Quando isso acontece, o usuário owner da carga dos objetos tem acesso a essa estrutura de dados sem problema, mas novos usuários,
— ou usuários permissonalizados não tem a permissão para os objetos ou para novos objetos nesse schema.
— O script abaixo tente a sanar um cenário em que você quer liberar o acesso de select para os objetos e novo objetos em um schema pulic
— ou personalizado sem ter que ficar dando grant toda a vez que novos objetos são criados.
— Outra opção de uso é caso você tenha um Redshift na sua empresa e venda como serviço ele como datalake para algum cliente.
— dessa forma você consegue liberar um usuário para que o cliente acesse a estrutura de dados e consiga baixar os dados.

-- Normalmente quando os objetos são criados no Redshift ele ficam armazenados no schema public.
-- Isso não é um problema, o problema começa quando é criado um schema para armazenar um outro conjunto de objetos
-- para um setor da empresa, ou um outro departamento...
-- Quando isso acontece, o usuário owner da carga dos objetos tem acesso a essa estrutura de dados sem problema, mas novos usuários,
-- ou usuários permissonalizados não tem a permissão para os objetos ou para novos objetos nesse schema.
-- O script abaixo tente a sanar um cenário em que você quer liberar o acesso de select para os objetos e novo objetos em um schema pulic
-- ou personalizado sem ter que ficar dando grant toda a vez que novos objetos são criados.
-- Outra opção de uso é caso você tenha um Redshift na sua empresa e venda como serviço ele como datalake para algum cliente.
-- dessa forma você consegue liberar um usuário para que o cliente acesse a estrutura de dados e consiga baixar os dados.

-- criar um usuário
create user <username> with password ‘<password>’;

-- cria um grupo para receber as permissões
create group data_viewers;

-- adiciona o usuário ao grupo
alter group data_viewers add user <username>;

-- nesse caso remove a opção de criar objetos para os usuários do grupo
revoke create on schema public from group data_viewers;

-- atribui acesso no schema public ao grupo
grant usage on schema public to group data_viewers;

-- atribui select em todas as tabelas do schema public para o grupo
grant select on all tables in schema public to group data_viewers;

-- atribui acesso a futuros objetos do schema public para o grupo
alter default privileges in schema public grant select on tables to group data_viewers

novos códigos serão criados também em outro repositório:

https://github.com/bigleka

Leia


3M D14 D3 V3R40, 3574V4 N4 PR414, 0853RV4ND0 DU45 CR14NC45 8R1NC4ND0 N4 4R314. 3L45 7R484LH4V4M MU170 C0N57RU1ND0 UM C4573L0 D3 4R314, C0M 70RR35, P4554R3L45 3 P4554G3NS 1N73RN45. QU4ND0 3575V4M QU453 4C484ND0, V310 UM4 0ND4 3 D357RU1U 7UD0, R3DU21ND0 0 C4573L0 4 UM M0N73 D3 4R314 3 35PUM4.
4CH31 QU3, D3P015 D3 74N70 35F0RC0 3 CU1D4D0, 45 CR14NC45 C41R14M N0 CH0R0, C0RR3R4M P3L4 PR414, FUG1ND0 D4 4GU4, R1ND0 D3 M405 D4D45 3 C0M3C4R4M 4 C0N57RU1R 0U7R0 C4573L0. C0MPR33ND1 QU3 H4V14 4PR3ND1D0 UM4 GR4ND3 L1C40; G4574M05 MU170 73MP0 D4 N0554 V1D4 C0N57RU1ND0 4LGUM4 C0154 3 M415 C3D0 0U M415 74RD3, UM4 0ND4 P0D3R4 V1R 3 D357RU1R 7UD0 0 QU3 L3V4M05 74N70 73MP0 P4R4 C0N57RU1R. M45 QU4ND0 1550 4C0N73C3R 50M3N73 4QU3L3 QU3 73M 45 M405 D3 4LGU3M P4R4 53GUR4R, 53R4 C4P42 D3 50RR1R! S0 0 QU3 P3RM4N3C3 3 4 4M124D3, 0 4M0R 3 0 C4R1NH0.

0 R3570 3 F3170 D3 4R314