IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Firebird Discussion :

Firebird 3.0 : problème avec un compte administrateur (Flamerobin)


Sujet :

Outils Firebird

  1. #21
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut DelphiCode.

    Citation Envoyé par DelphiCode
    Ce que tu dis c'est lorsqu'on vient de réaliser une installation toute fraîche de Firebird.
    Pas nécesairement. Prenons le cas suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input %FIC%  -quiet  -password 'albert'  -role 'dbuser'  -user 'albert'  '..\Data\Base.fdb'
    Ce rôle "dbuser" existe et a les droits d'accès à la table test. Mais le compte "albert' n'existe pas. De ce fait, il n'a aucun accès !

    Donc par mon NON, je tiens à souligner que le compte (les utilisateurs) et le rôle (les privilèges) doivent être en concordance.
    Si l'un des deux vient à manquer, tu ne peux pas accéder à la table.
    Sauf que les privilèges (role + grant) sont dans ta base de données et que les comptes sont dans la base "security3.fdb".

    Citation Envoyé par DelphiCode
    Mais d'après la documentation, depuis la version 3.0, il est possible d'utiliser plusieurs base de données de sécurité ..
    Je ne sais pas faire cela. Pourrais-tu mettre le lien qui explique comment faire ?

    Citation Envoyé par DelphiCode
    .. et la base de données de travail peut aussi être à la fois base de données de sécurité.
    Je n'avais pas compris cela de cette façon.
    D'après ce que j'ai compris, ce sont les privilèges (role + grant) qui vont dans ta base de travail. Et les comptes vont dans "security3.fdb".
    Il y a bien dissociation entre privilèges et comptes.

    Citation Envoyé par DelphiCode
    Du coup, dans ce cas de figure je me pose la question de savoir si la sécurité interne prévaut sur la "security3.fdb".
    Hormis le cas du compte "sysdba" qui est un compte particulier, un compte administrateur "grant admin role" n'a pas accès.
    Sauf que la différence est dans le rôle que tu vas lui associer.
    Si tu le mets dans "RDB$ADMIN", il aura tous les accès à ta base de données, mais aussi à toutes les autres bases de données.
    Si tu mets un autre role, il aura les privilèges de ce rôle. Si tu ne précises pas le rôle, il n'a aucun accès.
    Sur la création d'un compte, je ne sais pas à quoi cela sert de mettre "grant admin role".

    Citation Envoyé par DelphiCode
    Sinon, comme seconde hypothèse, comme tu le suggères si on crée une base de données avec un utilisateur virtuel qui n'existe pas au départ et qui devient propriétaire de la base de données cela signifie t-il quelle sera protégée de l'ouverture avec un sysdba ?
    Tu prends le problème à l'envers. Imagine que le mot de passe de "sysdba" ne soit plus "masterkey" mais autre chose et est connu que du seul et unique administreur du SGBDR FireBird.
    Tu as beau mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input %FIC%  -quiet  -password 'masterkey'  -role 'rdb$admin'  -user 'sysdba'  '..\Data\Base.fdb'
    tu ne pourras pas accéder à ta base de données !
    Inversement, comme c'est un compte très particulier, tu ne peux pas lui interdire l'accès à ta base de données.

    Citation Envoyé par DelphiCode
    Quand je parle que le résultat fonctionne, je parle du bout de code que j'ai fait et que je t'ai demandé de reproduire mais de façon plus épuré.
    Oui, j'avais bien compris.
    Si tu as des erreurs, comme "-violation of PRIMARY or UNIQUE KEY constraint "INTEG_5" on table "PLG$SRP"", cela signifie que tu veux créer le compte "toto" alors que celui-ci existe déjà. En fait, c'est un doublon.
    Ce ne sont pas des erreurs aléatoires, mais juste une impossibilité de créer ce compte, puisqu'il existe déjà.
    Prends l'habitude de faire un "drop user toto" avant de le recréer.

    Citation Envoyé par DelphiCode
    On voit bien que j'ai réussi à créer un compte "titi" administrateur ...
    Pour créer un compte admin de nom "titi", il faut faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    drop user titi;
    create user titi;
    grant rdb$admin to titi:
    J'ai compris ce que signifie le "with admin option" sur un rôle pour à un compte utilisateur.
    Par exemple, tu te connectes avec le compte "Artemus", qui je le rappelle est le créateur/propriétaire de la base de données. Puis tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    grant  dbsupervisor  to patron  with admin option granted by artemus;
    grant  dbreader      to patron  with admin option granted by artemus;
    grant  dbuser        to patron  with admin option granted by artemus;
    Tu remarques, que "Artemus" est celui qui a donner les privilèges à "Patron" (granted by).
    Que je le précise ou pas, cela n'a aucune importance, car dans ce cas là, ce sera forcément "Artemus" le grantor, pardon le concédant, car je me connecte avec ce compte.
    Mais ce que je peux faire, c'est attribuer ce concédant à quelqu'un d'autre.
    Cela peut avoir une signification en ce qui concerne l'arborescence des privilèges.
    Si je supprime un compte qui est admin sur le rôle, tous les privilèges donnés par ce compte disparaissent.

    "Artemus" a le rôle de super administrateur de sa base de données, puisqu'il est le créateur/propriétaire de celle-ci.
    Lorsque "Patron" se connecte avec le rôle de "dbsupervisor" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input %FIC%  -quiet  -password 'patron'  -role 'dbsupervisor' -user 'patron'  '..\Data\Base.fdb'
    il peux attribuer les rôles à qui il veut, puiqu'il administrateur de ce rôle, comme dans l'exemple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grant  dbreader  to lecteur;
    grant  dbuser    to gordon;
    "Patron" est le chef pour les rôles où il est administrateur.
    Il peut attribuer ces rôles, ou les retirer à n'importe quel utilisateur.
    Et ici, le concédant (grantor) est "patron".

    Citation Envoyé par DelphiCode
    ... puis que je me connecte avec et qu'après j'arrive bien à créer le role "test" ainsi qu'un autre utilisateur vuvu.
    Tu n'as pas besoin d'être administrateur pour créer un rôle. Tu peux le faire avec le compte créateur/propriétaire de ta base de données.

    Citation Envoyé par DelphiCode
    ... car si je supprime la base de données et que je recommence avec une nouvelle les erreurs n'apparaissent pas pour les mêmes noms.
    Si tu supprimes ta base de données de travail et que tu fasses ceci pour te connecter avec "isql" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input %FIC%  -quiet  -password 'masterkey'  -role 'rdb$admin'  -user 'sysdba'  'F:\Wamp\bin\FireBird\Courant\Security3.fdb'
    et que tu fasses le vidage des deux tables, tu verras les comptes que tu as créés précédemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    show database;
    Database: localhost:F:\Wamp\bin\firebird\courant\security3.fdb
            Owner: ADMINISTRATOR
    PAGE_SIZE 8192
    Number of DB pages allocated = 224
    Number of DB pages used = 202
    Number of DB pages free = 22
    Sweep interval = 20000
    Forced Writes are ON
    Transaction - oldest = 233
    Transaction - oldest active = 234
    Transaction - oldest snapshot = 234
    Transaction - Next = 237
    ODS = 12.0
    Database not encrypted
    Default Character set: NONE
    Linger: 60 seconds
     
    show tables;
           PLG$SRP                                PLG$USERS
     
     
    select * from plg$users;
     
    PLG$USER_NAME                   PLG$GROUP_NAME                       PLG$UID      PLG$GID PLG$PASSWD                                                                                                                             PLG$COMMENT PLG$FIRST_NAME                   PLG$MIDDLE_NAME                  PLG$LAST_NAME
    =============================== =============================== ============ ============ =============================================================================== ================= ================================ ================================ ================================
    SYSDBA                          <null>                                <null>       <null> 4E4C74776373394C72784C4D4F5968473075474D3969364B53376D663351414B764656706D52673D                                                            <null> Sql                              Server                           Administrator
     
    select * from plg$srp;
     
    PLG$USER_NAME                   PLG$VERIFIER                                                                                                                                                                                                                                                     PLG$SALT                                                               PLG$COMMENT PLG$FIRST                        PLG$MIDDLE                       PLG$LAST                            PLG$ATTRIBUTES PLG$ACTIVE
    =============================== =============================================================================== ================================================================ ================= ================================ ================================ ================================ ================= ==========
    SYSDBA                          56BEF2B0EED20749B33BDDFC575FA9EB268D77B2032B30F0566A1A809D75B2B69E49400398725C484BD05CD5C47CD5D6F68908F3B6D359B06A20835CFC601DE696098A8EC79F51707D61D0602EAE19D5E0009B71C4844AEC269E83BBDF334B4E00DA4FE5DDC36FB9E61E429989FE238171B17CD96348E3BCDC4DF07BEB6C65B9 794B0A89A473B4C1206722D3C23DA312E4B7C25EA85F1408D81CCB3442BD3856            <null> <null>                           <null>                           <null>                                      <null> <true>
    PATRON                          BBDB19C723B7FF249E75D37ADFAE882737356F4B086A87E50F7DEE52AA4AA9D836DA6F9251D877C6D42953ECFA1C95815B2EE68BDABFC68B85621EEFAFA5BE1930E0251AAFE5C81A8E892C265C2B7422D5698BEA560C6766E2B823BDD9365545CC3D6AFB1FFE6FC9B8602F868CC5FD15934F696A9E71461EAA97EC1A98ABF550 363F1060BD14EC9E0C84714402BA8E30D124124AA10F308EB39491E539F16CAF            <null> <null>                           <null>                           <null>                                      <null> <true>
    GORDON                          35586FF72AC253F15560BE498F18D81EB26A56A10DD2BF1771906A481A63DD186C466FDA3D28B214477CFC56CA0D78A937A18EB5BA22097FDE05346F1E36673C9C449B9FE52732B459630A0005FC95BDD403699F40BD338A3BB10C76ED4786F5E72F6F364CBB6C528789D67C6B14C7621D84550DC40133D60E80ED2DF4DF3E4C 71BB81831E67DC8AFA2BB362D2CFEB1DF2B8B5280582E9221BF05ABCCA8D812F            <null> <null>                           <null>                           <null>                                      <null> <true>
    LECTEUR                         15DBC2AE4FD9D32EEDD5668694C5A3CCF67866BEFA0B1A6BF2D5E2328D4FA5455A706BF0F050F2DF3A04D513EE33444248024AF38C9CD1FCBA8AAC8A26FC970CDED1642E6A75504AFA8AE24FE504EC1A4B61FBA46522E1634DC38ECF39A3ACE8D60C35092DBB03BCA74C39AEE361D2BE338A4940D79252AED3F87C08F5EB82C4 163682E5A9CA50475F60BEED3BC1FE1DFE45798C710242ED90BA38586DBDBE9D            <null> <null>                           <null>                           <null>                                      <null> <true>
     
     
    show users;
    Users in the database
      0  GORDON                              0  LECTEUR
      0  PATRON                              2 #SYSDBA
     
    exit;
     
    Appuyez sur une touche pour continuer...
    et tu remarques la présence de mes quatre comptes, bien que la base de données n'existe pas !
    Au passage, le propriétaire est "Administrator".
    C'est bien ce que je t'ai dit précédemment, les comptes sont dans la base "security3.fdb" tandis que les privilèges sont dans ta base de travail.

    Citation Envoyé par DelphiCode
    Je vois que dans ton test tu as bien réussi à créer "Administrateur" et "toto" sans erreur. Pourrais-tu essayer d'en créer plusieurs en série pour voir si c'est pareil.
    Ce n'est pas la peine que je le fasse car je sais que cela va fonctionner. Pourquoi ?
    Car les comptes "toto", "tata", "titi", tutu" ... n'existent pas chez moi.

    Citation Envoyé par DelphiCode
    Moi je vais à l'emplacement du fichier isql.exe et je fais un clic droit "Exécuter en tant qu'administrateur" avant de réaliser mes commandes.
    Il y a aussi une notion que je ne maîtrise pas du tout, celle de l'authentification sous windows.
    --> http://firebirdsql.org/file/document...ntication.html

    Je n'ai pas modifié le fichier "firebird.conf". Par défaut, c'est "srp".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select SEC$USER_NAME, SEC$PLUGIN from sec$users;
     
    SEC$USER_NAME                   SEC$PLUGIN
    =============================== ===============================
    SYSDBA                          Srp
    PATRON                          Srp
    GORDON                          Srp
    LECTEUR                         Srp
     
    exit;
     
    Appuyez sur une touche pour continuer...
    Ce qui signifie que je dois m'identifier avec un compte FireBird pour me connecter. Et non par rapport au nom de ma session windows.

    Je pense que je maîtrise assez bien les privilèges et les comptes sous FireBird (enfin je crois).
    Il me reste juste à trouver le moyen de changer le nom du compte "sysdba".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Salut Artemus24,

    Citation Envoyé par Artemus24
    Je ne sais pas faire cela. Pourrais-tu mettre le lien qui explique comment faire ?
    Voici le lien http://www.firebirdsql.org/file/docu...-security.html

    Citation Envoyé par Artemus24
    C'est bien ce que je t'ai dit précédemment, les comptes sont dans la base "security3.fdb" tandis que les privilèges sont dans ta base de travail.
    C'est donc bien ce que je pense, malheureusement, n'importe qui peut y avoir accès. Si je suis ce que tu m'expliques les comptes (donc utilisateur + mot de passe) sont stockés dans "security3.fdb" qui est créée durant l'installation de Firebird. Donc si je réalise une installation toute fraîche de Firebird sur un autre ordinateur cette fameuse "security3.fdb" contiendra le compte sysdba par défaut (à savoir sysdba / masterkey) et donc il me suffit ensuite de copier ma base de données de travail sur ce nouvel ordinateur et d'y accéder classiquement avec sysdba / masterkey pour faire ce que je veux.

    C'est ce que je voudrais éviter car je le rappelle une fois de plus je ne peut pas protéger l'endroit où est stockée la base de données. Du coup s'il n'est pas possible d'empêcher sysdba d'accèder à la base de données c'est mort ! J'essaye de trouver un moyen, c'est pour cela que pendant un temps je pensais que si la base de données possédait sa propre "security" elle prévaudrait sur l'authentification classique par "security3.fdb". Et je pensais que ton astuce en créant la base de données avec un compte qui devient propriétaire empêcherait son accès à sysdba mais apparemment tu me confirmes que non donc ...

    Citation Envoyé par Artemus24
    Ce n'est pas la peine que je le fasse car je sais que cela va fonctionner. Pourquoi ?
    Car les comptes "toto", "tata", "titi", tutu" ... n'existent pas chez moi.
    Je m'en suis effectivement aperçu à un moment donné car ma commande "show users;" me donné adm, admi, etc. qui n'était pas sur le test en cours. Il me semblait avoir fait le test en les supprimant tous avant d'en recréer mais du coup j'ai un doute alors je vais refaire cela proprement et je te donnerais le résultat pour voir si ce n'était que cela ou bien s'il y a bien un problème.

    Citation Envoyé par Artemus24
    Je n'ai pas modifié le fichier "firebird.conf". Par défaut, c'est "srp".
    Alors on est pareil car je n'ai rien modifié non plus.

    Artemus24 je tiens à te remercier grandement pour le reste de tes explications et ta grosse contribution sous forme d'exemple, j'apprécie.

    Citation Envoyé par Artemus24
    Sur la création d'un compte, je ne sais pas à quoi cela sert de mettre "grant admin role".
    Dans un de mes précédents messages j'ai posté ce lien http://www.firebirdsql.org/refdocs/l...-rdbadmin.html et dans la section "In the security database" figure l'explication qui je l'avoue mérite d'être lue plusieurs fois. Mais apparemment c'est utilisé pour les bases de données de sécurité, c'est une alternative à gsec si j'ai bien compris. Car comme tout change depuis la version 3.0 du fait qu'il puisse y avoir plusieurs bases de données de sécurité, du coup le gsec ne fonctionnera qu'avec "security3.fdb" et pas avec les bases de données de sécurité que nous aurions créées.

    Voici un nouveau lien qui confirme la dépréciation de gsec http://www.firebirdsql.org/file/docu...01ch11s04.html et la possibilité de l'utiliser mais uniquement sur "security3.fdb".

    Merci encore et je donne des nouvelles dès que j'ai fait mon test.
    A plus tard,

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Bon je reviens après avoir fait mes tests !

    J'ai bien vérifié et j'ai bien supprimé l'intégralité des utilisateurs que j'ai pu créer et ensuite seulement j'ai recréer une nouvelle base de données en sysdba et puis j'ai essayé de nouveau de créer des utilisateurs comme les fois précédentes et j'obtiens toujours des erreurs aléatoires.

    Du coup j'ai réalisé d'autres tests et à un moment donné je me suis aperçu que cela fonctionnait. j'ai cherché à comprendre et je me suis aperçu en faisant un "show database;" que le page_size était de 8192 par défaut quand il est omis dans le "create database".

    Finalement, dans mon cas, je rencontre des problèmes quand j'essaye de créer des utilisateurs dans une base de données avec un page_size de 4096. Ceci-dit, je le rappelle, malgré les erreurs les utilisateurs sont quand même créées. C'est étrange mais c'est ce que je constate chez moi. Est-ce que quelqu'un pourrait faire le test SVP ?

    J'ai fait un script qui crée des utilisateurs de 4 lettres (dont le mot de passe est identique à l'identifiant) en série. J'ai repris l'ensemble des lettres de l'alphabet avec des voyelles sur le second et dernier carcatères (baba, bebe, bibi, bobo, bubu, byby jusqu'à zyzy) :

    • create user baba password 'baba' grant admin role;
    • ...
    • create user zyzy password 'zyzy' grant admin role;


    Et évidemment le même pour la suppresion :


    • drop user baba;
    • ...
    • drop user zyzy;


    Voilà pour le moment, j'attends de vos nouvelles.
    Merci par avance et bonne nuit.

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Bonsoir le forum,

    Je viens donner des nouvelles et faire un résumé !

    Dans le premier post que j'ai écrit je cherchais à transposer une base de données que j'avais en 2.5.4 en 3.0 et surtout d'arriver à créer au moins un utilisateur admin et créer un role sysdba pour protéger l'accès à ma base de données. C'est là que les choses se sont corsées et que j'ai compris que la version 3.0 était réellement différente et que j'ai appris de la part de makowski que l'astuce de créer le role sysdba ne servait à rien (je me suis rendu compte que sous le isql de la version 3 c'était d'ailleurs interdit).

    Avec l'aide d'Artemus24 j'ai réalisé de nombreux tests qui m'ont permis de me rendre compte que je ne me servait pas correctement de la commande permettant de créer un utilisateur avec toutes les options qu'elle possède. De plus, concernant les erreurs aléatoires que j'obtenais parfois lors de la création des utilisateurs, je me suis rendu compte (en me connectant à "security3.fdb") que même après avoir supprimé les utilisateurs il restait des éléments dans la table "plg$users". Du coup comme j'ai pas arrêté de faire des tests dans tous les sens j'ai décidé de faire comme Artemus24, à savoir réinstaller Firebird 3.0, et après cela je n'ai plus rencontré de problèmes (que ce soit en page_size 4096 ou en 8192 !). Je présume donc qu'avec tous les tests que j'ai fais j'ai dû faire une erreur de manipulation qui a laissé la base de données dans un état bancal !

    Finalement il ne me reste plus qu'une seule question :


    • Est-il possible, sous Firebird 3.0, d'empêcher l'accès au fichier ".fdb" par sysdba si on le copie sur un nouvel ordinateur qui possède une installation toute fraîche de Firebird 3.0 (et donc avec le compte par défaut sysdba / masterkey) ?


    Voilà où j'en suis pour le moment. Je vous remercie pour votre aide à tous les deux.
    Si quelqu'un a déjà rencontré ce problème ou a une idée je suis grandement preneur.

    Merci encore et bonne soirée.

  5. #25
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut DelphiCode.

    Citation Envoyé par DelphiCode
    Est-il possible, sous Firebird 3.0, d'empêcher l'accès au fichier ".fdb" par sysdba si on le copie sur un nouvel ordinateur qui possède une installation toute fraîche de Firebird 3.0 (et donc avec le compte par défaut sysdba / masterkey) ?
    Il n'est pas nécessaire d'utiliser le compte administrateur "SYSDBA" pour créer une base de données sous FireBird 3.0.0.
    Comme je te l'ai indiqué, j'ai pu faire mes manipulations avec un compte "ARTEMUS" qui n'est pas administrateur sans problème.
    Pour ce faire, j'ai créé ma base de données en suivant le lien que tu m'as donné, à savoir mettre la sécurité dans la base de données.
    C'est à cause de cette astuce que mon compte "ARTEMUS" est créateur/propriétaire, c'est-à-dire administrateur de la base de données / sécurités que je viens de créer.

    A partir de ce moment, je n'ai aucun problème pour créer les utilisateurs dans ma base.

    Donc en résumé, et selon mon test, dans ma base j'ai ma table "TEST" et la table sécurité de nom "PLG$SRP" qui contient les utilisateurs.
    Comment faire pour interdire aux autres utilisateurs d'accéder à ma base ?
    C'est le grand SergioMaster qui m'a donné la solution. J'ai développé dans le sujet ci-après le test que j'ai fait :
    --> http://www.developpez.net/forums/d15...-firebird-3-a/

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #26
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    C'est le grand SergioMaster qui m'a donné la solution.
    pas tant que ça (1.82m) et s'il s'agit de compétences je me considère toujours comme un novice en la matière loin derrière des gens comme makowski qui lui est vraiment impliqué dans Firebird.
    D'ailleurs si je ne suis pas intervenu avant c'est parce que je ne suis pas encore passé à la version 3, ni même installée sur mes postes, entre autre pour des raisons :
    - de migration de données non encore résolu (je bloque entre autre sur les blobs de grosse taille) à laquelle les outils proposés me laisse un peu sur le tapis.
    - de manque de temps , à tel point que je n'ai pas encore pris le temps de lire le papier de Cantù sur la Migration (Migration Guide to Firebird 3) que je n'ai fait que survoler

    je ne fait que citer le sous-titre concernant les Utilisateurs dans ce guide et que l'auteur ne m'en voudra pas pour ceci
    Firebird 3 introduces big changes in users management and in tte role of the SYSDBA user. Be prepared to revisit your assumptions
    ce que j'ai entraperçu c'est que :
    -Gsec est à éviter
    -databases.conf permet de choisir entre une sécurité utilisateur "serveur" ou "base" <<<<<<<<<<<<<
    -qu'une bonne pratique pour l'initialisation de la sécurité de Firebird 3 est de passer par un connexion Embedded la première fois (là c'est encore trouble pour moi)
    -et qu'enfin un vraie bonne sécurité passe par l'encryptage (qui fait l'objet d'un autre chapitre)

    Bref, je ne fait qu'explorer le sujet, en tout cas la partie du titre citant flamerobin ne me parait pas utile , et je trouve que cette discussion aurait plus eu sa place en Administration que en Outils
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #27
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut SergioMaster.

    J'ai quand même beaucoup de mal avec la documentation FireBird.
    Je la trouve mal faite, voire incomplète et même un peu trop simpliste sur les exemples données.
    Comme le sujet m'intéressait, je me suis penché sur la question, entre autre celle du rejet du compte administrateur "SYSDBA".
    Et en lisant le forum FireBird de Developpez, je suis tombé sur une de tes réponses que j'ai trouvé parfaite pour ce genre de problème.

    Je reste bloqué sur la question du "grant admin role lors de la création d'un compte, car je ne comprends pas ce que cela fait réellement.
    Si c'est pour mettre ce compte en tant qu'administrateur, cela ne fonctionne pas et je suis toujours obligé de faire un "grant RDB$ADMIN to artemus" pour mes tests.
    Je l'ai même fait depuis le compte "SYSDBA" et cela n'a rien changé.

    Pour l'instant, j'ai terminé mes tests et je mets cela en stand by.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #28
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous,

    Désolé pour le délai mais merci à vous deux pour votre contribution.

    Citation Envoyé par Artemus24
    C'est le grand SergioMaster qui m'a donné la solution. J'ai développé dans le sujet ci-après le test que j'ai fait :
    Si je comprends bien ta démarche, tu as fais en sorte d'utiliser la "security" dans ta propre base de données et ensuite tu as utilisé un trigger database ("sur connexion à la base de données pour refouler sysdba") ? Si c'est le cas, il est possible de désactiver ce genre de trigger à la connexion (je ne sais pas pour isql mais pour certains outils tiers d'administration c'est le cas) c'est pour cela que j'utilisais l'astuce du "create role sysdba" sous la 2.5.4.

    Du coup si le trigger saute, plus de protection. Mais peut-être ai-je mal compris ta proposition ?

    Citation Envoyé par SergioMaster
    Bref, je ne fait qu'explorer le sujet, en tout cas la partie du titre citant flamerobin ne me parait pas utile , et je trouve que cette discussion aurait plus eu sa place en Administration que en Outils
    Effectivement, mais au tout début je faisais les tests avec flamerobin et j'ai eu peur de me faire refouler dans la section Administration. Quelqu'un pourrait peut-être le migrer ou je peux en créer un nouveau dedans et mettre un lien vers celui-ci ?

    Merci à vous 2 et bonne fin de journée à tous.
    A plus,

  9. #29
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut DelphiCode.


    Citation Envoyé par DelphiCode
    Du coup si le trigger saute, plus de protection. Mais peut-être ai-je mal compris ta proposition ?
    D'une part, seul l'administrateur ("artemus") de la base de données à l'accès à ce trigger.
    Et d'autre part, pour le désactiver, il faut entrer dans la base de données.
    A moins d'avoir une astuce que je ne connais pas, je ne voie pas comment faire puisque tu n'as pas la main.

    Cette astuce répond à ton problème, interdire les accès aux comptes administrateurs qui ne sont pas autorisés !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #30
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Merci Artemus24,

    Citation Envoyé par Artemus24
    D'une part, seul l'administrateur ("artemus") de la base de données à l'accès à ce trigger.
    Et d'autre part, pour le désactiver, il faut entrer dans la base de données.
    A moins d'avoir une astuce que je ne connais pas, je ne voie pas comment faire puisque tu n'as pas la main.
    Ce que je voulais dire c'est que dans l'outil graphique d'administration de la base de données, lorsqu'on créé ou qu'on se connecte à une base de données il est demandé de saisir les informations (protocole, hôte, numéro de port, nom d'utilisateur, mot de passe et rôle) et juste après ces informations il existe une case à cocher où est écrit "Skip database triggers (Firebird 2.1 or higher)".

    C'est cette option que je mettais pour les bypasser (lors de tests), maintenant effectivement au début je les avait créés avec sysdba et donc avec tes précisions cela fonctionne peut-être dans mon cas.

    Je te remercie grandement Artemus24 pour ce dernier post, je vais essayer de reproduire la même chose que toi et voir si j'arrive toujours à sauter ces triggers spécifiques ou si enfin c'est bien bloqué. je suis content j'ai quelque chose de vraiment nouveau auquel je n'avais pas assez gratté et pensé (les droits sur les triggers connect / diconnect). Donc, avec cette technique on empêcherait sysdba d'accéder à ce trigger, c'est magnifique.

    Je suis un peu chargé et je ne pourrais pas tester ce soir mais je vais essayer dans la semaine.

    Merci encore et je vous tiens au courant dès que je le peux.
    Bonne soirée.

  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne me suis que très peu penché depuis sur le sujet, mais il me semble que :
    - SYSDBA n'est plus un utilisateur obligatoire, pour les bases sans SYSDBA c'est l'utilisateur propriétaire qui en est l'administrateur
    - Qu'il est possible de le désactiver SYSDBA comme tout autre utilisateur
    en me basant sur ce que j'ai lu, il est possible de ne plus avoir la base security comme étant celle stockant les utilisateurs de la base mais une base indépendante (disons securitedemabase.fdb) qui bypasse security3.fdb (ou le nom souhaité en modifiant le paramètre securitydatabase dans firebird.conf)



    ce qui n'est pas expliqué (du moins dans le guide que j'ai lu pas encore à fond) est la chose suivante :

    Soit 2 bases b1 et b2 si dans database.conf on a les alias suivants

    Base1=c:\fichiers\b1.fdb // b1 utilise la base de sécurité serveur securty3.fdb
    Base2=c:\fichiers\b2.fdb
    {SecurityDatabase=c:\Fichiers\securitedemabase.fdb}
    Quid lorsque l'on supprime le paramètre SecurityDatabase de Base2, ou que l'on prend la c:\fichiers\b2.fdb pour la mettre sur un autre poste

    bref il y a encore beaucoup de points qui pour moi ne sont pas encore très clairs ! et je n'ai pas encore eu le temps de me plonger dans la doc officielle
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #32
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut à tous.

    @ DelphiCode : selon moi, la case à cocher te permet de désactiver le trigger que si tu peux entrer dans la base de données.
    Le déclencheur n'est pas extérieur à la base de données, car autrement on aurait pu le désactiver sans avoir l'accès !
    Le mieux est de faire le tester et voir ce qui se passe.

    @ SergioMaster : j'avais déjà pensé à cette solution.
    Modifier le fichier "database.conf afin de supprimer la déclarative de la base de sécurités.
    Sauf qu'au lieu d'avoir physiquement une base de sécurités bien distincte de la base de données, j'ai fait en sorte de les fusionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Base2=c:\fichiers\b2.fdb
    {SecurityDatabase=Base2}
    De ce fait, la table "PLG$SRP ne peut pas être détruite, comme elle le serait si la base de sécurité avait été extériorisée.
    Résultat : Je ne peux pas accéder à la base avec le compte "SYSDBA" !
    J'ai l'interdiction produite par le déclencheur.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  13. #33
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous,

    Artemus 24, désolé pour le retard mais je n'ai pas pu m'y consacrer la semaine dernière ! J'ai attaqué les tests aujourd'hui mais je trouve bizarre car je ne trouve pas les tables que tu mentionnes. Pourrais-tu avoir la gentillesse de me donner ton "database.conf" en entier pour voir si je n'ai pas fais d'erreur.
    Je t'explique ce que j'ai fais :
    • J'ai commencé par créer une base de données de sécurité comme dans la documentation de Firebird mais avec mon propre user et mot de passe (comme toi avec "Artemus" mais moi j'en ai choisi un autre )
    • Ensuite j'ai crée une nouvelle base de données avec mon propre user / mot de passe comme pour le point précédent.
    • Les 2 bases de données sont bien crées et je peux me connecter à chacune d'entre elles avec le user / mot de passe que j'ai mis en les créant.
    • J'ai modifié le fichier "database.conf" en ajoutant à ce qui existe déjà les mêmes lignes que toi (à savoir la même qui fait les deux)
    • Puis j'ai redémarré mon ordinateur pour que les services soient bien redémarrés et prennent en compte ma modification
    • Puis je me connecte à ma base de sécurité et là je n'ai aucune table ! Alors que je m'attendais à trouver celle dont tu parles "PLG$SRP" ?


    Encore une fois merci de ton aide.
    Bonne soirée,

  14. #34
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut Delphicode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    # ------------------------------
    # List of known databases
    # ------------------------------
     
    #
    # Makes it possible to specify per-database configuration parameters.
    # See the list of them and description on file firebird.conf.
    # To place that parameters in this file add them in curly braces
    # after "alias = /path/to/database.fdb" line. Example:
    #	big = /databases/bigdb.fdb
    #	{
    #		LockMemSize = 32M		# We know that bigdb needs a lot of locks
    #		LockHashSlots = 19927	#	and big enough hash table for them
    #	}
    #
     
    #
    # Example Database:
    #
    employee.fdb = $(dir_sampleDb)/employee.fdb
    employee = $(dir_sampleDb)/employee.fdb
     
    #
    # Master security database specific setup.
    # Do not remove it until you understand well what are you doing!
    #
    security.db = $(dir_secDb)/security3.fdb
    {
    	RemoteAccess = true
    	DefaultDbCachePages = 50
    }
     
    #
    # Live Databases:
    #
     
    first = E:/23.FireBird/32.Privilèges/Data/Base.fdb
    {
        SecurityDatabase = first
        {
            RemoteAccess = true
            DefaultDbCachePages = 50
        }
    }
    Citation Envoyé par DelphiCode
    je trouve bizarre car je ne trouve pas les tables que tu mentionnes.
    La table apparaît presque par miracle que si tu déclares un utilisateur.
    Donc tu fais un "show database" avant de faire quoi que ce soit.
    Que constates-tu ? Et bien, la table "PLG$SRP" n'existe pas !
    Maintenant, tu fais un "create user tournesol password tryphon".
    Puis encore un "show database". Que vois-tu ? Oh miracle, la table en question vient d'apparaître.
    Pourquoi ? A cause de la déclarative dans le fichier "databases.conf".

    Pour que cela fonctionne, tu dois accéder avec l'alias "first" !!!

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  15. #35
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Artemus24 Voir le message
    Pourquoi ? A cause de la déclarative dans le fichier "databases.conf".
    Pour que cela fonctionne, tu dois accéder avec l'alias "first" !!!
    c'est ces deux parties qui me laissent perplexe.
    a) tout d'abord il faut donc que la "base de sécurité" on devrait plutôt dire les tables, soient dans la base
    b) il faut que le databases.conf soit correctement configuré
    question : que se passe t-il sur ta base si dans databases.conf tu supprimes les lignes 34 à 44 ? dans ce cas, c'est bien security3.fdb qui est pris en compte et non les utilisateurs de PLG$SRP ce qui tenterait à prouver que sans un trigger sur le ON CONNECT on retombe encore sur le même problème (copie de la base sur un autre poste).

    autre question existentielle (ou peu s'en faut ) AMHA, seul firebird (quand on est sous Linux cet utilisateur (linux) est créé) devrait avoir accès à la base de sécurité, là encore je ne suis pas assez loin dans mes investigations pour affirmer quoique ce soit ! sachant qu'il y a aussi les plug-in à prendre en considération c'est très complexe (et oui, la documentation est encore à éplucher ! et parcellaire , par exemple le document FB3 migration guide ne mentionne rien à ce sujet)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #36
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut SergioMaster.

    Citation Envoyé par SergioMaster
    a) tout d'abord il faut donc que la "base de sécurité" on devrait plutôt dire les tables, soient dans la base
    Il y a trois cas :
    --> soit tu ne mets aucun déclaration dans le fichier "databases.conf" et dans ce cas, c'est le fichier "security3.fdb qui sera pris en compte.

    --> soit tu mets la déclarative suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    first = E:/23.FireBird/32.Privilèges/Data/Base.fdb
    {
        SecurityDatabase = E:/23.FireBird/32.Privilèges/Data/Security.fdb
        {
            RemoteAccess = true
            DefaultDbCachePages = 50
        }
    }
    et dans ce cas, en plus du fichier "security3.fdb", tu as un autre fichier distinct et de nom "security.fdb".
    Le fait qu'il soit extérieur pose déjà un problème de sécurité concernant l'accès à tes données confidentielles.

    --> soit tu mets la déclarative suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    first = E:/23.FireBird/32.Privilèges/Data/Base.fdb
    {
        SecurityDatabase = first
        {
            RemoteAccess = true
            DefaultDbCachePages = 50
        }
    C'est le cas que j'ai utilisé. La base contient à la fois les données et les sécurités que tu veux mettre en place.

    De toute façon, le fichier security3.fdb, tu ne peux pas le supprimer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b) il faut que le databases.conf soit correctement configuré
    Au moins la première fois, lors de la création de la base de données sinon tu ne peux pas inclure la base de sécurités dedans.

    J'ai fait le test de la suppression de cette déclarative dans le databases.conf, et c'est le déclencheur qui m'a interdit l'accès par le compte "sysdba".
    Citation Envoyé par SergioMaster
    question : que se passe t-il sur ta base si dans databases.conf tu supprimes les lignes 34 à 44 ? dans ce cas, c'est bien security3.fdb qui est pris en compte et non les utilisateurs de PLG$SRP ce qui tenterait à prouver que sans un trigger sur le ON CONNECT on retombe encore sur le même problème (copie de la base sur un autre poste).
    Pour l'instant, c'est le déclencheur "connect" qui a pris le dessus. Même si j'ai le fichier "security3.fdb", l'accès se fait avec le bon le compte, si celui-ci est identifié correctement, avec le bon mot de passe.
    Si je tape le compte "artemus" (ou un autre compte), il entre dans la base de données avec les bons privilèges.

    Citation Envoyé par SergioMaster
    seul firebird (quand on est sous Linux cet utilisateur (linux) est créé) devrait avoir accès à la base de sécurité
    As-tu un doute à ce sujet ? Selon moi, c'est le compte administrateur "sysdba" (ou n'importe quel compte administrateur) ou le compte créateur/propriétaire "administrator" qui devraient normalement avoir accès à "security3.fdb".

    Je pense que l'approche de cette sécurité est faite en ayant en tête que les fichiers physiques sont déjà protégés par le système d'exploitation.
    Et donc, tout se passe par l'intermédiaire du serveur FireBird.
    Interdire l'accès physique est la première sécurité à mettre en place.

    Personnellement, je pense que cette approche est foireuse.
    Le mieux est d'associer la sécurité dans la base de données, d'une manière indissociable et non à l'extérieur de celle-ci.
    Et de créer des outils d'identifications pour accéder à la base de données, comme le déclencheur "connect".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  17. #37
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous,

    Je continue d'avancer dans mes tests ! Bon ton astuce du create user marche super bien Artemus 24 alors un grand merci.

    Une première remarque, dans mon cas, que j'accède par le chemin + nom de ma base de données ou par l'alias j'ai le même comportement c'est-à-dire que j'accède bien à PLG$SRP dans les deux cas et avec les mêmes informations. Du coup je ne sais pas si c'est vraiment obligatoire d'y accéder avec l'alias ?

    Ensuite, une question me taraude, si je fais un "show users;" j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2 #ADMINISTRATEUR     3 -SYSDBA
    Bon comme tu l'auras compris j'ai créée ma base avec Administrateur au lieu d'Artemus ce n'est pas ça le problème. Le truc c'est que je ne me suis servi à aucun moment de SYSDBA et qu'il apparaît et surtout qu'est-ce qu'il y a en 1 ?
    As-tu le même comportement de ton côté ? En ce qui concerne la création du user il apparaît bien sans problème dans PLG$SRP.

    Merci pour vos éclaircissments ?

    Allez je m'en vais créer le trigger ...

    A plus,

  18. #38
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut DelphiCode.

    Ça dépend comment tu accèdes à ta base.

    1) soit en mode non administrateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input test.sql  -quiet  -password 'artemus'  -user 'artemus'  first
    et voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    show users;
    Users in the database
      2 #ARTEMUS
     
    exit;
     
    Appuyez sur une touche pour continuer...
    2) soit en mode administrateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input test.sql  -quiet  -password 'artemus'  -role 'RDB$ADMIN'  -user 'artemus'  first
    et voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    show users;
    Users in the database
      2 #ARTEMUS                             0  JAMES
      0  JEREMY                              0  MIGUELITO
      0  ULYSSES
     
    exit;
     
    Appuyez sur une touche pour continuer...
    Ce qui me parait bizarre dans ton cas, c'est que le compte "sysdba" apparaît quand même dans la liste des utilisateurs.

    Chez moi, "Sysdba" est présent dans "security3.fdb" (voire aussi "administrator"), mais pas dans la base de données que je viens de créer.
    De plus, que signifie ce '-' devant "sysdba" ?

    As-tu bien mis la déclarative dans le fichier "databases.conf" ? A priori, je pense que oui !
    Sinon, tu ne m'aurais pas posé la question concernant la table "PLG$SRP".

    Essayes de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    show users;
     
    show database;
     
    show tables;
    select distinct PLG$USER_NAME from PLG$SRP;
    commit;
     
    connect "localhost:F:\Wamp\bin\firebird\courant\Security3.fdb"      user 'sysdba'  password 'masterkey';
     
    show database;
     
    show tables;
     
    select distinct PLG$USER_NAME from PLG$USERS;
    select distinct PLG$USER_NAME from PLG$SRP;
     
    exit;
    Tu réadaptes le chemin vers le fichier "security3.fdb".

    Histoire de voir, si par hasard, tu n'aurais pas mis le compte "sysdba" dans la sécurité nouvellement créé de ta base de données.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  19. #39
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Salut Artemus24,

    Je sais pas ce que j'ai fait ni ce que signifie ce -SYSDBA mais il n'y ait plus ! j'ai fermé isql avant d'aller manger et en revenant j'ai refait les tests et ça marche j'ai comme toi. Entre temps j'ai rajouter "grant rdb$admin to Administrateur" car je ne sais pas s'il fallait le mettre ?

    En ce qui concerne le trigger je l'ai implémenté et il marche bien mais j'ai une mauvaise nouvelle car j'ai essayé de copier cette base de données sur un autre ordinateur avec le fameux outils d'administration tiers qui possède la case à cocher "Skip database triggers (Firebird 2.1 or higher)" et la protection saute (j'entends que le trigger "Autorisation" n'est pas exécuté) et j'accède bien à la base de données. Du coup j'ai cherché plus en profondeur et je me suis rendu compte à cette adresse : http://firebirdsql.org/refdocs/langr...l-trigger.html que le isql possédait un paramètre spécifique permettant de sauter les triggers de base de données. Il suffit de lancer isql depuis une invite de commande dos en ajoutant le paramètre comme ceci : "isql -nodbtriggers" et ensuite de réaliser une connexion classique à la base de données et là plus d'interdiction.

    Je présume que c'est cette technique qu'utilise mon outil tiers. Pourrais-tu essayer de ton côté pour valider que ce n'est pas que chez moi STP ? Peut-être ai-je mal réglé les droits du trigger ? Dans ce cas pourrais-tu m'en dire plus.

    Je suis dégoûté je pensais que c'était la bonne ! Enfin bon j'ai encore un espoir avec toi que ce soit qu'un problème de droits

    A plus,

  20. #40
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 959
    Points
    18 959
    Par défaut
    Salut DelphiCode.

    Citation Envoyé par DelphiCode
    Entre temps j'ai rajouter "grant rdb$admin to Administrateur" car je ne sais pas s'il fallait le mettre ?
    Ça ne sert que dans un seul cas, celui de la suppression des comptes !
    Je ne sais pas pourquoi, mais le compte créateur/propriétaire n'est pas suffisant pour cela et doit être aussi administrateur. Bizarre !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isql  -charset win1252  -echo  -input 7.Test.sql  -quiet  -nodbtriggers  -password 'masterkey'  -role 'rdb$admin'  -user 'sysdba'  first
    J'ai mis "-nodbtriggers" afin de désactiver tous les déclencheurs. Et voici le résultat de l'accès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Statement failed, SQLSTATE = 28000
    Your login SYSDBA is same as one of the SQL role name. Ask your database administrator to set up a valid Firebird login.
    After line 0 in file 20.No_Trigger_Sysdba.sql
    show users;
    Command error: show users
     
    alter trigger autorisation inactive;
     
    commit;
     
    show trigger autorisation;
    Command error: show trigger autorisation
     
    exit;
     
    Appuyez sur une touche pour continuer...
    L'accès est interdit mais pas par le déclencheur. En fait, l'astuce est de mettre "create role sysdba" afin d'interdire l'usage de ce compte.

    Si je le fais avec le compte "artemus" (le compte créateur / propriétaire), le déclencheur est bien désactivé !
    Mais pour ce genre de test (avec artemus), cela n'a aucun intérêt car il est le créateur/propriétaire.
    Et en principe, le pirate ne connait pas ce compte.

    L'intérêt se porte bien sur le compte "sysdba".

    P.S.: tu ne m'as pas donné le résultat du script que je t'ai donné ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. problème d'accès avec le compte administrateur local
    Par ferhat.adel dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 02/02/2014, 18h55
  2. problème avec la session administrateur
    Par fofmata dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/05/2007, 00h19
  3. Problème avec mon compte d'administrateur
    Par Ganak dans le forum Windows XP
    Réponses: 4
    Dernier message: 13/01/2007, 15h58
  4. Réponses: 2
    Dernier message: 21/07/2005, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo