Gerenciar permissões para unidades de compartilhamento de dados no Amazon Redshift
Como administrador de produtor, você mantém o controle dos conjuntos de dados que está compartilhando. Você pode adicionar novos objetos ao datashare ou removê-los de lá. Você também pode conceder ou revogar acesso a unidades de compartilhamento de dados como um todo para os clusters de consumidores, contas da AWS ou regiões da AWS. Quando as permissões são revogadas, os clusters de consumidor perdem imediatamente o acesso aos objetos compartilhados e deixam de visualizá-los na lista de unidades de compartilhamento de dados INBOUND no SVV_DATASHARES.
O exemplo a seguir cria a unidade de compartilhamento de dados salesshare
e adiciona o esquema public
e a tabela public.tickit_sales_redshift
a salesshare
. Ele também concede permissões de uso no salesshare
para o namespace especificado.
CREATE DATASHARE salesshare;
ALTER DATASHARE salesshare ADD SCHEMA public;
ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Para CREATE DATASHARE, superusuários e proprietários de bancos de dados podem criar conjuntos de dados. Para obter mais informações, consulte CREATE DATASHARE. Para ALTER DATASHARE, o proprietário do datashare com as permissões necessárias nos objetos de datashare a serem adicionados ou removidos pode alterar o datashare. Para ter mais informações, consulte ALTER DATASHARE.
Como administrador de produtores, quando você solta um datashare, ele deixa de ser listado em clusters de consumidores. Os bancos de dados e referências de esquema criados no cluster de consumidor a partir do datashare descartado continuam a existir sem objetos neles. O administrador do consumidor deve excluir esses bancos de dados manualmente.
Do lado do consumidor, um administrador de consumidor pode determinar quais usuários e grupos devem ter acesso aos dados compartilhados criando um banco de dados da unidade de compartilhamento de dados. Dependendo das opções escolhidas ao criar o banco de dados, você pode controlar o acesso a ele da maneira a seguir. Para obter mais informações sobre como criar um banco de dados a partir de uma unidade de compartilhamento de dados, consulte CREATE DATABASE.
Consulte mais informações sobre como configurar uma unidade de compartilhamento de dados e ler dados de um consumidor em Compartilhar o acesso de leitura aos dados em uma Conta da AWS.
Criação do bancos de dados sem a cláusula WITH PERMISSIONS
Um administrador pode controlar o acesso no nível do banco de dados ou do esquema. Para controlar o acesso no nível do esquema, o administrador deve criar um esquema externo a partir do banco de dados do Amazon Redshift criado com base na unidade de compartilhamento de dados.
O exemplo a seguir concede permissões para acessar uma tabela compartilhada no nível de banco de dados e no nível de esquema.
GRANT USAGE ON DATABASE sales_db TO Bob;
CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE sales_db SCHEMA 'public';
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Para restringir ainda mais o acesso, você pode criar exibições sobre objetos compartilhados, expondo apenas os dados necessários. Você pode acabar usando essas exibições para dar acesso aos usuários e às funções.
Depois que os usuários tiverem acesso ao banco de dados ou esquema, eles terão acesso a todos os objetos compartilhados nesse banco de dados ou esquema.
Criação do bancos de dados com a cláusula WITH PERMISSIONS
Depois de conceder direitos de uso no banco de dados ou no esquema, um administrador poderá controlar ainda mais o acesso usando o mesmo processo de concessão da permissão que usaria em um banco de dados ou esquema local. Sem permissões de objeto individual, os usuários não podem acessar nenhum objeto no banco de dados compartilhado ou no esquema, mesmo depois de receberem a permissão USAGE.
O exemplo a seguir concede permissões para ter acesso a uma tabela compartilhada no nível do banco de dados.
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE FOR SCHEMAS IN DATABASE sales_db TO Bob;
GRANT SELECT ON sales_db.public.tickit_sales_redshift TO Bob;
Depois que tiverem recebido acesso ao banco de dados ou ao esquema, os usuários continuarão precisando receber as permissões relevantes para qualquer objeto no banco de dados ou esquema que você queira que eles acessem.
Compartilhamento detalhado usando WITH PERMISSIONS
Você pode utilizar o compartilhamento detalhado usando WITH PERMISSIONS para permitir que clusters ou grupos de trabalho sem servidor consultem a unidade de compartilhamento de dados. Esse processo pressupõe que a unidade de compartilhamento de dados tenha origem em outro cluster ou no namespace do Amazon Redshift sem servidor em sua conta ou esteja vindo de outra conta e tenha sido associada ao namespace que você está usando.
-
O administrador do banco de dados consumidor pode criar um banco de dados a partir da unidade de compartilhamento de dados.
CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';
Se criar um banco de dados WITH PERMISSIONS, você poderá conceder permissões detalhadas em objetos de unidade de compartilhamento de dados para usuários e perfis diferentes. Sem isso, todos os usuários e funções com permissão USAGE no banco de dados da unidade de compartilhamento de dados recebem todas as permissões em todos os objetos dentro do banco de dados da unidade de compartilhamento de dados.
-
Aqui está como conceder permissões a um usuário ou função do banco de dados do Redshift. Você deve ter uma conexão com um banco de dados local para executar essas instruções: Você não poderá executar essas instruções se executar um comando USE no banco de dados da unidade de compartilhamento de dados antes de executar as instruções de concessão.
GRANT USAGE ON DATABASE my_ds_db TO ROLE data_eng; GRANT CREATE, USAGE ON SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng; GRANT ALL ON ALL TABLES IN SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng; GRANT USAGE ON DATABASE my_ds_db TO bi_user; GRANT USAGE ON SCHEMA my_ds_db.my_shared_schema TO bi_user; GRANT SELECT ON my_ds_db.my_shared_schema.table1 TO bi_user;