Crie usuários e funções de aplicativos no Aurora Postgre - Compatível SQL - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie usuários e funções de aplicativos no Aurora Postgre - Compatível SQL

Criado por Abhishek Verma () AWS

Ambiente: PoC ou piloto

Origem: qualquer banco de dados

Alvo: banco de dados Postgre SQL

Tipo R: redefinir arquitetura

Workload: código aberto

Tecnologias: migração; bancos de dados

AWSserviços: AmazonRDS; Amazon Aurora

Resumo

Quando você migra para a edição compatível com o Amazon Aurora SQL Postgre, os usuários e funções do banco de dados que existem no banco de dados de origem devem ser criados no banco de dados compatível com o Aurora Postgre. SQL Você pode criar os usuários e as funções SQL compatíveis com o Aurora Postgre usando duas abordagens diferentes:

  • Use usuários e funções semelhantes no banco de dados de destino e no banco de dados de origem. Nessa abordagem, as linguagens de definição de dados (DDLs) são extraídas para usuários e funções do banco de dados de origem. Em seguida, eles são transformados e aplicados ao banco de dados de destino compatível com o Aurora PostgreSQL. Por exemplo, a postagem do blog Use SQL to map users, roles e concessões da Oracle para o Postgre SQL aborda o uso da extração de um mecanismo de banco de dados de origem Oracle.

  • Use usuários e funções padronizados que são comumente usados durante o desenvolvimento, a administração e para realizar outras operações relacionadas no banco de dados. Isso inclui operações somente de leitura, leitura/gravação, desenvolvimento, administração e implantação realizadas pelos respectivos usuários.

Esse padrão contém as concessões necessárias para a criação de usuários e funções no Aurora Postgre. SQL Compatível com a abordagem padronizada de usuários e funções. As etapas de criação do usuário e da função estão alinhadas à política de segurança de conceder privilégio mínimo aos usuários do banco de dados. A tabela a seguir lista os usuários, suas funções correspondentes e seus detalhes no banco de dados.

Usuários

Funções

Finalidade

APP_read

APP_RO

Usado para acesso somente de leitura no esquema APP

APP_WRITE

APP_RW

Usado para as operações de gravação e leitura no esquema APP

APP_dev_user

APP_DEV

Usado para fins de desenvolvimento no esquema APP_DEV, com acesso somente para leitura no esquema APP

Admin_User

rds_superuser

Usado para realizar operações de administrador no banco de dados

APP

APP_DEP

Usado para criar os objetos sob o esquema APP e para a implantação de objetos no esquema APP

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta ativa da Amazon Web Services (AWS)

  • Um banco de dados Postgre, SQL banco de dados Amazon Aurora SQL Postgre -Compatible Edition ou Amazon Relational Database Service (Amazon) para banco de dados Postgre RDS SQL

Versões do produto

  • Todas as versões do Postgre SQL

Arquitetura

Pilha de tecnologia de origem

  • Qualquer banco de dados

Pilha de tecnologias de destino

  • Compatível com Amazon Aurora Postgre SQL

Arquitetura de destino

O diagrama a seguir mostra as funções do usuário e a arquitetura do esquema no banco de dados compatível com o Aurora SQL Postgre.

Funções de usuário e arquitetura de esquema para o banco de dados Aurora SQL Postgre -Compatível.

                                                                                                                                    

Automação e escala

Esse padrão contém os usuários, as funções e o script de criação do esquema, que você pode executar várias vezes sem afetar os usuários existentes do banco de dados de origem ou de destino.

Ferramentas

AWSserviços

Outros serviços

  • O psql é uma ferramenta front-end baseada em terminal que é instalada com cada instalação do banco de dados Postgre. SQL Ele tem uma interface de linha de comando para executar comandosSQL, PL- PGSQL e do sistema operacional.

  • pgAdminé uma ferramenta de gerenciamento de código aberto para o Postgre. SQL Ele fornece uma interface gráfica que ajuda você a criar, manter e usar objetos de banco de dados.

Épicos

TarefaDescriçãoHabilidades necessárias

Criar o usuário de implantação.

O usuário de implantação APP será usado para criar e modificar os objetos do banco de dados durante as implantações. Use os scripts a seguir para criar a função de usuário de implantação APP_DEP no esquema APP. Valide os direitos de acesso para garantir que esse usuário tenha apenas o privilégio de criar objetos no esquema APP necessário.

  1. Conecte-se ao usuário administrador e crie o esquema.

    CREATE SCHEMA APP;
  2. Criar o usuário

    CREATE USER APP WITH PASSWORD <password> ;
  3. Crie a função.

    CREATE ROLE APP_DEP ; GRANT all on schema APP to APP_DEP ; GRANT USAGE ON SCHEMA APP to APP_DEP ; GRANT connect on database <db_name> to APP_DEP ; GRANT APP_DEP to APP;
  4. Para testar os privilégios, conecte-se ao APP e crie as tabelas.

    set search_path to APP; SET CREATE TABLE test(id integer ) ; CREATE TABLE
  5. Verifique os privilégios.

    select schemaname , tablename , tableowner from pg_tables where tablename like 'test' ; schemaname | tablename | tableowner APP | test | APP
DBA

Crie o usuário somente para leitura.

O usuário de somente leitura APP_read será usado para realizar a operação somente leitura no esquema. APP Use os scripts a seguir para criar o usuário somente para leitura. Valide os direitos de acesso para garantir que esse usuário tenha privilégios somente para ler os objetos no esquema APP e para conceder automaticamente acesso de leitura a qualquer novo objeto criado no esquema APP.

  1. Crie o usuário APP_read.

    create user APP_read ; alter user APP_read with password 'your_password' ;
  2. Crie a função.

    CREATE ROLE APP_ro ; GRANT SELECT ON ALL TABLES IN SCHEMA APP TO APP_RO ; GRANT USAGE ON SCHEMA APP TO APP_RO GRANT CONNECT ON DATABASE testdb TO APP_RO ; GRANT APP_RO TO APP_read;
  3. Para testar os privilégios, faça login usando o usuário APP_read.

    set search_path to APP ; create table test1( id integer) ; ERROR: permission denied for schema APP LINE 1: create table test1( id integer) ; insert into test values (34) ; ERROR: permission denied for table test SQL state: 42501 select from test no rows selected
DBA

Crie o usuário de leitura/gravação.

O usuário de leitura/gravação APP_WRITE será usado para realizar operações de leitura e gravação no esquema APP. Use os scripts a seguir para criar o usuário de leitura/gravação e conceder a ele a função APP_RW. Valide os direitos de acesso para garantir que esse usuário tenha privilégios de leitura e gravação somente nos objetos do esquema APP e para conceder automaticamente acesso de leitura e gravação a qualquer novo objeto criado no esquema APP.

  1. Criar o usuário

    CREATE USER APP_WRITE ; alter user APP_WRITE with password 'your_password' ;
  2. Crie a função.

    CREATE ROLE APP_RW; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA APP TO APP_RW ; GRANT CONNECT ON DATABASE postgres to APP_RW ; GRANT USAGE ON SCHEMA APP to APP_RW ; ALTER DEFAULT PRIVILEGES IN SCHEMA APP GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO APP_RW ; GRANT APP_RW to APP_WRITE
  3. Para testar os privilégios, faça login usando o usuário APP_WRITE.

    SET SEARCH_PATH to APP; CREATE TABLE test1( id integer) ; ERROR: permission denied for schema APP LINE 1: create table test1( id integer) ; SELECT * FROM test ; id ---- 12 INSERT INTO test values (31) ; INSERT 0 1

Crie o usuário administrador.

O usuário administrador Admin_User será usado para realizar operações administrativas no banco de dados. Exemplos dessas operações são CREATE ROLE e CREATE DATABASE. O Admin_User usa a função integrada rds_superuser para realizar operações administrativas no banco de dados. Use os scripts a seguir para criar e testar o privilégio do usuário administrador Admin_User no banco de dados.

  1. Crie o usuário e conceda a função.

    create user Admin_User WITH PASSWORD ‘Your password’ ALTER user Admin_user CREATEDB; ALTER user Admin_user CREATEROLE;
  2. Para testar o privilégio, faça login com o usuário Admin_User.

    SELECT * FROM APP.test ; id ---- 31 CREATE ROLE TEST ; CREATE DATABASE test123 ;
DBA

Crie o usuário de desenvolvimento.

O usuário de desenvolvimento APP_dev_user terá direitos para criar os objetos em seu esquema local APP_DEV e acesso de leitura no esquema APP. Use os scripts a seguir para criar e testar os privilégios do usuário APP_dev_user no banco de dados.

  1. Criar o usuário

    CREATE USER APP1_dev_user with password ‘your password’;
  2. Crie o esquema APP_DEV para o App_dev_user.

    CREATE SCHEMA APP1_DEV ;
  3. Crie a função do APP_DEV.

    CREATE ROLE APP1_DEV ; GRANT APP1_RO to APP1_DEV ; GRANT SELECT ON ALL TABLES IN SCHEMA APP1_DEV to APP1_dev_user GRANT USAGE, CREATE ON SCHEMA APP1_DEV to APP1_DEV_USER GRANT APP1_DEV to APP1_DEV_USER ;
  4. Para testar os privilégios, faça login em APP_dev_user.

    CREATE TABLE APP1_dev.test1( id integer ) ; CREATE TABLE INSERT into APP1_dev.test1 ( select * from APP1.test ); INSERT 0 1 CREATE TABLE APP1.test4 ( id int) ; ERROR: permission denied for schema APP1 LINE 1: create table APP1.test4 ( id int) ;
DBA

Recursos relacionados

Documentação do Postger SQL

 

Mais informações

Aprimoramento do Postger SQL 14

O Postgre SQL 14 fornece um conjunto de funções predefinidas que dão acesso a determinados recursos e informações privilegiadas comumente necessários. Os administradores (incluindo funções que têm o privilégio de CREATE ROLE) podem conceder essas funções ou outras funções em seu ambiente aos usuários, fornecendo-lhes acesso aos recursos e informações especificados.

Os administradores podem conceder aos usuários acesso a essas funções usando o comando GRANT. Por exemplo, para conceder a função pg_signal_backend a Admin_User, você pode executar o comando a seguir.

GRANT pg_signal_backend TO Admin_User;

A função pg_signal_backend tem como objetivo permitir que os administradores habilitem funções confiáveis e não de superusuário para enviar sinais para outros backends. Para obter mais informações, consulte Aprimoramento do Postgre SQL 14.

Ajustando o acesso

Em alguns casos, pode ser necessário fornecer acesso mais granular aos usuários (por exemplo, acesso baseado em tabela ou acesso baseado em colunas). Nesses casos, funções adicionais podem ser criadas para conceder esses privilégios aos usuários. Para obter mais informações, consulte Postgre SQL Grants.