PnX-SI / GeoNature-R-package

Package R pour la synthèse des données GeoNature
GNU General Public License v3.0
1 stars 1 forks source link

Sécurité de la base et Package R #2

Open DonovanMaillard opened 5 years ago

DonovanMaillard commented 5 years ago

Plusieurs points à définir sur :

Pour mes premiers tests, mon utilisateur avait :

Le script :

CREATE ROLE extconn PASSWORD 'mypass'; GRANT CONNECT ON DATABASE mydb TO extconn; GRANT ALL ON ALL TABLES FROM SCHEMA external_connexion TO extconn; GRANT USAGE ON SCHEMA gn_synthese TO extconn; GRANT SELECT ON TABLE gn_synthese.v_synthese_for_export; GRANT USAGE ON SCHEMA taxonomie TO extconn; GRANT SELECT ON TABLE taxonomie.taxref TO extconn; GRANT USAGE ON SCHEMA ref_geo TO extconn; GRANT SELECT ON TABLE ref_geo.l_areas TO extconn; GRANT USAGE ON SCHEMA ref_nomenclatures TO extconn; GRANT SELECT ON TABLE ref_nomenclatures.t_nomenclatures TO extconn;

lpofredc commented 5 years ago

Tu peux aussi configurer le schéma par défaut de l'utilisateur (sinon c'est public), très pratique :

ALTER ROLE extconn SET search_path TO external_connexion, public ;
remymoine commented 5 years ago

Nous testons actuellement une solution qui semble relativement satisfaisante bien que moins fluide. Nous avons créé un utilisateur commun avec les droits en lecture sur toute la base. Les identifiants de cet utilisateurs sont transmis aux personnes qui le réclame par gestionnaire de la base.

Je commence à travailler sur une fonction rassemblant connexion, extraction de requête et fermeture de la base en me basant sur ce principe.

DonovanMaillard commented 5 years ago

Un exemple de fonction que j'avais ébauché pour que R puisse extraire des données et en créer un objet pour R.

gn.getData <- function(data){ if (data=="synthese") {dbGetQuery(con,"SELECT FROM gn_synthese.v_synthese_for_export")} else if (data=="unevue") {dbGetQuery(con,"SELECT FROM unevue")} else {print("Argument non reconnu : vous pouvez utiliser cette commande pour charger 'synthese' ou 'unevue'.")} }

DonovanMaillard commented 5 years ago

(on l'utilise alors en faisant gn.getData(synthese)->MonObjetSynthèse