sql >> Database >  >> RDS >> PostgreSQL

Beperk PostgreSQL-gebruikerstoegang met behulp van schema en weergaven

Om PostgreSQL-toegang tot specifieke tabellen en kolommen te beperken, kunt u schema's en selectieve GRANT-instructies gebruiken.

Raadpleeg de volgende instructies om de toegang tot bepaalde tabellen te beperken.

Als u echter de toegang tot specifieke kolommen moet beperken, moet u mogelijk een combinatie van schema's en weergaven gebruiken om de toegang te beperken. U kunt dit ook doen als uw database meer dan 1000 tabellen heeft en u probeert verbinding te maken met Chartio.

  1. Maak verbinding met uw PostgreSQL-database met behulp van psql of pgadmin. Voer het volgende uit om een ​​lijst met tabellen in uw database te retourneren.

    sudo -u postgres psql c databasenaam;

  2. Maak een schema dat specifiek is voor de alleen-lezen gebruiker van Chartio en voer het volgende uit:

    MAAK SCHEMA chartio_read_only; ROL MAKEN chartio_schema_user LOGIN WACHTWOORD ‘secure_password’; SUBSIDIE VERBINDEN OP DATABASE databasenaam NAAR chartio_schema_user; SUBSIDIE GEBRUIK OP SCHEMA chartio_read_only AAN chartio_schema_user;

  3. Bekijk de databaserelaties met het commando d.

    d

    Schema | Naam          | Typ  | Eigenaar ———-+————————-+———-+————– openbaar | Accounts      | tafel | postgres openbaar | Bezoekers      | tafel | postgres openbaar | Gebruikers         | tafel | postgres openbaar | Abonnementen | tafel | postgres

  4. Uw Accounts-tabel bevat gevoelige informatie en u wilt dat Chartio alleen toegang heeft tot de Account_ID en Date__Created kolommen ._ Voer het volgende uit om een ​​weergave toe te voegen aan het chartio_read_only-schema en toegang tot die weergave te verlenen aan de chartio_schema_user.

    CREATE VIEW chartio_read_only.”Accounts” AS SELECT Account_ID, Date_Created FROM Accounts; GRANT SELECT ON chartio_read_only.”Accounts” AAN chartio_schema_user;

  5. Verleen toestemming om alle gegevens uit de tabel Bezoekers te selecteren.

    MAAK VIEW chartio_read_only.”Bezoekers” ALS SELECTEER * VAN Bezoekers; GRANT SELECT ON chartio_read_only.”Bezoekers” AAN chartio_schema_user;

Als u nu de chartio_schema_user met uw database verbindt, heeft deze alleen toegang tot de twee beperkte weergaven die u aan het schema hebt verleend.

Raadpleeg de PostgreSQL-documentatie voor meer informatie.


  1. Hoe controleer je in PHP met PDO de uiteindelijke SQL-geparametreerde query?

  2. YEAR() Voorbeelden – MySQL

  3. Heroku en Rails:Gem Load Error met Postgres, maar het is gespecificeerd in GEMFILE

  4. Postgres:een standaardwaarde definiëren voor CAST-fouten?