@@ -66,6 +66,7 @@ def __init__(
6666 recursive : bool = False ,
6767 send_default_pii : bool = False ,
6868 pii_denylist : "Optional[List[str]]" = None ,
69+ remove_user_ip_address : bool = False ,
6970 ) -> None :
7071 """
7172 A scrubber that goes through the event payload and removes sensitive data configured through denylists.
@@ -74,6 +75,7 @@ def __init__(
7475 :param recursive: Whether to scrub the event payload recursively, default False.
7576 :param send_default_pii: Whether pii is sending is on, pii fields are not scrubbed.
7677 :param pii_denylist: The denylist to use for scrubbing when pii is not sent, defaults to DEFAULT_PII_DENYLIST.
78+ :param remove_user_ip_address: Whether to remove ``user.ip_address`` instead of replacing it with ``[Filtered]``.
7779 """
7880 self .denylist = DEFAULT_DENYLIST .copy () if denylist is None else denylist
7981
@@ -85,6 +87,7 @@ def __init__(
8587
8688 self .denylist = [x .lower () for x in self .denylist ]
8789 self .recursive = recursive
90+ self .remove_user_ip_address = remove_user_ip_address
8891
8992 def scrub_list (self , lst : object ) -> None :
9093 """
@@ -137,7 +140,14 @@ def scrub_extra(self, event: "Event") -> None:
137140 def scrub_user (self , event : "Event" ) -> None :
138141 with capture_internal_exceptions ():
139142 if "user" in event :
140- self .scrub_dict (event ["user" ])
143+ user = event ["user" ]
144+ if (
145+ self .remove_user_ip_address
146+ and isinstance (user , dict )
147+ and "ip_address" in self .denylist
148+ ):
149+ user .pop ("ip_address" , None )
150+ self .scrub_dict (user )
141151
142152 def scrub_breadcrumbs (self , event : "Event" ) -> None :
143153 with capture_internal_exceptions ():
0 commit comments