Cách GitHub thiết lập quyền sở hữu bền vững cho mọi repository
GitHub đã giải quyết bài toán quản lý hơn 14.000 repository bằng cách áp dụng mô hình sở hữu bắt buộc thông qua custom properties, giúp tối ưu hóa quy trình bảo mật và dọn dẹp các dự án không còn sử...
Với hơn 14.000 repository trong hệ thống nội bộ, GitHub từng đối mặt với một thách thức lớn: phần lớn các repository không có thông tin sở hữu rõ ràng. Điều này gây khó khăn nghiêm trọng cho các hoạt động bảo mật, đặc biệt là trong quá trình xử lý secret scanning, nơi việc xác định đúng chủ sở hữu là yếu tố then chốt để khắc phục sự cố mà không gây gián đoạn hệ thống.
Table Of Content
Vấn đề về mô hình sở hữu cũ
Trước đây, GitHub dựa vào Service Catalog để theo dõi quyền sở hữu. Tuy nhiên, mô hình này có nhược điểm là quan hệ nhiều-một (nhiều dịch vụ có thể nằm trong một repository), khiến việc truy ngược từ repository về chủ sở hữu trở nên bất khả thi nếu repository đó không gắn liền với một dịch vụ cụ thể. Các dự án cá nhân, tài liệu hoặc công cụ nội bộ thường rơi vào tình trạng “vô chủ”, buộc đội ngũ kỹ thuật phải tìm kiếm thủ công qua lịch sử commit hoặc README.
Thiết lập mô hình sở hữu mới với Custom Properties
Để giải quyết triệt để, GitHub đã chuyển sang sử dụng tính năng custom properties với hai thuộc tính chính:
- ownership-type: Phân loại theo “Service Catalog”, “Hubber Handle” (nhân viên) hoặc “Team”.
- ownership-name: Trường văn bản có xác thực, đảm bảo thông tin chủ sở hữu là thực tế và hợp lệ trong tổ chức.
Cách tiếp cận này cho phép GitHub truy vấn dữ liệu trên toàn bộ tổ chức, đồng thời áp dụng các chính sách bảo mật linh hoạt dựa trên loại hình sở hữu.
Quy trình triển khai và bài học kinh nghiệm
GitHub đã sử dụng một ứng dụng tùy chỉnh chạy trên Kubernetes CronJob để thực thi quy trình này. Sau 30 ngày thông báo, các repository không có thông tin sở hữu sẽ bị lưu trữ (archive) thay vì xóa bỏ. Điều này giúp giảm thiểu rủi ro mất mát dữ liệu vì việc khôi phục có thể thực hiện dễ dàng.
Trong quá trình triển khai, đội ngũ đã rút ra hai bài học quan trọng:
- Cải thiện thông báo: Đảm bảo các issue cảnh báo được gửi trực tiếp đến quản trị viên repository thay vì chỉ nằm trong danh sách issue chung.
- Cơ chế an toàn (Guardrails): Thiết lập “low water mark” để ngăn chặn việc tự động lưu trữ hàng loạt nếu hệ thống phát hiện dữ liệu đầu vào có dấu hiệu bị lỗi hoặc thiếu hụt bất thường.
Kết quả đạt được
Chỉ trong 45 ngày, GitHub đã hoàn tất việc xác thực quyền sở hữu cho toàn bộ repository đang hoạt động, đồng thời lưu trữ khoảng 8.000 repository không còn giá trị sử dụng. Hiện nay, mọi repository mới tạo bắt buộc phải có thông tin sở hữu ngay từ đầu, giúp duy trì sự minh bạch và an toàn cho toàn bộ hệ sinh thái mã nguồn của công ty.
Nguồn tham khảo: GitHub Blog



No Comment! Be the first one.