0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Ghi Nhớ Dữ Liệu Nhạy Cảm với PostgreSQL Anonymizer

Đăng vào 3 ngày trước

• 5 phút đọc

Ghi Nhớ Dữ Liệu Nhạy Cảm với PostgreSQL Anonymizer

Khi tôi đang gỡ lỗi một bản vá cho cổng thông tin việc làm của mình, tôi đã phát hiện ra rằng cách duy nhất để đảm bảo rằng nó hoạt động là chạy nó với dữ liệu giống như trong môi trường sản xuất. Tuy nhiên, vấn đề là cơ sở dữ liệu sản xuất của chúng tôi chứa đầy thông tin cá nhân nhạy cảm. Nếu bất kỳ thông tin nào rò rỉ vào nhật ký hoặc ảnh chụp màn hình, đó sẽ là một vấn đề nghiêm trọng.

Nhờ vào PostgreSQL Anonymizer, tôi đã có thể giải quyết vấn đề này một cách dễ dàng hơn rất nhiều.

PostgreSQL Anonymizer là gì?

PostgreSQL Anonymizer là một tiện ích mở rộng giúp che giấu hoặc thay thế thông tin nhận dạng cá nhân (PII) hoặc dữ liệu nhạy cảm thương mại trong cơ sở dữ liệu Postgres bằng cách sử dụng phương pháp ẩn danh theo định nghĩa.

Bạn chỉ cần đảm bảo rằng các quy tắc ẩn danh được thực hiện trực tiếp trong sơ đồ cơ sở dữ liệu.

Các Phương Pháp Ẩn Danh

  1. Anonymous Dumps: Xuất dữ liệu đã được che giấu vào tệp SQL.
  2. Static Masking: Loại bỏ PII theo các quy tắc đã định sẵn.
  3. Dynamic Masking: Ẩn PII chỉ cho những người dùng đã được che giấu.
  4. Masking Views: Xây dựng các view dành riêng cho người dùng đã được che giấu.
  5. Masking Data Wrappers: Áp dụng các quy tắc ẩn danh trên dữ liệu bên ngoài.

Bạn có thể đọc thêm về điều này trong tài liệu của PostgreSQL Anonymizer.

Hướng Dẫn Sử Dụng

Thiết Lập PostgreSQL Anonymizer

Để bắt đầu, hãy chạy PostgreSQL với câu lệnh sau. Trong ví dụ này, chúng ta sẽ sử dụng hình ảnh đơn giản để dễ dàng hơn. Nếu trong môi trường thực tế, bạn có thể theo dõi các bước trong tài liệu dựa trên cách bạn lưu trữ PostgreSQL.

bash Copy
docker run -d -e POSTGRES_PASSWORD=password -p 6543:5432 registry.gitlab.com/dalibo/postgresql_anonymizer

Tạo Bảng và Kích Hoạt Tiện Ích

Khi container đã hoạt động, hãy tạo một bảng và kích hoạt tiện ích mở rộng bằng cách sử dụng đoạn mã sau:

sql Copy
CREATE TABLE public.candidates (
    id BIGSERIAL PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    email VARCHAR(150) UNIQUE NOT NULL,
    phone_number VARCHAR(20),
    date_of_birth DATE,
    national_id VARCHAR(50),   
    address TEXT,
    city VARCHAR(100),
    state VARCHAR(100),
    postal_code VARCHAR(20),
    country VARCHAR(100),
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

Chèn Dữ Liệu Nhạy Cảm

Tiếp theo, chèn một số dữ liệu chứa PII:

sql Copy
INSERT INTO public.candidates 
(first_name, last_name, email, phone_number, date_of_birth, national_id, address, city, state, postal_code, country) 
VALUES
('Aisha', 'Rahman', 'aisha.rahman@example.com', '+60123456789', '1990-04-15', '900415-10-1234', '12 Jalan Bukit Bintang', 'Kuala Lumpur', 'Wilayah Persekutuan', '55100', 'Malaysia'),
('John', 'Tan', 'john.tan@example.com', '+6598765432', '1985-11-22', '851122-08-5678', '55 Orchard Road', 'Singapore', 'Singapore', '238880', 'Singapore');

Kích Hoạt Tiện Ích Anonymizer

Bây giờ, hãy đảm bảo rằng tiện ích đã được cài đặt và kích hoạt:

sql Copy
ALTER DATABASE postgres SET session_preload_libraries TO 'anon';
CREATE EXTENSION IF NOT EXISTS anon;
SELECT anon.init();
CREATE ROLE anonymize_user LOGIN PASSWORD 'password';
ALTER ROLE anonymize_user SET anon.transparent_dynamic_masking = True;
SECURITY LABEL FOR anon ON ROLE anonymize_user IS 'MASKED';

Thiết Lập Quy Tắc Ẩn Danh

Tiếp theo, bạn có thể thiết lập quy tắc cho việc ẩn danh. Dưới đây là một ví dụ:

sql Copy
SECURITY LABEL FOR anon ON COLUMN candidates.last_name IS 'MASKED WITH FUNCTION anon.dummy_last_name()';

Xuất Dữ Liệu Đã Ẩn Danh

Cuối cùng, hãy sử dụng pg_dump để xuất dữ liệu đã được che giấu.

bash Copy
pg_dump postgres --user anonymize_user --no-security-labels --exclude-extension="anon" --file=postgres_anonymized.sql

Sau khi thực hiện, bạn sẽ nhận được tệp dump với dữ liệu đã được che giấu theo quy tắc mà bạn đã thiết lập. Hãy thử nghiệm với tiện ích này, và tôi sẽ viết thêm về các cách sử dụng khác trong bài viết tiếp theo.

Thực Hành Tốt Nhất

  • Luôn thử nghiệm trong môi trường phát triển trước khi triển khai vào sản xuất.
  • Thực hiện sao lưu dữ liệu trước khi áp dụng bất kỳ thay đổi nào.
  • Giám sát các nhật ký để phát hiện các vấn đề tiềm ẩn.

Những Cạm Bẫy Phổ Biến

  • Không đảm bảo rằng các quy tắc ẩn danh đã được áp dụng đúng cách có thể dẫn đến rò rỉ dữ liệu.
  • Không kiểm tra dữ liệu đầu ra có thể làm bạn bỏ lỡ những thông tin nhạy cảm.

Mẹo Tối Ưu Hiệu Suất

  • Sử dụng các view để tối ưu hóa truy vấn cho người dùng đã được che giấu.
  • Đảm bảo rằng các quy tắc ẩn danh không làm chậm hiệu suất của cơ sở dữ liệu.

Giải Quyết Vấn Đề

  • Nếu bạn gặp khó khăn trong việc kích hoạt tiện ích, hãy kiểm tra lại quyền người dùng của bạn.
  • Đối với các lỗi trong quá trình xuất dữ liệu, hãy kiểm tra lại cấu hình và các quy tắc đã thiết lập.

Kết Luận

PostgreSQL Anonymizer là một công cụ tuyệt vời để bảo vệ dữ liệu nhạy cảm trong quá trình phát triển và gỡ lỗi. Hãy thử nghiệm với nó để trải nghiệm những lợi ích mà nó mang lại. Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại câu hỏi dưới bài viết này!

Câu Hỏi Thường Gặp

1. PostgreSQL Anonymizer có miễn phí không?
Có, PostgreSQL Anonymizer là một tiện ích mở rộng miễn phí.

2. Tôi có thể sử dụng nó cho mọi loại dữ liệu không?
Có, bạn có thể áp dụng nó cho bất kỳ loại dữ liệu nào trong cơ sở dữ liệu của bạn.

3. Có cần kiến thức lập trình để sử dụng không?
Một chút kiến thức về SQL sẽ hữu ích, nhưng không bắt buộc.

4. Tôi có thể tạo nhiều quy tắc ẩn danh không?
Có, bạn có thể tạo nhiều quy tắc khác nhau để phù hợp với nhu cầu của bạn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào