Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
DonovanMaillard opened this issue Jan 9, 2019 · 4 comments
Open

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

DonovanMaillard opened this issue Jan 9, 2019 · 4 comments

Comments

@DonovanMaillard
Copy link
Collaborator

DonovanMaillard commented Jan 9, 2019

Plusieurs points à définir sur :

  • les droits de l'utilisateur postgresql utilisé par R (lecture seule? tables autorisées? Protéger la t_role notamment. Protéger les données "sensibles", "partenaires" etc).

  • la configuration des accès à postgresql par l'extérieur. Une doc à prévoir donc :)

Pour mes premiers tests, mon utilisateur avait :

  • Des droits de lecture et SELECT sur la synthese, la taxo, ref geo et nomenclatures
  • Tous les droits sur un schéma qui lui est propre, mais ça c'était surtout pour QGis, à voir si ça peut, ou non, avoir une utilité pour R.

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
Copy link

lpofredc commented Jan 9, 2019

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
Copy link
Collaborator

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
Copy link
Collaborator Author

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
Copy link
Collaborator Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants