Use encrypted passwords while creating robot users

This commit is contained in:
Murat Kabilov 2017-03-24 10:02:17 +01:00
parent 48ba6adf8a
commit 3aaa05fb96
2 changed files with 12 additions and 3 deletions

View File

@ -8,10 +8,11 @@ import (
_ "github.com/lib/pq" _ "github.com/lib/pq"
"github.bus.zalan.do/acid/postgres-operator/pkg/spec" "github.bus.zalan.do/acid/postgres-operator/pkg/spec"
"github.bus.zalan.do/acid/postgres-operator/pkg/util"
"github.bus.zalan.do/acid/postgres-operator/pkg/util/constants" "github.bus.zalan.do/acid/postgres-operator/pkg/util/constants"
) )
var createUserSQL = `SET LOCAL synchronous_commit = 'local'; CREATE ROLE "%s" %s PASSWORD %s;` var createUserSQL = `SET LOCAL synchronous_commit = 'local'; CREATE ROLE "%s" %s %s;`
func (c *Cluster) pgConnectionString() string { func (c *Cluster) pgConnectionString() string {
hostname := fmt.Sprintf("%s.%s.svc.cluster.local", c.Metadata.Name, c.Metadata.Namespace) hostname := fmt.Sprintf("%s.%s.svc.cluster.local", c.Metadata.Name, c.Metadata.Namespace)
@ -68,9 +69,9 @@ func (c *Cluster) createPgUser(user spec.PgUser) (isHuman bool, err error) {
} }
userFlags := strings.Join(flags, " ") userFlags := strings.Join(flags, " ")
userPassword := fmt.Sprintf("'%s'", user.Password) userPassword := fmt.Sprintf("ENCRYPTED PASSWORD '%s'", util.PGUserPassword(user))
if user.Password == "" { if user.Password == "" {
userPassword = "NULL" userPassword = "PASSWORD NULL"
} }
query := fmt.Sprintf(createUserSQL, user.Name, userFlags, userPassword) query := fmt.Sprintf(createUserSQL, user.Name, userFlags, userPassword)

View File

@ -1,6 +1,8 @@
package util package util
import ( import (
"crypto/md5"
"encoding/hex"
"fmt" "fmt"
"math/rand" "math/rand"
"time" "time"
@ -52,3 +54,9 @@ func PodSpiloRole(pod *v1.Pod) string {
func ClusterDNSName(clusterName, teamName, hostedZone string) string { func ClusterDNSName(clusterName, teamName, hostedZone string) string {
return fmt.Sprintf("%s.%s.%s", clusterName, teamName, hostedZone) return fmt.Sprintf("%s.%s.%s", clusterName, teamName, hostedZone)
} }
func PGUserPassword(user spec.PgUser) string {
s := md5.Sum([]byte(user.Password + user.Name))
return "md5" + hex.EncodeToString(s[:])
}