Este tutorial descreve como usar vistas seguras parametrizadas no AlloyDB Omni para restringir o acesso dos utilizadores a vistas parametrizadas através do AlloyDB Omni Studio ou do psql.
São incluídos exemplos para ilustrar as capacidades das visualizações seguras parametrizadas. Estes exemplos destinam-se apenas a fins de demonstração.
Objetivos
- Crie vistas parametrizadas seguras com parâmetros de visualização com nome.
- Crie a função da base de dados que é usada pela aplicação para se ligar à base de dados e aceder a vistas seguras parametrizadas.
- Conceda autorizações à nova função para as vistas seguras e revogue o acesso às tabelas base.
- Estabeleça ligação através da nova função e verifique se não é possível aceder às tabelas restritas.
- Execute consultas na vista segura parametrizada através da função
execute_parameterized_query.
Instale e associe a uma base de dados
- Instale o AlloyDB Omni(para Kubernetes e para contentores).
- Crie um cluster e a respetiva instância principal.
- Associe-se à sua instância (para o Kubernetes, para contentores)
Prepare o seu ambiente
Para se preparar para executar consultas numa vista segura parametrizada, primeiro tem de
configurar vistas parametrizadas, a base de dados e as funções da base de dados, a extensão parameterized_view e o esquema da aplicação.
Antes de usar visualizações seguras parametrizadas, tem de fazer o seguinte uma vez em cada novo contentor do Postgres. Cada definição pode ser aplicada através da IU do Google Ads ou editando diretamente o postgresql.conf:ALTER SYSTEM
- Adicione "parameterized_views" a
shared_preload_libraries. - Ative a funcionalidade definindo
parameterized_views.enabled=on. - Reinicie o postgres para que as alterações entrem em vigor.
Configure a base de dados
- Crie uma base de dados denominada
databasepara os dados da aplicação e as visualizações parametrizadas. Para mais informações, consulte Crie uma base de dados.
Crie funções da base de dados, a extensão e o esquema da aplicação
Usando o psql, ligue-se à base de dados como o utilizador
postgresou como um utilizador com privilégios de superutilizador do AlloyDB Omni.psql database -U postgresPara mais informações, consulte o artigo Acerca da gestão de utilizadores da base de dados no AlloyDB Omni.
Crie a extensão
parameterized_viewsna base de dados.-- Requires parameterized_views.enabled set to true CREATE EXTENSION parameterized_views;Quando a extensão é criada, o sistema também cria um esquema denominado
parameterized_viewspara que as APIs estejam contidas no espaço de nomes desse esquema e para que essas APIs não entrem em conflito com as APIs existentes.Crie a função administrativa do AlloyDB Omni, que detém e gere a base de dados.
CREATE ROLE admin_user WITH LOGIN PASSWORD '...'; GRANT ALL PRIVILEGES ON DATABASE database TO admin_user;Para mais informações, consulte
CREATE USER.Crie uma nova função de base de dados para executar consultas em vistas seguras parametrizadas. Esta é uma função do AlloyDB Omni que a aplicação usa para se ligar e iniciar sessão na base de dados para executar consultas com acesso limitado a funções ou objetos públicos ao conjunto mínimo necessário.
Para mais informações, consulte
CREATE USER.Estabeleça ligação como utilizador administrativo.
SET role TO admin_user;Crie o esquema que contém as tabelas.
CREATE SCHEMA schema;Crie as tabelas e insira dados.
CREATE TABLE schema.checked_items(bag_id INT,timestamp TIMESTAMP, loc_code CHAR(3), scan_type CHAR(1), location TEXT, customer_id INT); INSERT INTO schema.checked_items (bag_id, timestamp, loc_code, scan_type, location, customer_id) VALUES (101, '2023-10-26 10:00:00', 'ABC', 'I', 'Warehouse A', 123), (102, '2023-10-26 10:15:30', 'DEF', 'O', 'Loading Dock B', 456), (103, '2023-10-26 10:30:45', 'GHI', 'I', 'Conveyor Belt 1', 789), (104, '2023-10-26 11:00:00', 'JKL', 'O', 'Shipping Area C', 101), (105, '2023-10-26 11:45:15', 'MNO', 'I', 'Sorting Station D', 202), (106, '2023-10-26 12:00:00', 'PQR', 'O', 'Truck Bay E', 303);
Crie vistas parametrizadas seguras e configure privilégios de acesso
Para criar vistas parametrizadas seguras e configurar privilégios de acesso adequados para a tabela base e as vistas, siga estes passos:
Usando o psql, estabeleça ligação à base de dados como
admin_user.psql database -U admin_userPara conceder acesso limitado à vista, crie uma vista segura parametrizada.
CREATE VIEW schema.secure_checked_items WITH (security_barrier) AS SELECT bag_id, timestamp, location FROM schema.checked_items t WHERE customer_id = $@app_end_userid;Conceda acesso à vista.
GRANT SELECT ON schema.secure_checked_items TO psv_user;Para aceder à vista, conceda acesso ao esquema.
GRANT USAGE ON SCHEMA schema TO psv_user;Revogue o acesso direto à tabela base.
REVOKE ALL PRIVILEGES ON schema.checked_items FROM psv_user;
Valide a segurança dos dados
Para verificar se as visualizações seguras parametrizadas estão a restringir o acesso às visualizações designadas, execute os seguintes comandos como psv_user. Esta é uma função da base de dados do AlloyDB Omni que a aplicação usa para estabelecer ligação e iniciar sessão na base de dados para executar consultas.
Estabelecer ligação como utilizador de vistas seguras parametrizadas.
psql database -U psv_userConfirme que não é possível aceder à tabela base.
SELECT * FROM schema.checked_items; ERROR: permission denied for table checked_itemsAceda à vista segura parametrizada através da função
execute_parameterized_query.SELECT * FROM parameterized_views.execute_parameterized_query( query => 'SELECT * from schema.secure_checked_items', param_names => ARRAY ['app_end_userid'], param_values => ARRAY ['303'] );Para melhorar a segurança das consultas geradas em linguagem natural, integre as suas vistas seguras parametrizadas através da linguagem natural.
Limpar
Para limpar, pode desinstalar a instância do AlloyDB Omni ou manter a instância e eliminar os objetos individuais.
O que se segue?
- Saiba mais sobre as visualizações seguras com parâmetros.
- Saiba como gerir a segurança dos dados das aplicações através de vistas seguras com parâmetros.