Rails의 기본 필터링은 견고하지만, Faraday와 같은 외부 HTTP 클라이언트를 사용할 때는 민감한 정보가 기본적으로 필터링되지 않아 api_key
나 사용자 객체의 민감한 속성이 로그에 노출될 수 있습니다. 이는 보안 취약점으로 이어질 수 있으며, Faraday 자체 필터링 API는 Rails 설정과 중복된 노력을 요구합니다.
이 문제를 해결하기 위해, Rails의 기존 필터링 설정을 재사용하는 커스텀 Faraday::Logging::Formatter
인 ApplicationFormatter
를 구현할 수 있습니다. 이 포맷터는 Rails.configuration.filter_parameters
와 ActiveSupport::ParameterFilter
를 활용하여 요청 URL의 쿼리 파라미터와 요청/응답 본문의 JSON 데이터를 파싱하고 민감한 정보를 필터링합니다. 이를 통해 외부 서비스와의 통신 시에도 api_key
나 사용자 데이터가 [FILTERED]
로 표시되어 일관된 보안 로깅 정책을 유지할 수 있습니다.
또한, 엄격한 보안 규정 준수가 필요한 애플리케이션의 경우, 기본 필터 목록 대신 id
, _id
, _at
, _on
과 같은 타임스탬프 및 ID 관련 파라미터를 제외한 모든 것을 필터링하는 허용 목록(Allow List) 방식을 고려할 수 있습니다. 이 방식은 더 공격적인 보안 정책을 구현하지만, commit
과 같은 일반적인 파라미터까지 필터링하여 디버깅 경험을 저해하거나 Faraday 로깅 시 전체 URL/데이터 해시가 필터링되어 로그의 유용성을 떨어뜨릴 수 있습니다. 따라서 팀의 보안 요구사항과 디버깅 편의성 사이의 균형을 신중하게 고려해야 합니다.