Tập 23: của Akash Mukherjee tại Mountain View, CA (tháng 7 năm 2021)
Các tập trước
Khi chúng tôi xây dựng Chrome, nhiều thành phần đóng góp vào môi trường ảnh hưởng đến kết quả của cấu phần phần mềm. Từ hệ điều hành, các thư viện hỗ trợ đã cài đặt, các phần phụ thuộc của bên thứ ba, các công cụ đã cài đặt và môi trường thời gian chạy; mỗi phương pháp đều được xây dựng với nhiều mức độ bảo mật.
Trước đây, Google sử dụng uỷ quyền nhị phân, quy trình kiểm tra thực thi nội bộ trong thời gian chạy để giảm thiểu rủi ro nội bộ bằng cách đảm bảo rằng phần mềm sản xuất và cấu hình được triển khai tại Google đã được xem xét đúng cách và có nguồn gốc truy xuất được.
Bằng cách đảm bảo rằng không ai có thể xâm phạm bản dựng và chuỗi cung ứng cấu phần phần mềm được xây dựng trên LUCI mà không bị phát hiện, Google giảm rủi ro đối với phần mềm mà chúng tôi cung cấp cho người dùng.
Kể từ năm ngoái, đối với mỗi bản dựng, hệ thống sẽ tạo một bản dựng có thể xác minh tệp kê khai—JWT đã ký mô tả đầy đủ các nguồn được đưa vào bản dựng, hàm băm mật mã của các tệp nhị phân và cấu phần phần mềm được tạo cũng như tham số bản dựng đầy đủ. Tệp kê khai bản dựng này cho phép chúng tôi truy vết cấu phần phần mềm trở lại các nguồn, do đó làm cho quy trình xây dựng và kết quả của quy trình này có thể xác minh được.
Ngoài ra, tệp kê khai cũng cho phép chúng ta xác minh cấu phần phần mềm được tạo không bị sửa đổi vì mọi thay đổi sẽ làm mất hiệu lực chữ ký. Tổng cộng, điều này mang lại cho chúng tôi một chuỗi hành trình đối với các cấu phần phần mềm khi chúng chuyển đổi giữa các hệ thống đáng tin cậy.
Uỷ quyền nhị phân được triển khai dưới dạng hệ thống hai bước. Hệ thống tạo ra provenance có thông tin về thời gian xây dựng; việc thực thi chính sách xảy ra trước khi ký hoặc cài đặt phần mềm.
def CreateProvenance(self, build_manifest: Mapping[str, Any]):
"""Builder generates and signs provenance given build manifest. Signed JWT is placed
alongside built artifact."""
Đối với Chrome, trước khi ký các cấu phần phần mềm được tạo bằng cơ sở hạ tầng ký của Google, chính sách này được thực thi để đáp ứng các yêu cầu cụ thể về bảo mật tối thiểu của bản dựng.
def VerifyProvenance(self, artifact_hash: str, provenance: str):
"""Provenance is verified using a policy engine service before signing an artifact."""
Các yêu cầu được chia thành khoảng 4 lĩnh vực:
- Kiểm soát nguồn:bảo vệ dữ liệu được chuyển vào bản dựng.
- Bản dựng: bảo vệ quy trình chuyển đổi nguồn thành tệp nhị phân.
- Chứng thực: chứng thực chứa tệp kê khai bản dựng có thể xác minh.
- Chính sách: các quy tắc xác định xem một cấu phần phần mềm nhất định có đủ điều kiện trong một ngữ cảnh cụ thể hay không.
Triển khai hoạt động kiểm tra việc thực thi chính sách trong khuôn khổ các quy trình CI và CD cho Chrome và cơ sở hạ tầng đã cho phép chúng tôi xác minh rằng mã và cấu hình của bạn đáp ứng một số tiêu chuẩn tối thiểu về bảo mật. Đây là một chế độ kiểm soát quan trọng dùng để giới hạn khả năng của người dùng nội bộ có khả năng gây hại hoặc tài khoản nội bộ bị xâm phạm sửa đổi phần mềm mà chúng tôi phân phối cho người dùng.