Skip to content

Commit 84e8f94

Browse files
committed
Added audit logging for file put
1 parent d292467 commit 84e8f94

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

bucketio.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ type S3PutObjectWriter struct {
160160
ServerSideEncryption *ServerSideEncryptionConfig
161161
Log interface {
162162
DebugLogger
163+
InfoLogger
163164
ErrorLogger
164165
}
165166
MaxObjectSize int64
@@ -437,7 +438,7 @@ type S3ObjectStat struct {
437438
}
438439

439440
func (sos *S3ObjectStat) ListAt(result []os.FileInfo, o int64) (int, error) {
440-
F(sos.Debug, "S3ObjectStat.ListAt: len(result)=%d offset=%d", len(result), o)
441+
F(sos.Debug, "S3ObjectStat.: len(result)=%d offset=%d", len(result), o)
441442
_o, err := castInt64ToInt(o)
442443
if err != nil {
443444
return 0, err
@@ -541,8 +542,10 @@ type S3BucketIO struct {
541542
Now func() time.Time
542543
Log interface {
543544
ErrorLogger
545+
InfoLogger
544546
DebugLogger
545547
}
548+
UserInfo *UserInfo
546549
}
547550

548551
func buildKey(s3b *S3Bucket, path string) Path {
@@ -617,6 +620,7 @@ func (s3io *S3BucketIO) Filewrite(req *sftp.Request) (io.WriterAt, error) {
617620
Size: 0,
618621
LastModified: s3io.Now(),
619622
}
623+
F(s3io.Log.Info, "Upload file %s by user %s", key, s3io.UserInfo.User)
620624
F(s3io.Log.Debug, "S3PutObjectWriter.New(key=%s)", key)
621625
oow := &S3PutObjectWriter{
622626
Ctx: combineContext(s3io.Ctx, req.Context()),

server.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func asHandlers(handlers interface {
3636
return sftp.Handlers{handlers, handlers, handlers, handlers}
3737
}
3838

39-
func (s *Server) HandleChannel(ctx context.Context, bucket *S3Bucket, sshCh ssh.Channel, reqs <-chan *ssh.Request) {
39+
func (s *Server) HandleChannel(ctx context.Context, bucket *S3Bucket, sshCh ssh.Channel, reqs <-chan *ssh.Request, userInfo *UserInfo) {
4040
defer s.Log.Debug("HandleChannel ended")
4141
server := sftp.NewRequestServer(
4242
sshCh,
@@ -52,6 +52,7 @@ func (s *Server) HandleChannel(ctx context.Context, bucket *S3Bucket, sshCh ssh.
5252
Perms: bucket.Perms,
5353
ServerSideEncryption: &bucket.ServerSideEncryption,
5454
Now: s.Now,
55+
UserInfo: userInfo,
5556
},
5657
),
5758
)
@@ -106,6 +107,10 @@ func (s *Server) HandleClient(ctx context.Context, conn *net.TCPConn) error {
106107
F(s.Log.Info, "connection from client %s closed", conn.RemoteAddr().String())
107108
conn.Close()
108109
}()
110+
111+
var userInfo *UserInfo = new(UserInfo)
112+
userInfo.Addr = conn.RemoteAddr()
113+
109114
F(s.Log.Info, "connected from client %s", conn.RemoteAddr().String())
110115

111116
innerCtx, cancel := context.WithCancel(ctx)
@@ -122,6 +127,7 @@ func (s *Server) HandleClient(ctx context.Context, conn *net.TCPConn) error {
122127
return err
123128
}
124129

130+
userInfo.User = sconn.User()
125131
F(s.Log.Info, "user %s logged in", sconn.User())
126132
bucket, ok := s.UserToBucketMap[sconn.User()]
127133
if !ok {
@@ -160,7 +166,7 @@ func (s *Server) HandleClient(ctx context.Context, conn *net.TCPConn) error {
160166
wg.Add(1)
161167
go func() {
162168
defer wg.Done()
163-
s.HandleChannel(innerCtx, bucket, sshCh, reqs)
169+
s.HandleChannel(innerCtx, bucket, sshCh, reqs, userInfo)
164170
}()
165171
}
166172
}(chans)

user_info.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package main
2+
3+
import "net"
4+
5+
type UserInfo struct {
6+
Addr net.Addr
7+
User string
8+
}

0 commit comments

Comments
 (0)