Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qHA47-0004gl-Pn for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Jul 2023 21:29:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qHA46-0006y8-N9 for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Jul 2023 21:29:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qHA46-0006xz-8A for pgsql-hackers@lists.postgresql.org; Wed, 05 Jul 2023 21:29:34 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qHA43-002EgR-9l for pgsql-hackers@postgresql.org; Wed, 05 Jul 2023 21:29:33 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-1b7fb1a82c4so40305155ad.1 for ; Wed, 05 Jul 2023 14:29:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688592569; x=1691184569; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=U/NqQdSK2u3VmCAGJ8pQGJmJkhstN17thahjUcysgUA=; b=oFpclaAFC9S+9uyiTyAl1XfENcGBe8khcRMC1Z+oKpcejhQrHTPn2dWaRTFpsHAvOa kT89i3QzFxq6s+yEhEaQM0eCO4fzzb++Ce8ydwMldrMlKlviV8uOqzYZb/bViir6/1Q6 eQRwJnati4CWEW46kTEHjHsvpikbIF+E8Nb096I4xlrACD0rK9X6pqRwzo6OxuTPZWIb srKCrQuua/fhHvY22zDi559S2jV41/jMg+Gh3OZkB2xK3TcnOIAAoQHv3MeA5NeCG6ak t4e7v1zI2K3o+W08Shk72j4kACcE/WyJi/Dn5yPg7eRQIKCLceypZBtmtF6yjyaxCrON i5Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688592569; x=1691184569; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=U/NqQdSK2u3VmCAGJ8pQGJmJkhstN17thahjUcysgUA=; b=LpGZn5/6pVIYlTcuAiTAViwzgXGjhQLkPxHuZ16gWrPY9qKUNfmgGruZvvJB9Qmx7e hj14Cu57Gjb0mITWZX99jJR7oO00dzjsf2LERp8xbaeIet1ucxurLsid7VEdATGV0RDm BjHbm2+XdJl1rQZWg97IChYVbODlPtlQ1NJyiSCRchadfspicRRxxsvzguEsFMTIbslI j+aEum2zWeNY3S3oDQRqVt0HRVB0Bl5g/BRmd3xzOi8HFUANs8TqXwdBqIc3Rcjq+dka q1FiwFWFj0p66p0KmUnfNxdG1i/nOGPudkD0MaEpy1708WK2YWaqt9teNoByVYx0q/f6 7BZg== X-Gm-Message-State: ABy/qLYPYtc1lZ4LsCzKXPFI7SsIxsIrZoxxIUu41w1XqRCHHMfmao+0 pn7jkD5UEL1lvU9u0BVOYv1SD5vwW4I= X-Google-Smtp-Source: APBJJlEpYhTHyxE1ArRDJClZgRIJYbz1Vv/HJhpBbFSgyQN2KbOegKiTlWXdAcsBcS9weJ00LlXB/Q== X-Received: by 2002:a17:902:9895:b0:1b6:89bf:4db7 with SMTP id s21-20020a170902989500b001b689bf4db7mr77191plp.69.1688592569465; Wed, 05 Jul 2023 14:29:29 -0700 (PDT) Received: from nathanxps13 ([50.47.162.83]) by smtp.gmail.com with ESMTPSA id p8-20020a170902b08800b001b8307c81c8sm13444159plr.121.2023.07.05.14.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jul 2023 14:29:28 -0700 (PDT) Date: Wed, 5 Jul 2023 14:29:27 -0700 From: Nathan Bossart To: Michael Paquier Cc: pgsql-hackers@postgresql.org Subject: Re: Should we remove db_user_namespace? Message-ID: <20230705212927.GA3518200@nathanxps13> References: <20230630200509.GA2830328@nathanxps13> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="CE+1k2dSO48ffgeK" Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --CE+1k2dSO48ffgeK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Jul 03, 2023 at 04:20:39PM +0900, Michael Paquier wrote: > I am on the side of +1'ing for the removal. Here is a rebased version of the patch. So far no one has responded to the pgsql-general thread [0], and no one here has argued for keeping this parameter. I'm planning to bump the pgsql-general thread next week to give folks one more opportunity to object. [0] https://postgr.es/m/20230630215608.GD2941194%40nathanxps13 -- Nathan Bossart Amazon Web Services: https://aws.amazon.com --CE+1k2dSO48ffgeK Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0001-remove-db_user_namespace.patch" From 3d46751ec7fa55d2ab776a9cb47533fe77ab0739 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Fri, 30 Jun 2023 12:46:08 -0700 Subject: [PATCH v3 1/1] remove db_user_namespace --- doc/src/sgml/client-auth.sgml | 5 -- doc/src/sgml/config.sgml | 52 ------------------- src/backend/libpq/auth.c | 5 -- src/backend/libpq/hba.c | 12 ----- src/backend/postmaster/postmaster.c | 19 ------- src/backend/utils/misc/guc_tables.c | 9 ---- src/backend/utils/misc/postgresql.conf.sample | 1 - src/include/libpq/pqcomm.h | 2 - 8 files changed, 105 deletions(-) diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index 204d09df67..6c95f0df1e 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -1253,11 +1253,6 @@ omicron bryanh guest1 attacks. - - The md5 method cannot be used with - the feature. - - To ease transition from the md5 method to the newer SCRAM method, if md5 is specified as a method diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 6262cb7bb2..e6cea8ddfc 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1188,58 +1188,6 @@ include_dir 'conf.d' - - - db_user_namespace (boolean) - - db_user_namespace configuration parameter - - - - - This parameter enables per-database user names. It is off by default. - This parameter can only be set in the postgresql.conf - file or on the server command line. - - - - If this is on, you should create users as username@dbname. - When username is passed by a connecting client, - @ and the database name are appended to the user - name and that database-specific user name is looked up by the - server. Note that when you create users with names containing - @ within the SQL environment, you will need to - quote the user name. - - - - With this parameter enabled, you can still create ordinary global - users. Simply append @ when specifying the user - name in the client, e.g., joe@. The @ - will be stripped off before the user name is looked up by the - server. - - - - db_user_namespace causes the client's and - server's user name representation to differ. - Authentication checks are always done with the server's user name - so authentication methods must be configured for the - server's user name, not the client's. Because - md5 uses the user name as salt on both the - client and server, md5 cannot be used with - db_user_namespace. - - - - - This feature is intended as a temporary measure until a - complete solution is found. At that time, this option will - be removed. - - - - diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index a98b934a8e..65d452f099 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -873,11 +873,6 @@ CheckMD5Auth(Port *port, char *shadow_pass, const char **logdetail) char *passwd; int result; - if (Db_user_namespace) - ereport(FATAL, - (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), - errmsg("MD5 authentication is not supported when \"db_user_namespace\" is enabled"))); - /* include the salt to use for computing the response */ if (!pg_strong_random(md5Salt, 4)) { diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index f89f138f3c..5d4ddbb04d 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -1741,19 +1741,7 @@ parse_hba_line(TokenizedAuthLine *tok_line, int elevel) else if (strcmp(token->string, "reject") == 0) parsedline->auth_method = uaReject; else if (strcmp(token->string, "md5") == 0) - { - if (Db_user_namespace) - { - ereport(elevel, - (errcode(ERRCODE_CONFIG_FILE_ERROR), - errmsg("MD5 authentication is not supported when \"db_user_namespace\" is enabled"), - errcontext("line %d of configuration file \"%s\"", - line_num, file_name))); - *err_msg = "MD5 authentication is not supported when \"db_user_namespace\" is enabled"; - return NULL; - } parsedline->auth_method = uaMD5; - } else if (strcmp(token->string, "scram-sha-256") == 0) parsedline->auth_method = uaSCRAM; else if (strcmp(token->string, "pam") == 0) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 0b1de9efb2..9c8ec779f9 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -236,7 +236,6 @@ int AuthenticationTimeout = 60; bool log_hostname; /* for ps display and logging */ bool Log_connections = false; -bool Db_user_namespace = false; bool enable_bonjour = false; char *bonjour_name; @@ -2272,24 +2271,6 @@ retry1: if (port->database_name == NULL || port->database_name[0] == '\0') port->database_name = pstrdup(port->user_name); - if (Db_user_namespace) - { - /* - * If user@, it is a global user, remove '@'. We only want to do this - * if there is an '@' at the end and no earlier in the user string or - * they may fake as a local user of another database attaching to this - * database. - */ - if (strchr(port->user_name, '@') == - port->user_name + strlen(port->user_name) - 1) - *strchr(port->user_name, '@') = '\0'; - else - { - /* Append '@' and dbname */ - port->user_name = psprintf("%s@%s", port->user_name, port->database_name); - } - } - if (am_walsender) MyBackendType = B_WAL_SENDER; else diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index f8ef87d26d..0c38af3f69 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -1534,15 +1534,6 @@ struct config_bool ConfigureNamesBool[] = false, NULL, NULL, NULL }, - { - {"db_user_namespace", PGC_SIGHUP, CONN_AUTH_AUTH, - gettext_noop("Enables per-database user names."), - NULL - }, - &Db_user_namespace, - false, - NULL, NULL, NULL - }, { {"default_transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT, gettext_noop("Sets the default read-only status of new transactions."), diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index e4c0269fa3..c768af9a73 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -96,7 +96,6 @@ #authentication_timeout = 1min # 1s-600s #password_encryption = scram-sha-256 # scram-sha-256 or md5 #scram_iterations = 4096 -#db_user_namespace = off # GSSAPI using Kerberos #krb_server_keyfile = 'FILE:${sysconfdir}/krb5.keytab' diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h index c85090259d..3da00f7983 100644 --- a/src/include/libpq/pqcomm.h +++ b/src/include/libpq/pqcomm.h @@ -103,8 +103,6 @@ typedef ProtocolVersion MsgType; typedef uint32 PacketLen; -extern PGDLLIMPORT bool Db_user_namespace; - /* * In protocol 3.0 and later, the startup packet length is not fixed, but * we set an arbitrary limit on it anyway. This is just to prevent simple -- 2.25.1 --CE+1k2dSO48ffgeK--