etcdserver/security: use leveled log

This commit is contained in:
Xiang Li 2015-06-11 09:30:31 -07:00
parent 2f795e42d0
commit cf7cb2b8a9
2 changed files with 24 additions and 21 deletions

View File

@ -17,7 +17,6 @@ package security
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"log"
"path" "path"
"reflect" "reflect"
"sort" "sort"
@ -30,6 +29,7 @@ import (
"github.com/coreos/etcd/etcdserver" "github.com/coreos/etcd/etcdserver"
"github.com/coreos/etcd/etcdserver/etcdserverpb" "github.com/coreos/etcd/etcdserver/etcdserverpb"
"github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/pkg/types"
"github.com/coreos/pkg/capnslog"
) )
const ( const (
@ -43,6 +43,10 @@ const (
GuestRoleName = "guest" GuestRoleName = "guest"
) )
var (
plog = capnslog.NewPackageLogger("github.com/coreos/etcd/etcdserver", "security")
)
var rootRole = Role{ var rootRole = Role{
Role: RootRoleName, Role: RootRoleName,
Permissions: Permissions{ Permissions: Permissions{
@ -186,7 +190,7 @@ func (s *Store) CreateOrUpdateUser(user User) (out User, created bool, err error
func (s *Store) CreateUser(user User) (User, error) { func (s *Store) CreateUser(user User) (User, error) {
u, err := s.createUserInternal(user) u, err := s.createUserInternal(user)
if err == nil { if err == nil {
log.Printf("security: created user %s", user.User) plog.Noticef("created user %s", user.User)
} }
return u, err return u, err
} }
@ -225,7 +229,7 @@ func (s *Store) DeleteUser(name string) error {
} }
return err return err
} }
log.Printf("security: deleted user %s", name) plog.Noticef("deleted user %s", name)
return nil return nil
} }
@ -251,7 +255,7 @@ func (s *Store) UpdateUser(user User) (User, error) {
} }
_, err = s.updateResource("/users/"+user.User, newUser) _, err = s.updateResource("/users/"+user.User, newUser)
if err == nil { if err == nil {
log.Printf("security: updated user %s", user.User) plog.Noticef("updated user %s", user.User)
} }
return newUser, err return newUser, err
} }
@ -320,7 +324,7 @@ func (s *Store) CreateRole(role Role) error {
} }
} }
if err == nil { if err == nil {
log.Printf("security: created new role %s", role.Role) plog.Noticef("created new role %s", role.Role)
} }
return err return err
} }
@ -338,7 +342,7 @@ func (s *Store) DeleteRole(name string) error {
} }
} }
if err == nil { if err == nil {
log.Printf("security: deleted role %s", name) plog.Noticef("deleted role %s", name)
} }
return err return err
} }
@ -365,7 +369,7 @@ func (s *Store) UpdateRole(role Role) (Role, error) {
} }
_, err = s.updateResource("/roles/"+role.Role, newRole) _, err = s.updateResource("/roles/"+role.Role, newRole)
if err == nil { if err == nil {
log.Printf("security: updated role %s", role.Role) plog.Noticef("updated role %s", role.Role)
} }
return newRole, err return newRole, err
} }
@ -384,18 +388,18 @@ func (s *Store) EnableSecurity() error {
} }
_, err = s.GetRole(GuestRoleName) _, err = s.GetRole(GuestRoleName)
if err != nil { if err != nil {
log.Printf("security: no guest role access found, creating default") plog.Printf("no guest role access found, creating default")
err := s.CreateRole(guestRole) err := s.CreateRole(guestRole)
if err != nil { if err != nil {
log.Printf("security: error creating guest role. aborting security enable.") plog.Errorf("error creating guest role. aborting security enable.")
return err return err
} }
} }
err = s.enableSecurity() err = s.enableSecurity()
if err == nil { if err == nil {
log.Printf("security: enabled security") plog.Noticef("security: enabled security")
} else { } else {
log.Printf("error enabling security: %v", err) plog.Errorf("error enabling security (%v)", err)
} }
return err return err
} }
@ -406,9 +410,9 @@ func (s *Store) DisableSecurity() error {
} }
err := s.disableSecurity() err := s.disableSecurity()
if err == nil { if err == nil {
log.Printf("security: disabled security") plog.Noticef("security: disabled security")
} else { } else {
log.Printf("error disabling security: %v", err) plog.Errorf("error disabling security (%v)", err)
} }
return err return err
} }
@ -435,14 +439,14 @@ func (u User) Merge(n User) (User, error) {
currentRoles := types.NewUnsafeSet(u.Roles...) currentRoles := types.NewUnsafeSet(u.Roles...)
for _, g := range n.Grant { for _, g := range n.Grant {
if currentRoles.Contains(g) { if currentRoles.Contains(g) {
log.Printf("Granting duplicate role %s for user %s", g, n.User) plog.Noticef("granting duplicate role %s for user %s", g, n.User)
continue continue
} }
currentRoles.Add(g) currentRoles.Add(g)
} }
for _, r := range n.Revoke { for _, r := range n.Revoke {
if !currentRoles.Contains(r) { if !currentRoles.Contains(r) {
log.Printf("Revoking ungranted role %s for user %s", r, n.User) plog.Noticef("revoking ungranted role %s for user %s", r, n.User)
continue continue
} }
currentRoles.Remove(r) currentRoles.Remove(r)
@ -544,7 +548,7 @@ func (rw rwPermission) Revoke(n rwPermission) (rwPermission, error) {
currentRead := types.NewUnsafeSet(rw.Read...) currentRead := types.NewUnsafeSet(rw.Read...)
for _, r := range n.Read { for _, r := range n.Read {
if !currentRead.Contains(r) { if !currentRead.Contains(r) {
log.Printf("Revoking ungranted read permission %s", r) plog.Noticef("revoking ungranted read permission %s", r)
continue continue
} }
currentRead.Remove(r) currentRead.Remove(r)
@ -552,7 +556,7 @@ func (rw rwPermission) Revoke(n rwPermission) (rwPermission, error) {
currentWrite := types.NewUnsafeSet(rw.Write...) currentWrite := types.NewUnsafeSet(rw.Write...)
for _, w := range n.Write { for _, w := range n.Write {
if !currentWrite.Contains(w) { if !currentWrite.Contains(w) {
log.Printf("Revoking ungranted write permission %s", w) plog.Noticef("revoking ungranted write permission %s", w)
continue continue
} }
currentWrite.Remove(w) currentWrite.Remove(w)

View File

@ -16,7 +16,6 @@ package security
import ( import (
"encoding/json" "encoding/json"
"log"
"path" "path"
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
@ -46,7 +45,7 @@ func (s *Store) ensureSecurityDirectories() error {
continue continue
} }
} }
log.Println("security: Trying to create security directories in the store; failed:", err) plog.Errorf("failed to create security directories in the store (%v)", err)
return err return err
} }
} }
@ -93,14 +92,14 @@ func (s *Store) detectSecurity() bool {
return false return false
} }
} }
log.Println("security: Trying to detect security settings failed:", err) plog.Errorf("failed to detect security settings (%s)", err)
return false return false
} }
var u bool var u bool
err = json.Unmarshal([]byte(*value.Event.Node.Value), &u) err = json.Unmarshal([]byte(*value.Event.Node.Value), &u)
if err != nil { if err != nil {
log.Println("security: internal bookkeeping value for enabled isn't valid JSON") plog.Errorf("internal bookkeeping value for enabled isn't valid JSON (%v)", err)
return false return false
} }
return u return u