sqlachemy

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

sqlachemy

jbeuken
Bonjour,

avant d'envoyer mon "problème" sur SO et/ou sur la ML plone-users,
je vous soumets ce "petit" problème qui me donne mal à la tête :-(

ds un "python script" :

------------------------
import sqlalchemy

mysql_db = sqlalchemy.create_engine('mysql://root:xxxxxxx@localhost/abinitdb')
connection = mysql_db.connect()
------------------------


j'ai bien mis dans "zinstance/products/GlobalModules/__init__.py " :

------------------------
# Global module assertions for Python scripts
from Products.PythonScripts.Utility import allow_module

allow_module('sqlalchemy')
------------------------


lorsque je "teste" dans Plone 4.1.5  ( ./bin/plone fg ), j'ai un msg :

------------------------------------

Insufficient Privileges

You do not have sufficient privileges to view this page. If you believe you are receiving this message in error, contact the site administration.

------------------------------------

si, ds mon script python , je rajoute un assert pour rentrer en Pdb
 ( juste avant "connection" qui pose le problème de privilèges ):

------------------------
import sqlalchemy

mysql_db = sqlalchemy.create_engine('mysql://root:xxxxxxx@localhost/abinitdb')

assert False, "..."

connection = mysql_db.connect()
------------------------


je teste bien que l'objet "mysql_db" est bien initialisé.
de plus, j'arrive à faire la connexion et l'interrogation de la DB :  donc pas de problèmes de syntaxe :

-----------------------
AssertionError: ...

(Pdb) p mysql_db
Engine(mysql://root:gonkhyll@localhost/abinitdb)

(Pdb) result = mysql_db.connect().execute("select * from bots")

(Pdb) for row in result: print row
(1L, '[hidden email]', 'sujet1', 'comment 1')
(2L, '[hidden email]', 'sujet2', 'comment 7')

-----------------------


je suppose que le fait de rentrer en Pdb augmente les privilèges... : juste ?

quel(s) module(s),  dois-je rajouter ds "GlobalModules/__init__.py" pour résoudre ce problème ( si c'est un problème de module  :-\ ) ?

quelques idées/liens ?

merci,

bonne journée,

jean-michel,


--

----------------------------------------------------

Jean-Michel Beuken

Computer Scientist

Software Engineer for ETSF and ABINIT.ORG


Université catholique de Louvain 

pôle NAPS/IMCN (ex-PCPM), Bat. SC17 

8, Chemin des étoiles,   Bt L7.03.01 

1348 Louvain-la-Neuve BELGIUM 

----------------------------------------------------

Tel : (3210) 473570 Fax : (3210) 473102

http://www.uclouvain.be/jean-michel.beuken 

----------------------------------------------------


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Plone-Belgium mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/plone-belgium
Reply | Threaded
Open this post in threaded view
|

Re: sqlachemy

Gauthier Bastien
Bonjour,

pour tout ce qui est problème lié à un Unauthorized :

Dans "Configuration du site"-->"Erreur", enlever "Unauthorized" de la liste des erreurs ignorées.  Activer verbose-security (fichier etc/zope.conf qqpart selon votre méthode d'installation).

Recréer l'erreur et dans le log de Zope, il devrait déjà y avoir plus de détails...

Bien à vous,
Gauthier Bastien
IMIO
Zoning industriel, 34 - 5190 Mornimont
Tél. 071 780 979
www.communesplone.org
Le 06/07/12 10:04, Jean-Michel Beuken a écrit :
Bonjour,

avant d'envoyer mon "problème" sur SO et/ou sur la ML plone-users,
je vous soumets ce "petit" problème qui me donne mal à la tête :-(

ds un "python script" :

------------------------
import sqlalchemy

mysql_db = sqlalchemy.create_engine('mysql://root:xxxxxxx@localhost/abinitdb')
connection = mysql_db.connect()
------------------------


j'ai bien mis dans "zinstance/products/GlobalModules/__init__.py " :

------------------------
# Global module assertions for Python scripts
from Products.PythonScripts.Utility import allow_module

allow_module('sqlalchemy')
------------------------


lorsque je "teste" dans Plone 4.1.5  ( ./bin/plone fg ), j'ai un msg :

------------------------------------

Insufficient Privileges

You do not have sufficient privileges to view this page. If you believe you are receiving this message in error, contact the site administration.

------------------------------------

si, ds mon script python , je rajoute un assert pour rentrer en Pdb
 ( juste avant "connection" qui pose le problème de privilèges ):

------------------------
import sqlalchemy

mysql_db = sqlalchemy.create_engine('mysql://root:xxxxxxx@localhost/abinitdb')

assert False, "..."

connection = mysql_db.connect()
------------------------


je teste bien que l'objet "mysql_db" est bien initialisé.
de plus, j'arrive à faire la connexion et l'interrogation de la DB :  donc pas de problèmes de syntaxe :

-----------------------
AssertionError: ...

(Pdb) p mysql_db
Engine(mysql://root:gonkhyll@localhost/abinitdb)

(Pdb) result = mysql_db.connect().execute("select * from bots")

(Pdb) for row in result: print row
(1L, '[hidden email]', 'sujet1', 'comment 1')
(2L, '[hidden email]', 'sujet2', 'comment 7')

-----------------------


je suppose que le fait de rentrer en Pdb augmente les privilèges... : juste ?

quel(s) module(s),  dois-je rajouter ds "GlobalModules/__init__.py" pour résoudre ce problème ( si c'est un problème de module  :-\ ) ?

quelques idées/liens ?

merci,

bonne journée,

jean-michel,


--

----------------------------------------------------

Jean-Michel Beuken

Computer Scientist

Software Engineer for ETSF and ABINIT.ORG


Université catholique de Louvain 

pôle NAPS/IMCN (ex-PCPM), Bat. SC17 

8, Chemin des étoiles,   Bt L7.03.01 

1348 Louvain-la-Neuve BELGIUM 

----------------------------------------------------

Tel : (3210) 473570 Fax : (3210) 473102

http://www.uclouvain.be/jean-michel.beuken 

----------------------------------------------------



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/


_______________________________________________
Plone-Belgium mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/plone-belgium



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Plone-Belgium mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/plone-belgium
Reply | Threaded
Open this post in threaded view
|

Re: sqlachemy

jbeuken
merci Gauthier !
pour tout ce qui est problème lié à un Unauthorized :

Dans "Configuration du site"-->"Erreur", enlever "Unauthorized" de la liste des erreurs ignorées.  Activer verbose-security (fichier etc/zope.conf qqpart selon votre méthode d'installation).

je ne comprenais pas pourquoi , malgré le "verbose-security = on" ds mon buildout.cfg, je n'avais aucun msg "intéressant" ds le log !

bon, maintenant j'ai un beau msg :

----
....
Traceback (innermost last):
  Module ZPublisher.Publish, line 126, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module Products.PDBDebugMode.runcall, line 70, in pdb_runcall
  Module ZPublisher.Publish, line 46, in call_object
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PythonScripts.PythonScript, line 344, in _exec
  Module script, line 14, in connect
   - <PythonScript at /Plone/test_pfg/pfg1/testalchemy>
   - Line 14
  Module AccessControl.ImplPython, line 716, in guarded_getattr
  Module AccessControl.ImplPython, line 658, in aq_validate
  Module AccessControl.ImplPython, line 552, in validate
  Module AccessControl.ImplPython, line 322, in validate
  Module AccessControl.ImplPython, line 797, in raiseVerbose

Unauthorized: The container has no security assertions.  Access to 'connect' of Engine(mysql://root:gonkhyll@localhost/abinitdb) denied.
....
----


ya plus ka le comprendre...

donc, ce n'est pas un probleme de module...mais de definition d'acces de connect() ?!?

connection = mysql_db.connect()


une idée ?

merci

jmb

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Plone-Belgium mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/plone-belgium
Reply | Threaded
Open this post in threaded view
|

Re: sqlachemy

Gauthier Bastien
De rien ;-)

En gros çà signifie que faire un script python ne sert que lorsqu'on n'accède pas à des fonctionnalités trop avancées (restricted python) et que dans ton cas, pour éviter ce genre d'erreur il faudra passer par du code sur le FS.

Au minimum une ExternalMethod (facilement ajoutable dans le dossier Extensions de ton instance) ou mieux, une classe (BrowserView ou autre)...

Bien à toi,
Gauthier Bastien
IMIO
Zoning industriel, 34 - 5190 Mornimont
Tél. 071 780 979
www.communesplone.org
Le 06/07/12 11:43, Jean-Michel Beuken a écrit :
merci Gauthier !
pour tout ce qui est problème lié à un Unauthorized :

Dans "Configuration du site"-->"Erreur", enlever "Unauthorized" de la liste des erreurs ignorées.  Activer verbose-security (fichier etc/zope.conf qqpart selon votre méthode d'installation).

je ne comprenais pas pourquoi , malgré le "verbose-security = on" ds mon buildout.cfg, je n'avais aucun msg "intéressant" ds le log !

bon, maintenant j'ai un beau msg :

----
....
Traceback (innermost last):
  Module ZPublisher.Publish, line 126, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module Products.PDBDebugMode.runcall, line 70, in pdb_runcall
  Module ZPublisher.Publish, line 46, in call_object
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PythonScripts.PythonScript, line 344, in _exec
  Module script, line 14, in connect
   - <PythonScript at /Plone/test_pfg/pfg1/testalchemy>
   - Line 14
  Module AccessControl.ImplPython, line 716, in guarded_getattr
  Module AccessControl.ImplPython, line 658, in aq_validate
  Module AccessControl.ImplPython, line 552, in validate
  Module AccessControl.ImplPython, line 322, in validate
  Module AccessControl.ImplPython, line 797, in raiseVerbose

Unauthorized: The container has no security assertions.  Access to 'connect' of Engine(mysql://root:gonkhyll@localhost/abinitdb) denied.
....
----


ya plus ka le comprendre...

donc, ce n'est pas un probleme de module...mais de definition d'acces de connect() ?!?

connection = mysql_db.connect()


une idée ?

merci

jmb



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Plone-Belgium mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/plone-belgium
Reply | Threaded
Open this post in threaded view
|

Re: sqlachemy

Sylvain-4-3
In reply to this post by jbeuken

Op 6 jul 2012, om 10:04 heeft Jean-Michel Beuken het volgende geschreven:

> Bonjour,
>

  Bonjour,


> avant d'envoyer mon "problème" sur SO et/ou sur la ML plone-users,
> je vous soumets ce "petit" problème qui me donne mal à la tête :-(
>
> ds un "python script" :
>
> ------------------------
> import sqlalchemy
>
> mysql_db = sqlalchemy.create_engine('mysql://root:xxxxxxx@localhost/abinitdb')
> connection = mysql_db.connect()
> ------------------------
>
> j'ai bien mis dans "zinstance/products/GlobalModules/__init__.py " :
>
> ------------------------
> # Global module assertions for Python scripts
> from Products.PythonScripts.Utility import allow_module
>
> *allow_module('sqlalchemy')*

   Faire ceci est dangereux: cela peut créer des problèmes de sécurité: tu peux utiliser
des modules Python interdits par RestrictedPython en fessant un import depuis les
imports fait dans sqlalchemy.

   RestrictedPython est restricted parce que tu peux entrer ton code depuis le réseau,
et si un utilisateurs lambda trouve comment faire cela, il pourra utiliser cela pour écrire
des fichiers sur ton système, genre dans /tmp, pour envoyer du spam, ou exécuter
un exploit pour devenir root sur la machine.

   Il ne faut ne donner accès que aux fonctions et objets que tu as besoins.

   Ensuite, allow_module ne donne accès à rien, il dit juste à Zope de regarder
les ModuleSecurityInfo concernant le dit module, ou une liste de marker magiques,
qui te permette de dire quels sont les fonctions et objets auxquels tu as accès (d'où
tes erreurs).

   Le mieux serait d'implémenter ton code dans une vue, ou une ExternalMethod,
à qui tu donnes les paramètres de recherche et qui te retourne les valeurs à afficher.

   Sylvain,


--
Sylvain Viollon -- Infrae
t +31 10 243 7051 -- http://infrae.com
Hoevestraat 10 3033GC Rotterdam -- The Netherlands




------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Plone-Belgium mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/plone-belgium