Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Tutorial: Criar funções e consultar com o RBAC - Amazon Redshift

Tutorial: Criar funções e consultar com o RBAC

Com o RBAC, você pode criar funções com permissões para executar comandos que costumavam exigir permissões de superusuário. Os usuários podem executar esses comandos, desde que sejam autorizados com uma função que inclua essas permissões.

Neste tutorial, você usa o controle de acesso por função (RBAC) para gerenciar permissões em um banco de dados que você cria. Em seguida, você se conecta ao banco de dados e o consulta usando duas funções diferentes para testar a funcionalidade de RBAC.

As duas funções que você cria e usa para consultar o banco de dados são sales_ro e sales_rw. Você cria a função sales_ro e consulta os dados como um usuário com a função sales_ro. O usuário sales_ro pode usar o comando SELECT, mas não pode usar o comando UPDATE. Em seguida, você cria a função sales_rw e consulta os dados como um usuário com a função sales_rw. O usuário sales_rw pode usar o comando SELECT e o comando UPDATE.

Além disso, você também pode criar funções para limitar o acesso a determinados comandos e atribuir a função a superusuários ou usuários.

Tarefas

Pré-requisitos

Etapa 1: Criar um usuário administrador

Para configurar este tutorial, você cria uma função de administrador de banco de dados e a anexa a um usuário administrador de banco de dados nesta etapa. Você deve criar o administrador do banco de dados como superusuário ou administrador de função.

Execute todas as consultas no Editor de Consultas v2 do Amazon Redshift.

  1. Para criar a função de administrador db_admin, use o exemplo a seguir.

    CREATE ROLE db_admin;
  2. Para criar um usuário do banco de dados chamado dbadmin, use o exemplo a seguir.

    CREATE USER dbadmin PASSWORD 'Test12345';
  3. Para conceder a função definida pelo sistema chamada sys:dba à função db_admin, use o exemplo a seguir. Quando a função sys:dba é concedida, o usuário dbadmin pode criar esquemas e tabelas. Para ter mais informações, consulte Funções definidas pelo sistema do Amazon Redshift.

Etapa 2: Configurar esquemas

Nesta etapa, você se conecta ao seu banco de dados como administrador do banco de dados. Em seguida, você cria dois esquemas e adiciona dados a eles.

  1. Conecte-se ao banco de dados dev como o usuário dbadmin utilizando o editor de consultas v2. Para ter mais informações sobre como se conectar a um banco de dados, consulte Trabalhar com o editor de consultas v2.

  2. Para criar esquemas de bancos de dados de vendas e marketing, use o exemplo a seguir.

    CREATE SCHEMA sales; CREATE SCHEMA marketing;
  3. Para criar e inserir valores em tabelas em um esquema de vendas, use o exemplo a seguir.

    CREATE TABLE sales.cat( catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50) ); INSERT INTO sales.cat(SELECT * FROM category); CREATE TABLE sales.dates( dateid smallint, caldate date, day char(3), week smallint, month char(5), qtr char(5), year smallint, holiday boolean ); INSERT INTO sales.dates(SELECT * FROM date); CREATE TABLE sales.events( eventid integer, venueid smallint, catid smallint, dateid smallint, eventname varchar(200), starttime timestamp ); INSERT INTO sales.events(SELECT * FROM event); CREATE TABLE sales.sale( salesid integer, listid integer, sellerid integer, buyerid integer, eventid integer, dateid smallint, qtysold smallint, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp ); INSERT INTO sales.sale(SELECT * FROM sales);
  4. Para criar e inserir valores em tabelas em um esquema de marketing, use o exemplo a seguir.

    CREATE TABLE marketing.cat( catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50) ); INSERT INTO marketing.cat(SELECT * FROM category); CREATE TABLE marketing.dates( dateid smallint, caldate date, day char(3), week smallint, month char(5), qtr char(5), year smallint, holiday boolean ); INSERT INTO marketing.dates(SELECT * FROM date); CREATE TABLE marketing.events( eventid integer, venueid smallint, catid smallint, dateid smallint, eventname varchar(200), starttime timestamp ); INSERT INTO marketing.events(SELECT * FROM event); CREATE TABLE marketing.sale( marketingid integer, listid integer, sellerid integer, buyerid integer, eventid integer, dateid smallint, qtysold smallint, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp ); INSERT INTO marketing.sale(SELECT * FROM marketing);

Etapa 3: Criar um usuário somente leitura

Nesta etapa, você cria uma função somente leitura e um salesanalyst para a função somente leitura. O analista de vendas só precisa de acesso somente leitura às tabelas no esquema de vendas para realizar a tarefa atribuída de encontrar os eventos que geraram as comissões mais altas.

  1. Conecte-se ao banco de dados como o usuário dbadmin.

  2. Para criar a função sales_ro, use o exemplo a seguir.

    CREATE ROLE sales_ro;
  3. Para criar a função salesanalyst, use o exemplo a seguir.

    CREATE USER salesanalyst PASSWORD 'Test12345';
  4. Para conceder acesso de uso e seleção à função sales_ro aos objetos do esquema de vendas, use o exemplo a seguir.

    GRANT USAGE ON SCHEMA sales TO ROLE sales_ro; GRANT SELECT ON ALL TABLES IN SCHEMA sales TO ROLE sales_ro;
  5. Para conceder ao usuário salesanalyst a função sales_ro, use o exemplo a seguir.

    GRANT ROLE sales_ro TO salesanalyst;

Etapa 4: Consultar os dados como usuário somente leitura

Nesta etapa, o usuário salesanalyst consulta os dados do esquema de vendas. Em seguida, o usuário salesanalyst tenta atualizar uma tabela e ler tabelas no esquema de marketing.

  1. Conecte-se ao banco de dados como o usuário salesanalyst.

  2. Para encontrar as dez vendas com as comissões mais altas, use o exemplo a seguir.

    SET SEARCH_PATH TO sales; SELECT DISTINCT events.dateid, sale.commission, cat.catname FROM sale, events, dates, cat WHERE events.dateid=dates.dateid AND events.dateid=sale.dateid AND events.catid = cat.catid ORDER BY 2 DESC LIMIT 10; +--------+------------+----------+ | dateid | commission | catname | +--------+------------+----------+ | 1880 | 1893.6 | Pop | | 1880 | 1893.6 | Opera | | 1880 | 1893.6 | Plays | | 1880 | 1893.6 | Musicals | | 1861 | 1500 | Plays | | 2003 | 1500 | Pop | | 1861 | 1500 | Opera | | 2003 | 1500 | Plays | | 1861 | 1500 | Musicals | | 1861 | 1500 | Pop | +--------+------------+----------+
  3. Para selecionar dez eventos na tabela de eventos no esquema de vendas, use o exemplo a seguir.

    SELECT * FROM sales.events LIMIT 10; +---------+---------+-------+--------+--------------------+---------------------+ | eventid | venueid | catid | dateid | eventname | starttime | +---------+---------+-------+--------+--------------------+---------------------+ | 4836 | 73 | 9 | 1871 | Soulfest | 2008-02-14 19:30:00 | | 5739 | 41 | 9 | 1871 | Fab Faux | 2008-02-14 19:30:00 | | 627 | 229 | 6 | 1872 | High Society | 2008-02-15 14:00:00 | | 2563 | 246 | 7 | 1872 | Hamlet | 2008-02-15 20:00:00 | | 7703 | 78 | 9 | 1872 | Feist | 2008-02-15 14:00:00 | | 7903 | 90 | 9 | 1872 | Little Big Town | 2008-02-15 19:30:00 | | 7925 | 101 | 9 | 1872 | Spoon | 2008-02-15 19:00:00 | | 8113 | 17 | 9 | 1872 | Santana | 2008-02-15 15:00:00 | | 463 | 303 | 8 | 1873 | Tristan und Isolde | 2008-02-16 19:00:00 | | 613 | 236 | 6 | 1873 | Pal Joey | 2008-02-16 15:00:00 | +---------+---------+-------+--------+--------------------+---------------------+
  4. Para tentar atualizar eventname para eventid 1, execute o exemplo a seguir. Este exemplo gerará um erro de permissão negada porque o usuário salesanalyst só tem permissões SELECT na tabela de eventos no esquema de vendas. Para atualizar a tabela de eventos, você deve conceder permissões UPDATE à função sales_ro. Para obter mais informações sobre como conceder permissões para atualizar uma tabela, consulte o parâmetro UPDATE para GRANT. Para obter mais informações sobre o comando UPDATE, consulte UPDATE.

    UPDATE sales.events SET eventname = 'Comment event' WHERE eventid = 1; ERROR: permission denied for relation events
  5. Para tentar selecionar todos os eventos na tabela no esquema de marketing, use o exemplo a seguir. Este exemplo gerará um erro de permissão negada porque o usuário salesanalyst só tem permissões SELECT para a tabela de eventos no esquema de vendas. Para selecionar dados da tabela de eventos no esquema de marketing, você deve conceder à função sales_ro as permissões SELECT na tabela de eventos do esquema de marketing.

    SELECT * FROM marketing.events; ERROR: permission denied for schema marketing

Etapa 5: Criar um usuário de leitura e gravação

Nesta etapa, o engenheiro de vendas responsável por criar o pipeline de extração, transformação e carregamento (ETL) para processamento de dados no esquema de vendas receberá acesso somente leitura, mas posteriormente receberá acesso de leitura e gravação para realizar suas tarefas.

  1. Conecte-se ao banco de dados como o usuário dbadmin.

  2. Para criar a função sales_rw no esquema de vendas, use o exemplo a seguir.

    CREATE ROLE sales_rw;
  3. Para criar o usuário salesengineer, use o exemplo a seguir.

    CREATE USER salesengineer PASSWORD 'Test12345';
  4. Para conceder acesso de uso e seleção à função sales_rw aos objetos do esquema de vendas atribuindo a função sales_ro a ela, use o exemplo a seguir. Para obter mais informações sobre como as funções herdam permissões no Amazon Redshift, consulte Hierarquia de funções.

    GRANT ROLE sales_ro TO ROLE sales_rw;
  5. Para atribuir a função sales_rw ao usuário salesengineer, use o exemplo a seguir.

    GRANT ROLE sales_rw TO salesengineer;

Etapa t: Consultar os dados como o usuário com a função somente leitura herdada

Nesta etapa, o usuário salesengineer tenta atualizar a tabela de eventos antes de receber permissões de leitura.

  1. Conecte-se ao banco de dados como o usuário salesengineer.

  2. O usuário salesengineer pode ler com êxito os dados da tabela de eventos do esquema de vendas. Para selecionar o evento com eventid 1 na tabela de eventos no esquema de vendas, use o exemplo a seguir.

    SELECT * FROM sales.events where eventid=1; +---------+---------+-------+--------+-----------------+---------------------+ | eventid | venueid | catid | dateid | eventname | starttime | +---------+---------+-------+--------+-----------------+---------------------+ | 1 | 305 | 8 | 1851 | Gotterdammerung | 2008-01-25 14:30:00 | +---------+---------+-------+--------+-----------------+---------------------+
  3. Para tentar selecionar todos os eventos na tabela no esquema de marketing, use o exemplo a seguir. Como o usuário salesengineer não tem permissões para tabelas no esquema de marketing, essa consulta gerará um erro de permissão negada. Para selecionar dados da tabela de eventos no esquema de marketing, você deve conceder à função sales_rw as permissões SELECT na tabela de eventos do esquema de marketing.

    SELECT * FROM marketing.events; ERROR: permission denied for schema marketing
  4. Para tentar atualizar eventname para eventid 1, execute o exemplo a seguir. Este exemplo gerará um erro de permissão negada porque o usuário salesengineer só tem permissões de seleção na tabela de eventos no esquema de vendas. Para atualizar a tabela de eventos, você deve conceder permissões de UPDATE à função sales_rw.

    UPDATE sales.events SET eventname = 'Comment event' WHERE eventid = 1; ERROR: permission denied for relation events

Etapa 7: Conceder permissões de atualização e inserção à função de leitura e gravação

Nesta etapa, você concede permissões de atualização e inserção à função sales_rw.

  1. Conecte-se ao banco de dados como o usuário dbadmin.

  2. Para conceder as permissões UPDATE, INSERT e DELETE à função sales_rw, use o exemplo a seguir.

    GRANT UPDATE, INSERT, ON ALL TABLES IN SCHEMA sales TO role sales_rw;

Etapa 8: Consultar os dados como o usuário de leitura e gravação

Nesta etapa, o usuário salesengineer atualiza com êxito a tabela depois que sua função recebe as permissões de inserção e atualização. Em seguida, ele tenta analisar e limpar a tabela de eventos, mas não consegue fazer isso.

  1. Conecte-se ao banco de dados como o usuário salesengineer.

  2. Para atualizar eventname para eventid 1, execute o exemplo a seguir.

    UPDATE sales.events SET eventname = 'Comment event' WHERE eventid = 1;
  3. Para visualizar a alteração feita na consulta anterior, use o exemplo a seguir para selecionar o evento com eventid 1 na tabela de eventos no esquema de vendas.

    SELECT * FROM sales.events WHERE eventid=1; +---------+---------+-------+--------+---------------+---------------------+ | eventid | venueid | catid | dateid | eventname | starttime | +---------+---------+-------+--------+---------------+---------------------+ | 1 | 305 | 8 | 1851 | Comment event | 2008-01-25 14:30:00 | +---------+---------+-------+--------+---------------+---------------------+
  4. Para analisar a tabela de eventos atualizada no esquema de vendas, use o exemplo a seguir. Este exemplo gerará um erro de permissão negada porque o usuário salesengineer não tem as permissões necessárias e não é o proprietário da tabela de eventos no esquema de vendas. Para analisar a tabela de eventos, você deve conceder permissões ANALYZE à função sales_rw usando o comando GRANT. Para obter mais informações sobre o comando ANALYZE, consulte ANALYZE.

    ANALYZE sales.events; ERROR: skipping "events" --- only table or database owner can analyze
  5. Para limpar a tabela de eventos atualizada, use o exemplo a seguir. Este exemplo gerará um erro de permissão negada porque o usuário salesengineer não tem as permissões necessárias e não é o proprietário da tabela de eventos no esquema de vendas. Para limpar a tabela de eventos, você deve conceder permissões VACUUM à função sales_rw usando o comando GRANT. Para obter mais informações sobre o comando VACUUM, consulte VACUUM.

    VACUUM sales.events; ERROR: skipping "events" --- only table or database owner can vacuum it

Etapa 9: Analisar e limpar tabelas em um banco de dados como o usuário administrador

Nesta etapa, o usuário dbadmin analisa e limpa todas as tabelas. O usuário tem permissões de administrador nesse banco de dados, então ele pode executar esses comandos.

  1. Conecte-se ao banco de dados como o usuário dbadmin.

  2. Para analisar a tabela de eventos no esquema de vendas, use o exemplo a seguir.

    ANALYZE sales.events;
  3. Para limpar a tabela de eventos no esquema de vendas, use o exemplo a seguir.

    VACUUM sales.events;
  4. Para analisar a tabela de eventos no esquema de marketing, use o exemplo a seguir.

    ANALYZE marketing.events;
  5. Para limpar a tabela de eventos no esquema de marketing, use o exemplo a seguir.

    VACUUM marketing.events;

Etapa 10: Truncar tabelas como o usuário de leitura e gravação

Nesta etapa, o usuário salesengineer tenta truncar a tabela de eventos no esquema de vendas, mas só consegue quando o usuário dbadmin concede permissões para truncar.

  1. Conecte-se ao banco de dados como o usuário salesengineer.

  2. Para tentar excluir todas as linhas na tabela de eventos no esquema de vendas, use o exemplo a seguir. Este exemplo gerará um erro porque o usuário salesengineer não tem as permissões necessárias e não é o proprietário da tabela de eventos no esquema de vendas. Para truncar a tabela de eventos, você deve conceder permissões TRUNCATE à função sales_rw usando o comando GRANT. Para obter mais informações sobre o comando TRUNCATE, consulte TRUNCATE.

    TRUNCATE sales.events; ERROR: must be owner of relation events
  3. Conecte-se ao banco de dados como o usuário dbadmin.

  4. Para conceder à função sales_rw privilégios para truncar a tabela, use o exemplo a seguir.

    GRANT TRUNCATE TABLE TO role sales_rw;
  5. Conecte-se ao banco de dados como o usuário salesengineer utilizando o editor de consultas v2.

  6. Para ler os dez primeiros eventos na tabela de eventos no esquema de vendas, use o exemplo a seguir.

    SELECT * FROM sales.events ORDER BY eventid LIMIT 10; +---------+---------+-------+--------+-----------------------------+---------------------+ | eventid | venueid | catid | dateid | eventname | starttime | +---------+---------+-------+--------+-----------------------------+---------------------+ | 1 | 305 | 8 | 1851 | Comment event | 2008-01-25 14:30:00 | | 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00 | | 3 | 302 | 8 | 1935 | Salome | 2008-04-19 14:30:00 | | 4 | 309 | 8 | 2090 | La Cenerentola (Cinderella) | 2008-09-21 14:30:00 | | 5 | 302 | 8 | 1982 | Il Trovatore | 2008-06-05 19:00:00 | | 6 | 308 | 8 | 2109 | L Elisir d Amore | 2008-10-10 19:30:00 | | 7 | 309 | 8 | 1891 | Doctor Atomic | 2008-03-06 14:00:00 | | 8 | 302 | 8 | 1832 | The Magic Flute | 2008-01-06 20:00:00 | | 9 | 308 | 8 | 2087 | The Fly | 2008-09-18 19:30:00 | | 10 | 305 | 8 | 2079 | Rigoletto | 2008-09-10 15:00:00 | +---------+---------+-------+--------+-----------------------------+---------------------+
  7. Para truncar a tabela de eventos no esquema de vendas, use o exemplo a seguir.

    TRUNCATE sales.events;
  8. Para ler os dados da tabela de eventos atualizada no esquema de vendas, use o exemplo a seguir.

    SELECT * FROM sales.events ORDER BY eventid LIMIT 10; +---------+---------+-------+--------+-----------------------------+---------------------+ | eventid | venueid | catid | dateid | eventname | starttime | +---------+---------+-------+--------+-----------------------------+---------------------+

Criar funções somente leitura e leitura e gravação para o esquema de marketing (opcional)

Nesta etapa, você cria funções somente leitura e leitura e gravação para o esquema de marketing.

  1. Conecte-se ao banco de dados como o usuário dbadmin.

  2. Para criar funções somente leitura e leitura e gravação para o esquema de marketing, use o exemplo a seguir.

    CREATE ROLE marketing_ro; CREATE ROLE marketing_rw; GRANT USAGE ON SCHEMA marketing TO ROLE marketing_ro, ROLE marketing_rw; GRANT SELECT ON ALL TABLES IN SCHEMA marketing TO ROLE marketing_ro; GRANT ROLE marketing_ro TO ROLE marketing_rw; GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA marketing TO ROLE marketing_rw; CREATE USER marketinganalyst PASSWORD 'Test12345'; CREATE USER marketingengineer PASSWORD 'Test12345'; GRANT ROLE marketing_ro TO marketinganalyst; GRANT ROLE marketing_rw TO marketingengineer;

Funções do sistema para RBAC (opcional)

O Amazon Redshift tem duas funções para fornecer informações do sistema sobre associação de usuários e funções em grupos ou funções adicionais: role_is_member_of e user_is_member_of. Essas funções estão disponíveis para superusuários e usuários regulares. Os superusuários podem verificar a associação de todas as funções. Os usuários regulares só podem verificar a associação de funções às quais tenham acesso.

Como usar a função role_is_member_of

  1. Conecte-se ao banco de dados como o usuário salesengineer.

  2. Para verificar se a função sales_rw é membro da função sales_ro, use o exemplo a seguir.

    SELECT role_is_member_of('sales_rw', 'sales_ro'); +-------------------+ | role_is_member_of | +-------------------+ | true | +-------------------+
  3. Para verificar se a função sales_ro é membro da função sales_rw, use o exemplo a seguir.

    SELECT role_is_member_of('sales_ro', 'sales_rw'); +-------------------+ | role_is_member_of | +-------------------+ | false | +-------------------+

Como usar a função user_is_member_of

  1. Conecte-se ao banco de dados como o usuário salesengineer.

  2. O exemplo a seguir tenta verificar a associação do usuário salesanalyst. Essa consulta gera um erro porque o usuário salesengineer não tem acesso ao usuário salesanalyst. Para executar esse comando com êxito, conecte-se ao banco de dados como o usuário salesanalyst e use o exemplo.

    SELECT user_is_member_of('salesanalyst', 'sales_ro'); ERROR
  3. Conecte-se ao banco de dados como superusuário.

  4. Para verificar a associação do usuário salesanalyst quando conectado como superusuário, use o exemplo a seguir.

    SELECT user_is_member_of('salesanalyst', 'sales_ro'); +-------------------+ | user_is_member_of | +-------------------+ | true | +-------------------+
  5. Conecte-se ao banco de dados como o usuário dbadmin.

  6. Para verificar a associação do usuário salesengineer quando conectado como superusuário, use o exemplo a seguir.

    SELECT user_is_member_of('salesengineer', 'sales_ro'); +-------------------+ | user_is_member_of | +-------------------+ | true | +-------------------+ SELECT user_is_member_of('salesengineer', 'marketing_ro'); +-------------------+ | user_is_member_of | +-------------------+ | false | +-------------------+ SELECT user_is_member_of('marketinganalyst', 'sales_ro'); +-------------------+ | user_is_member_of | +-------------------+ | false | +-------------------+

Visualizações do sistema para RBAC (opcional)

Para visualizar as funções, a atribuição de funções aos usuários, a hierarquia de funções e os privilégios dos objetos de banco de dados por meio de funções, use as visualizações do sistema para o Amazon Redshift. Essas visualizações estão disponíveis para superusuários e usuários regulares. Os superusuários podem verificar todos os detalhes da função. Os usuários regulares só podem verificar detalhes das funções às quais tenham acesso.

  1. Para visualizar uma lista de usuários aos quais se concedem funções no cluster explicitamente, use o exemplo a seguir.

    SELECT * FROM svv_user_grants;
  2. Para visualizar uma lista de funções às quais se concedem funções no cluster explicitamente, use o exemplo a seguir.

    SELECT * FROM svv_role_grants;

Para obter a lista completa de visualizações do sistema, consulte Visualizações SVV de metadados.

Usar a segurança por linha com o RBAC (opcional)

Para ter controle de acesso detalhado sobre seus dados confidenciais, use a segurança por linha (RLS). Para obter mais informações sobre RLS, consulte Segurança por linha.

Nesta seção, você cria uma política de RLS que concede ao usuário salesengineer permissões para visualizar somente as linhas na tabela cat que tenham o valor catdesc da Major League Baseball. Em seguida, você consulta o banco de dados como o usuário salesengineer.

  1. Conecte-se ao banco de dados como o usuário salesengineer.

  2. Para visualizar as primeiras cinco entradas na tabela cat, use o exemplo a seguir.

    SELECT * FROM sales.cat ORDER BY catid ASC LIMIT 5; +-------+----------+---------+---------------------------------+ | catid | catgroup | catname | catdesc | +-------+----------+---------+---------------------------------+ | 1 | Sports | MLB | Major League Baseball | | 2 | Sports | NHL | National Hockey League | | 3 | Sports | NFL | National Football League | | 4 | Sports | NBA | National Basketball Association | | 5 | Sports | MLS | Major League Soccer | +-------+----------+---------+---------------------------------+
  3. Conecte-se ao banco de dados como o usuário dbadmin.

  4. Para criar uma política de RLS para a coluna catdesc na tabela cat, use o exemplo a seguir.

    CREATE RLS POLICY policy_mlb_engineer WITH (catdesc VARCHAR(50)) USING (catdesc = 'Major League Baseball');
  5. Para anexar a política de RLS à função sales_rw, use o exemplo a seguir.

    ATTACH RLS POLICY policy_mlb_engineer ON sales.cat TO ROLE sales_rw;
  6. Para alterar a tabela a fim de ativar a RLS, use o exemplo a seguir.

    ALTER TABLE sales.cat ROW LEVEL SECURITY ON;
  7. Conecte-se ao banco de dados como o usuário salesengineer.

  8. Para tentar visualizar as primeiras cinco entradas na tabela cat, use o exemplo a seguir. Observe que as entradas só aparecem quando a coluna catdesc é Major League Baseball.

    SELECT * FROM sales.cat ORDER BY catid ASC LIMIT 5; +-------+----------+---------+-----------------------+ | catid | catgroup | catname | catdesc | +-------+----------+---------+-----------------------+ | 1 | Sports | MLB | Major League Baseball | +-------+----------+---------+-----------------------+
  9. Conecte-se ao banco de dados como o usuário salesanalyst.

  10. Para tentar visualizar as primeiras cinco entradas na tabela cat, use o exemplo a seguir. Observe que nenhuma entrada aparece porque a política padrão de negar tudo é aplicada.

    SELECT * FROM sales.cat ORDER BY catid ASC LIMIT 5; +-------+----------+---------+-----------------------+ | catid | catgroup | catname | catdesc | +-------+----------+---------+-----------------------+
  11. Conecte-se ao banco de dados como o usuário dbadmin.

  12. Para conceder a permissão IGNORE RLS à função sales_ro, use o exemplo a seguir. Isso concede ao usuário salesanalyst as permissões para ignorar as políticas de RLS, pois ele é membro da função sales_ro.

    GRANT IGNORE RLS TO ROLE sales_ro;
  13. Conecte-se ao banco de dados como o usuário salesanalyst.

  14. Para visualizar as primeiras cinco entradas na tabela cat, use o exemplo a seguir.

    SELECT * FROM sales.cat ORDER BY catid ASC LIMIT 5; +-------+----------+---------+---------------------------------+ | catid | catgroup | catname | catdesc | +-------+----------+---------+---------------------------------+ | 1 | Sports | MLB | Major League Baseball | | 2 | Sports | NHL | National Hockey League | | 3 | Sports | NFL | National Football League | | 4 | Sports | NBA | National Basketball Association | | 5 | Sports | MLS | Major League Soccer | +-------+----------+---------+---------------------------------+
  15. Conecte-se ao banco de dados como o usuário dbadmin.

  16. Para revogar a permissão IGNORE RLS da função sales_ro, use o exemplo a seguir.

    REVOKE IGNORE RLS FROM ROLE sales_ro;
  17. Conecte-se ao banco de dados como o usuário salesanalyst.

  18. Para tentar visualizar as primeiras cinco entradas na tabela cat, use o exemplo a seguir. Observe que nenhuma entrada aparece porque a política padrão de negar tudo é aplicada.

    SELECT * FROM sales.cat ORDER BY catid ASC LIMIT 5; +-------+----------+---------+-----------------------+ | catid | catgroup | catname | catdesc | +-------+----------+---------+-----------------------+
  19. Conecte-se ao banco de dados como o usuário dbadmin.

  20. Para desanexar a política de RLS da tabela cat, use o exemplo a seguir.

    DETACH RLS POLICY policy_mlb_engineer ON cat FROM ROLE sales_rw;
  21. Conecte-se ao banco de dados como o usuário salesanalyst.

  22. Para tentar visualizar as primeiras cinco entradas na tabela cat, use o exemplo a seguir. Observe que nenhuma entrada aparece porque a política padrão de negar tudo é aplicada.

    SELECT * FROM sales.cat ORDER BY catid ASC LIMIT 5; +-------+----------+---------+---------------------------------+ | catid | catgroup | catname | catdesc | +-------+----------+---------+---------------------------------+ | 1 | Sports | MLB | Major League Baseball | | 2 | Sports | NHL | National Hockey League | | 3 | Sports | NFL | National Football League | | 4 | Sports | NBA | National Basketball Association | | 5 | Sports | MLS | Major League Soccer | +-------+----------+---------+---------------------------------+
  23. Conecte-se ao banco de dados como o usuário dbadmin.

  24. Para descartar a política de RLS, use o exemplo a seguir.

    DROP RLS POLICY policy_mlb_engineer;
  25. Para remover a RLS, use o exemplo a seguir.

    ALTER TABLE cat ROW LEVEL SECURITY OFF;

Para obter mais informações sobre RBAC, consulte a seguinte documentação:

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.