@@ -2,13 +2,16 @@ package cloudsql
22
33import (
44 "context"
5+ "fmt"
56
67 "cloud.google.com/go/cloudsqlconn"
78 "cloud.google.com/go/cloudsqlconn/postgres/pgxv4"
89 "github.com/hashicorp/vault/plugins/database/postgresql"
910 dbplugin "github.com/hashicorp/vault/sdk/database/dbplugin/v5"
1011 "github.com/hashicorp/vault/sdk/database/helper/connutil"
1112 "github.com/pkg/errors"
13+
14+ uuid "github.com/hashicorp/go-uuid"
1215)
1316
1417// CloudSQL implements Vault's Database interface
@@ -111,9 +114,14 @@ func newPostgresDatabase(dbType DBType, connProducer *connutil.SQLConnectionProd
111114 // attribute 'sslmode=disable' is required. even though the sslmode parameter is set to disable,
112115 // the Cloud SQL Auth proxy does provide an encrypted connection.
113116 // See: https://cloud.google.com/sql/docs/postgres/connect-admin-proxy#connect-to-proxy
114- cleanup , err := pgxv4 .RegisterDriver (dbType .String (), cloudsqlconn .WithIAMAuthN ())
117+ driverSuffix , err := uuid .GenerateUUID ()
118+ driverName := fmt .Sprintf ("postgres-%s" , driverSuffix )
119+ if err != nil {
120+ return nil , nil , nil , errors .Wrap (err , "failed to generate unique 'postgres' driver name." )
121+ }
122+ cleanup , err := pgxv4 .RegisterDriver (driverName , cloudsqlconn .WithIAMAuthN ())
115123 if err != nil {
116- return nil , nil , nil , errors .Wrap (err , "failed to register 'postgres' driver with 'cloud-sql-go-connector'" )
124+ return nil , nil , nil , errors .Wrapf (err , "failed to register 'postgres' driver with name %s." , driverName )
117125 }
118126
119127 // delegate to vault's original postgres backend
0 commit comments