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

Compatibilité avec passwordcheck #13

Open
alhyss opened this issue Oct 16, 2023 · 1 comment
Open

Compatibilité avec passwordcheck #13

alhyss opened this issue Oct 16, 2023 · 1 comment
Milestone

Comments

@alhyss
Copy link
Collaborator

alhyss commented Oct 16, 2023

Lorsque le module passwordcheck est actif sur le serveur, la première tentative d'activation d'Asgard v1.4.0 se solde par l'erreur suivante :

CREATE EXTENSION asgard ;
ERREUR:  password must not contain user name
CONTEXTE : instruction SQL « CREATE ROLE "consult.defaut" WITH
			LOGIN
			PASSWORD 'consult.defaut'
			NOSUPERUSER
			INHERIT
			NOCREATEDB
			NOCREATEROLE
			NOREPLICATION
			NOBYPASSRLS »
fonction PL/pgSQL inline_code_block, ligne 100 à instruction SQL

Il n'y a pas d'erreur si le rôle "consult.defaut" existe déjà, Asgard ne tentant alors pas de le recréer.

    -- Role: "consult.defaut"

    IF NOT 'consult.defaut' IN (SELECT rolname FROM pg_catalog.pg_roles)
    THEN
    
        CREATE ROLE "consult.defaut" WITH
            LOGIN  
            PASSWORD 'consult.defaut'
            NOSUPERUSER
            INHERIT
            NOCREATEDB
            NOCREATEROLE
            NOREPLICATION
            NOBYPASSRLS ;
          
        COMMENT ON ROLE "consult.defaut" IS 'Rôle de connexion générique pour la consultation des données publiques. Membre de g_consult.' ;
        
    END IF ;
@alhyss
Copy link
Collaborator Author

alhyss commented Oct 16, 2023

Solution palliative : créer manuellement le rôle "consult.defaut" avant la première activation d'Asgard sur une base du serveur.

CREATE ROLE "consult.defaut" LOGIN PASSWORD '1*MotDePasseAssezRobuste' ;
CREATE EXTENSION asgard ;

Dans la prochaine version d'Asgard, on pourrait imaginer soit durcir le mot de passe du rôle "consult.defaut" d'une manière générale, soit uniquement quand passwordcheck est actif, en procédant par exemple de la manière suivante :

    -- Role: "consult.defaut"

    IF NOT 'consult.defaut' IN (SELECT rolname FROM pg_catalog.pg_roles)
    THEN
        IF NOT (
            SELECT setting ~ '^(.*,\s*)passwordcheck\s*,' 
                FROM pg_settings
                WHERE name = 'shared_preload_libraries'
        )
        THEN
            CREATE ROLE "consult.defaut" WITH
                LOGIN  
                PASSWORD 'consult.defaut'
                NOSUPERUSER
                INHERIT
                NOCREATEDB
                NOCREATEROLE
                NOREPLICATION
                NOBYPASSRLS ;
        ELSE
            CREATE ROLE "consult.defaut" WITH
                LOGIN  
                PASSWORD '1*MotDePasseAssezRobuste'
                NOSUPERUSER
                INHERIT
                NOCREATEDB
                NOCREATEROLE
                NOREPLICATION
                NOBYPASSRLS ;
        END IF ;
          
        COMMENT ON ROLE "consult.defaut" IS 'Rôle de connexion générique pour la consultation des données publiques. Membre de g_consult.' ;
        
    END IF ;

@alhyss alhyss added this to the ASGARD v1.4.1 milestone Aug 9, 2024
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

1 participant