Traces, logs và dữ liệu nhạy cảm
Node lọc khoá bí mật, header, query, IP, SQL và mã hoá id người dùng trước khi lưu; những gì bạn không nên bật trong instrumentation.
Span và log có thể mang nhiều hơn bạn định gửi: một token trong URL, một header bị instrumentation chép vào, một email trong dòng log. Belvador lọc trên node của bạn trước khi lưu, nhưng dữ liệu an toàn nhất là dữ liệu app không bao giờ gửi đi.
Node lọc gì trước khi lưu#
Node chạy cùng bộ lọc như với lỗi (xem Quyền riêng tư) trên mọi resource, span, event, link và bản ghi log:
Bí mật theo tên — thuộc tính như
password,token,api_key,authorizationhaysecret, ở mọi độ sâu, thành[Filtered].Header HTTP — thuộc tính header (
http.request.header.*,http.response.header.*) bị bỏ trừ các header vô hại:content-type,content-length,content-encoding,accept,accept-encoding,accept-language,user-agent,cache-control,x-request-id,traceparent.URL — tên người dùng và mật khẩu bị gỡ khỏi
url.fullvà các thuộc tính tương tự, tham số query có tên nhạy cảm bị lọc;url.queryđược lọc theo cùng cách.Địa chỉ IP — địa chỉ client và peer bị che (phần cuối IPv4 về 0, IPv6 chỉ giữ 48 bit đầu); IPv4 công khai nằm trong nội dung log và văn bản khác cũng bị che như vậy, còn địa chỉ nội bộ và loopback được giữ nguyên.
ID người dùng —
user.idvàenduser.idđược thay bằng mã băm có muối, nên vẫn đếm và gom theo người dùng được.SQL — chuỗi và số trong
db.query.text(vàdb.statementkiểu cũ) thành?.Độ dài — giá trị quá dài bị cắt và kết thúc bằng
…[truncated]; giới hạn ghi rõ ở đâu.
Các nhóm này theo cài đặt Bảo vệ dữ liệu của project: nếu owner tắt một nhóm ở đó, loại giá trị đó được lưu đúng như khi gửi.
Đừng bật những thứ này#
Instrumentation OpenTelemetry mặc định thu rất ít. Hãy để các mục sau tắt, trừ khi có lý do và đã kiểm dữ liệu:
header của request và response (
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_*,OTEL_INSTRUMENTATION_HTTP_*_HEADERSvà tương tự),thân request và response,
giá trị tham số truy vấn cơ sở dữ liệu,
nội dung prompt và câu trả lời GenAI (
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENTvà tương tự),detector resource
processcủa Node.js, vốn chép nguyên dòng lệnh vào từng span — cách cài Node.js đã bỏ nó ra.
Dòng log#
Thân log là chữ tự do. Node lọc giá trị trông như bí mật trong thuộc tính có cấu trúc và các mẫu token đã biết, nhưng không thể biết một câu có chứa địa chỉ của khách hàng. Hãy ghi log mã định danh, không ghi dữ liệu cá nhân, và ưu tiên trường có cấu trúc (logger.info({ orderId }, "paid")) để quy tắc lọc nhìn thấy tên.
Dữ liệu nằm ở đâu#
Span và bản ghi log chỉ được lưu trên node của bạn và giữ theo thời gian bạn đặt (xem Lấy mẫu và chi phí). Edge của Belvador xử lý từng request khi đang truyền và, trong lúc node tắt, giữ nó ở dạng mã hoá bằng khoá của node; cơ sở dữ liệu của Belvador chỉ nhận metadata như tên dịch vụ, tên SDK và số lượng.
Bài viết về chủ đề này
Tất cả bài viếtThấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev