diff --git a/internal/db/authorized_users.go b/internal/db/authorized_users.go
index 13a272f..50674af 100644
--- a/internal/db/authorized_users.go
+++ b/internal/db/authorized_users.go
@@ -20,7 +20,7 @@
 	return &u, nil
 }
 
-func AddAuthorizedUser(db *sql.DB, ctx context.Context, u *pb.KillSwitchAuthorizedUser) error {
+func AddAuthorizedUser(db *sql.DB, ctx context.Context, u *pb.KillSwitchAuthorizedUser, currentUser *pb.KillSwitchAuthorizedUser) error {
 	tx, err := db.BeginTx(ctx, nil)
 	if err != nil {
 		return err
@@ -41,6 +41,7 @@
 	u.Id = int32(id)
 
 	logEntry := &pb.KillSwitchAuditLogEntry{
+		User: currentUser,
 		Description: &pb.KillSwitchAuditLogEntry_AuthorizedUserAdded_{
 			&pb.KillSwitchAuditLogEntry_AuthorizedUserAdded{
 				User: u,
@@ -55,7 +56,7 @@
 	return tx.Commit()
 }
 
-func UpdateAuthorizedUser(db *sql.DB, ctx context.Context, id int32, newUser *pb.KillSwitchAuthorizedUser) error {
+func UpdateAuthorizedUser(db *sql.DB, ctx context.Context, id int32, newUser *pb.KillSwitchAuthorizedUser, currentUser *pb.KillSwitchAuthorizedUser) error {
 	oldUser, err := GetAuthorizedUserById(db, ctx, id)
 	if err != nil {
 		return err
@@ -77,6 +78,7 @@
 	newUser.Id = id
 
 	logEntry := &pb.KillSwitchAuditLogEntry{
+		User: currentUser,
 		Description: &pb.KillSwitchAuditLogEntry_AuthorizedUserUpdated_{
 			&pb.KillSwitchAuditLogEntry_AuthorizedUserUpdated{
 				Transformation: &pb.AuthorizedUserTransformation{
@@ -94,7 +96,7 @@
 	return tx.Commit()
 }
 
-func DeleteAuthorizedUser(db *sql.DB, ctx context.Context, id int32) error {
+func DeleteAuthorizedUser(db *sql.DB, ctx context.Context, id int32, currentUser *pb.KillSwitchAuthorizedUser) error {
 	u, err := GetAuthorizedUserById(db, ctx, id)
 	if err != nil {
 		return err
@@ -114,6 +116,7 @@
 	}
 
 	logEntry := &pb.KillSwitchAuditLogEntry{
+		User: currentUser,
 		Description: &pb.KillSwitchAuditLogEntry_AuthorizedUserDeleted_{
 			&pb.KillSwitchAuditLogEntry_AuthorizedUserDeleted{
 				OldUser: u,
diff --git a/internal/db/kill_switch.go b/internal/db/kill_switch.go
index 8b80286..3c85f2b 100644
--- a/internal/db/kill_switch.go
+++ b/internal/db/kill_switch.go
@@ -91,7 +91,7 @@
 	return killSwitches, nil
 }
 
-func EnableKillSwitch(db *sql.DB, ctx context.Context, k *pb.KillSwitch) error {
+func EnableKillSwitch(db *sql.DB, ctx context.Context, k *pb.KillSwitch, currentUser *pb.KillSwitchAuthorizedUser) error {
 	if k.MinVersion != "" && !isValidSemVersion(k.MinVersion) {
 		return fmt.Errorf("min_version is not a valid semantic version.")
 	}
@@ -148,6 +148,7 @@
 	}
 
 	logEntry := &pb.KillSwitchAuditLogEntry{
+		User: currentUser,
 		Description: &pb.KillSwitchAuditLogEntry_KillSwitchEnabled_{
 			&pb.KillSwitchAuditLogEntry_KillSwitchEnabled{
 				KillSwitch: k,
@@ -162,7 +163,7 @@
 	return tx.Commit()
 }
 
-func DisableKillSwitch(db *sql.DB, ctx context.Context, id int32) error {
+func DisableKillSwitch(db *sql.DB, ctx context.Context, id int32, currentUser *pb.KillSwitchAuthorizedUser) error {
 	oldKillSwitch, err := GetKillSwitchById(db, ctx, id)
 	if err != nil {
 		return err
@@ -188,6 +189,7 @@
 	}
 
 	logEntry := &pb.KillSwitchAuditLogEntry{
+		User: currentUser,
 		Description: &pb.KillSwitchAuditLogEntry_KillSwitchDisabled_{
 			&pb.KillSwitchAuditLogEntry_KillSwitchDisabled{
 				Transformation: &pb.KillSwitchTransformation{
