Phân tích AIDoc trong 15 phut

GitHub đặt tường lửa trước bước cài gói phần mềm

Bản xem trước tường lửa gói của GitHub đưa quyết định bảo mật tới lúc tác nhân hay lập trình viên lấy thư viện phụ thuộc. Giá trị tùy vào chính sách, phạm vi và quy trình ngoại lệ dùng được.

K
Ken Jo

Biểu trưng chữ GitHub dùng nhận diện công ty được bàn trong bài

Biểu trưng chữ GitHub qua Wikimedia Commons, được phân loại tại đó là PD-textlogo. Dùng nhận diện công ty; không phải ảnh tường lửa gói. Đổi kích thước đúng tỷ lệ với nền đệm trung tính; không ngụ ý chứng thực.

Tác nhân lập trình đề xuất lối tắt hữu ích: cài một gói, thêm vài dòng rồi chạy kiểm thử. Thay đổi nhìn thấy trong mã có thể nhỏ đến mức xem xong trong một phút. Tuy nhiên, thư viện phụ thuộc mang vào phiên làm việc một quyết định khác. Ai đó đang chọn hiện vật phần mềm bên ngoài sẽ vào môi trường lập trình hoặc bản dựng. Xem hàm vừa tạo không trả lời đầy đủ câu hỏi thứ hai ấy.

Ngày 20 tháng 10, GitHub giới thiệu tường lửa gói ở bản xem trước công khai cho khách Enterprise Cloud, gồm cả khách dùng lưu trú dữ liệu. Các điểm cuối được cấu hình đưa yêu cầu gói qua kiểm tra chính sách trước khi lấy từ kho nguồn. Hệ sinh thái ban đầu là npm. Đây là tính năng bảo mật thương mại đặc biệt liên quan phát triển có AI: khi tác nhân khiến việc thêm phụ thuộc dễ hơn, thời điểm cài đặt càng đáng dùng quy tắc chung. Thông báo GitHub.

Theo chúng tôi, đưa quyết định lên sớm có ích nếu ranh giới thực sự tồn tại và ngoại lệ xử lý được. Nên đánh giá tường lửa như lớp chính sách trong quy trình phát triển. Gói được cho qua không đồng nghĩa nội dung đã được chứng minh vô hại; bị chặn cũng không tự là phán quyết về người bảo trì.

Sản phẩm mới nằm trước quy trình GitHub quen thuộc

GitHub là nền tảng lưu mã và cộng tác, với pull request, luồng Actions tự động và công cụ bảo mật quanh phát triển. Tường lửa mới tập trung lúc máy làm việc, runner hay tác nhân hỏi lấy gói. Vị trí này khác với xem pull request hoặc đề xuất sửa mã đã có trong kho.

Khác biệt dễ bị bỏ qua giữa nhiều thông báo bảo mật. Tác nhân sửa mã giúp thay mã ứng dụng có lỗ hổng. Tường lửa gói áp chính sách cho yêu cầu phụ thuộc trước khi hiện vật tới điểm cuối đã cấu hình. Chúng giải quyết các phần khác nhau của cùng quy trình, nên thành công ở phần này không xóa lý do xem phần kia.

Với nhóm dùng tác nhân lập trình, điểm hấp dẫn thực tế là nhất quán. Lập trình viên có thể nhớ tổ chức tránh phụ thuộc mới trong thời gian ngắn. Phiên tác nhân mới có thể không mang thói quen đó. Quy tắc áp ngay trên đường yêu cầu không cần mỗi chỉ dẫn nhắc lại chính sách. Đây là đóng góp đáng chú ý nhất: biến ưu tiên tổ chức thành ràng buộc vận hành.

Yêu cầu phụ thuộc của tác nhân đi qua chính sách trước khi cài gói

Đồ họa biên tập tự thiết kế. Đây là đường yêu cầu theo khái niệm, không phải sơ đồ triển khai đầy đủ.

Bản xem trước kiểm tra gì và áp dụng ở đâu

Các kiểm soát công bố gồm tuổi tối thiểu của gói, kiểm tra mã độc hoặc lỗ hổng theo GitHub Advisory Database, và tín hiệu chuỗi cung ứng như suy giảm chứng thực. Cả yêu cầu siêu dữ liệu lẫn tải gói đều qua dịch vụ khi điểm cuối được cấu hình dùng nó. Luồng ngoại lệ xử lý yêu cầu cho gói bị chính sách chặn. Cách tường lửa hoạt động.

Tài liệu GitHub mô tả tuổi tối thiểu chỉnh từ không, tức tắt kiểm soát, tới 365 ngày; mặc định một ngày. Thời gian chờ cho thông tin mới cơ hội xuất hiện. Nó không biến gói thành hiện vật an toàn khi đồng hồ hết hạn. Tài liệu cũng giải thích yêu cầu bị chặn hiện thế nào trong đầu ra phát triển và cách người dùng xin ngoại lệ. Tài liệu bảo vệ điểm cuối.

Phạm vi cần được chú ý ngang danh sách kiểm tra. Bản xem trước không tự bảo vệ mọi phụ thuộc của mọi ứng dụng. Nó bắt đầu với npm, và điểm cuối phải đưa yêu cầu qua tường lửa. Nhóm có dịch vụ Python, ảnh container và ứng dụng JavaScript vẫn có nhiều đường hiện vật khác nhau. Ngay trong dự án JavaScript, câu hỏi hữu ích là yêu cầu thực tế nào đi đúng đường được kiểm soát.

Điều kiện thương mại cũng cụ thể. Dịch vụ miễn phí trong giai đoạn xem trước và dự kiến tính theo mức dùng khi phát hành rộng rãi. Vì vậy đây là cơ hội hiểu cách vận hành, không phải căn cứ cho rằng sẽ luôn không mất phí. Thử nghiệm đại diện nên gồm yêu cầu từ CI và tác nhân, không chỉ lần cài tay thỉnh thoảng của lập trình viên. Tình trạng cung cấp và giá.

Bản xem trước kết hợp kiểm tra chính sách, cấu hình điểm cuối rõ ràng và xét ngoại lệ

Đồ họa tự thiết kế tóm tắt phạm vi công bố. Hỗ trợ npm và điều kiện Enterprise Cloud mô tả bản xem trước này, không phải mọi phiên bản tương lai.

Vì sao tác nhân lập trình làm ranh giới này rõ hơn

Sức hút của tác nhân là đi từ ý tưởng đến thay đổi chạy được với ít lần dừng. Tìm thư viện, đổi cấu hình và chạy kiểm thử có thể thành cùng một cuộc trò chuyện. Sự tiện lợi nén nhiều quyết định thành một hành động bề ngoài: “triển khai tính năng”. Quyết định phụ thuộc có thể ít được xem chính vì tổng quá trình trông hiệu quả.

Hãy tưởng tượng nhiệm vụ minh họa thêm định dạng ngày nhỏ. Tác nhân đề xuất gói mới vì đó là đường nhanh nhất nó nhận ra. Xem mã vẫn phải hỏi dự án hiện đã giải quyết việc này chưa. Tường lửa không trả lời câu hỏi kiến trúc đó. Nó áp quy tắc riêng cho phiên bản được yêu cầu. Hai lần xem bổ sung nhau: một hỏi có nên thêm phụ thuộc, một hỏi yêu cầu này có khớp chính sách hiện tại.

Trường hợp thứ hai là nhánh bảo trì do tác nhân làm. Vài gói được nâng cấp, kiểm thử chạy xong và nhánh trông sẵn sàng. Nếu một bản quá mới theo chính sách, lập trình viên nên nhận lý do rõ và bước tiếp làm được. Chặn có ích nếu tạo ra quyết định chờ có cân nhắc hoặc ngoại lệ được ghi lại. Nó ít hữu ích nếu tác nhân xem thất bại là lời mời tìm đường cài không bị quản lý.

Vì vậy quy trình cần coi chặn chính sách là thông tin có ý nghĩa. Tác nhân nên báo gói bị chặn, nguyên nhân và việc chưa xong. Không nên âm thầm đổi sang phụ thuộc không liên quan chỉ để cài thành công. Kỳ vọng này thuộc quá trình phát triển xung quanh; không khẳng định tường lửa kiểm soát mọi lựa chọn tác nhân về sau.

Thời gian chờ mua thêm thời gian và có thể làm chậm bản sửa hữu ích

Kiểm soát tuổi tối thiểu diễn đạt đánh đổi thật bằng cách đơn giản. Chờ giúp hiện vật mới có thêm thời gian được xem xét. Nó cũng có thể trì hoãn bản sửa vấn đề nghiêm trọng. Khoảng chờ áp chung dễ giải thích, còn quy trình ngoại lệ tốt quyết định nhóm có phản ứng thông minh khi quy tắc thường không phù hợp không.

Xét nhóm bị hỏng bản dựng vì hồi quy ở phụ thuộc. Người bảo trì sớm phát hành bản sửa. Đó có thể đúng thứ nhóm cần nhưng vẫn trong cửa sổ chờ. Việc phải xét là bằng chứng dùng bản đó có đủ cho ngoại lệ trường hợp này không. Âm thầm bỏ quy tắc mọi nơi sẽ vứt luôn lợi ích với công việc không liên quan.

Chiều ngược lại cũng quan trọng. Gói qua quy tắc tuổi vẫn có thể chứa vấn đề chưa ai báo. Chờ là cách đổi mức phơi nhiễm, không thay việc hiểu phụ thuộc hoặc hạn chế môi trường được truy cập gì. Do đó cài thành công không nên chấm dứt suy xét về chuỗi cung ứng phần mềm.

Thời gian chờ, kiểm tra cảnh báo và ngoại lệ có các đánh đổi khác nhau

So sánh khái niệm do chúng tôi thiết kế. Không biểu diễn tỷ lệ phát hiện đã đo hay khẳng định gói được cho phép là an toàn.

Quy trình ngoại lệ có thể quyết định chính sách tồn tại được không

Quy tắc chờ cũng đổi theo thời gian theo cách bản khác biệt mã không đổi. Phiên bản bị chặn hôm nay có thể đủ điều kiện ngày mai mà tính năng không sửa gì. Ngược lại, thông tin mới có thể đổi kết quả chính sách cho bản nhóm đã dùng. Vì thế nên giữ phiên bản yêu cầu và lý do chặn cùng nhiệm vụ. Bản ghi giúp hiểu quyết định về sau. “Lần này cài được” chỉ là quan sát một lần thử; lựa chọn phụ thuộc đã xem xét giải thích nhóm định nhận gì và vì sao chấp nhận nó.

Quy tắc bảo mật thường thất bại về mặt xã hội trước kỹ thuật. Nếu chặn chỉ tạo lỗi khó hiểu và chờ lâu, mọi người học coi kiểm soát là trở ngại. Nếu thấy lý do và có người đúng ngữ cảnh xét ngoại lệ, cùng chặn ấy thành khoảng dừng hữu ích. Luồng yêu cầu của tính năng mới nên được đánh giá với trải nghiệm con người bình thường đó.

Ngoại lệ có ý nghĩa ghi gói, phiên bản, lý do cần, bằng chứng và phạm vi quyết định. Cần rõ phê duyệt dành cho một yêu cầu ngay lúc này hay thay đổi chính sách rộng hơn. Nếu không, ngoại lệ hợp lý dần thành lỗ hổng vĩnh viễn chẳng ai nhớ đã tạo.

Người xét cũng cần đường thực tế để quyết định. “Hãy phê duyệt” chưa đủ khi phụ thuộc xa lạ. Nhiệm vụ nên giải thích gói có thiết yếu không, bản này đổi gì và bản đã duyệt trước còn dùng được không. Đây là thực hành đề xuất quanh sản phẩm, không ngụ ý dịch vụ tự cấp toàn bộ ngữ cảnh ấy.

Với tác nhân, báo cáo ngoại lệ tốt là cơ hội hữu ích hơn. Thay vì lặp cài mãi, nó giữ phần đã làm và trình chính xác bước bị chặn. Quyết định của người nhỏ hơn và dễ xem xét. Lợi ích là liên tục: công việc tiếp tục sau quyết định mà không mất lý do đã dừng.

Nguồn gốc và kiểm soát script trả lời những câu hỏi khác nhau

Đặt tường lửa cạnh hai kiểm soát khác giúp đánh giá dễ hơn. Tài liệu provenance của npm mô tả liên kết xác minh được với mã nguồn và chỉ dẫn dựng gói, đồng thời cảnh báo provenance không bảo đảm không có mã độc. Giải thích chứng thực hiện vật của GitHub cũng mô tả nguồn gốc bản dựng có chữ ký, gồm kho, workflow và commit. Hồ sơ ấy giải thích hiện vật từ đâu; tường lửa áp chính sách xem phiên bản có được lấy qua điểm cuối của nó không.

Khác biệt này quan trọng khi có sự cố. Gói mới có thể có lịch sử dựng xác thực mà vẫn chứa thay đổi không mong muốn. Gói cũ có thể thiếu bằng chứng nhóm kỳ vọng từ người bảo trì. Thời gian chờ, cảnh báo và hồ sơ nguồn gốc mỗi thứ đóng góp quan sát khác nhau. Kết hợp chúng cải thiện căn cứ, nhưng một đèn xanh không quyết định mã phù hợp ứng dụng cụ thể.

Kiểm soátCâu hỏi giúp trả lờiĐiều vẫn nằm ngoài câu trả lời
Chính sách tường lửa góiPhiên bản này có qua quy tắc lấy gói đã cấu hình không?Mọi hành vi mã được cho qua có phù hợp không
Nguồn gốc bản dựng hoặc chứng thựcNguồn và quy trình dựng nào được ghi là tạo hiện vật?Nguồn ấy có ý định đáng tin cậy không
Hạn chế script cài đặtScript vòng đời có được chạy khi cài không?Mã ứng dụng nhập vào sẽ làm gì sau đó

Hàng thứ ba là cơ chế riêng. Tham chiếu cấu hình npm nói ignore-scripts bỏ các script trong manifest gói, còn lệnh gọi rõ script như npm test vẫn chạy mục tiêu của nó. Điều này giảm một loại thực thi lúc cài, nhưng cũng ảnh hưởng gói cần bước dựng hợp lệ. Đây là khả năng cần đánh giá với bộ phụ thuộc, không phải công tắc làm mọi gói vô hại.

Người bảo trì và lập trình viên trải nghiệm chính sách từ hai phía

Đằng sau cơ chế có góc nhìn tích cực của người bảo trì. Nhóm công bố bản dựng lặp lại được và thông tin phát hành hữu ích cho người dùng phía sau thêm bằng chứng. Chính sách chung có thể làm thực hành ấy có trọng lượng nhất quán trên nhiều lập trình viên, thay vì phụ thuộc từng người nhớ quy tắc không chính thức. Lợi ích là lấy gói dễ đoán hơn, nếu quy tắc và ngoại lệ vẫn rõ với người chịu ảnh hưởng.

Cùng chính sách lại khác với tác giả bản sửa gấp. Gói mới vài phút có thể sửa đúng vấn đề khách đang cần. Nếu chỉ tuổi làm nó bị chặn, nhóm ứng dụng cần cách xem thay đổi và giải thích ngoại lệ có chủ đích. Điều đó không phủ định thời gian chờ. Nó cho thấy chất lượng vận hành phụ thuộc khả năng đưa bản hợp lệ qua xét mà không khuyến khích bỏ đường kiểm soát lâu dài.

Đánh giá minh họa có thể theo một cập nhật thường và một sửa gấp trong cùng tổ chức. So bằng chứng người xét thấy, thời gian để lập trình viên hiểu quyết định và việc ngoại lệ được ghi. Gồm một phụ thuộc có bước cài hợp lệ để nhóm phân biệt chính sách lấy gói với thực thi script. Đây là nhiệm vụ đánh giá đề xuất, không phải kết quả chúng tôi dùng bản xem trước.

Cơ hội lớn hơn là ngôn ngữ chung cho quyết định phụ thuộc. Lập trình viên hỏi được bản quá mới, chịu thông tin đã biết hay thiếu nguồn gốc mong đợi, thay vì nhận từ chối khó hiểu. Người bảo trì thấy bằng chứng nào hữu ích. Tác nhân có trạng thái thất bại rõ để báo thay vì thử đường tải khác mãi. Vị trí GitHub trong quy trình có thể làm phối hợp này có giá trị, dù quy tắc cố ý thận trọng và phán đoán cuối vẫn thuộc tổ chức.

Gói được cho phép vẫn vào môi trường có hệ quả

Vị trí tường lửa trên đường tải đáng giá vì điểm cuối là nơi hiện vật được dùng. Nơi đó có thể có mã nguồn, thông tin xác thực hoặc quyền tới dịch vụ khác. Chính sách gói giảm một loại chưa chắc chắn, còn thiết kế môi trường hạn chế quyết định sai ảnh hưởng gì. Câu hỏi hữu ích là các kiểm soát phối hợp thế nào trong cấu hình phát triển thật.

Runner CI với thông tin xác thực phạm vi hẹp khác máy làm việc lâu dài giữ quyền nhiều dự án. Hộp cát tác nhân chỉ sửa bản sao dùng một lần khác môi trường tới được bí mật triển khai. Ví dụ giải thích vì sao không thể chỉ đánh giá theo tên các phép kiểm. Cùng phụ thuộc được cho phép có hệ quả rất khác giữa môi trường.

Nhóm cũng nên tách sự kiện chính sách khỏi lỗi phần mềm. Tải bị chặn, kho nguồn gián đoạn và gói cài được nhưng làm hỏng kiểm thử cần cách sửa khác. Nếu cả ba đều là “cài thất bại” với tác nhân, tự động hóa có thể chọn phục hồi sai. Báo rõ giúp con người quyết định chờ, xin ngoại lệ hay điều tra ứng dụng.

Bước tiếp theo là thử đại diện, không phải nhãn hoàn toàn an toàn

Thử nghiệm hữu ích sẽ theo máy làm việc, Actions workflow và môi trường tác nhân qua đường yêu cầu. Kiểm tra điểm cuối dự định có được bao phủ, chặn đại diện giải thích đủ và ngoại lệ duyệt có đúng phạm vi. Đây là tiêu chí đề xuất; chúng tôi chưa vận hành bản xem trước trong tài khoản doanh nghiệp sản xuất.

Thước đo kinh doanh nên gồm cả bảo vệ và ma sát. Đếm sự kiện dẫn tới xem xét hữu ích, thời gian gỡ chặn nhầm và chỗ yêu cầu thoát đường dự định. Ước chi phí tương lai từ hoạt động đại diện khi giá liên quan được công bố. Kiểm soát tạo quyết định xử lý được đúng lúc có thể bền hơn chính sách mạnh mà ai cũng học cách lách.

Tường lửa gói GitHub thú vị vì coi lấy gói là một phần thay đổi đang thực hiện. Trong phát triển có AI, bản khác biệt mã chỉ là phần nhìn thấy của việc tác nhân làm. Phụ thuộc yêu cầu và môi trường nhận nó đáng được chú ý riêng. Bản xem trước đưa sự chú ý ấy vào chính sách, trong khi nhóm vẫn chịu trách nhiệm định nghĩa lựa chọn phụ thuộc tốt.


Nguồn

Giữ lý do phía sau lựa chọn phụ thuộc

Nếu cần không gian riêng cho liên kết nguồn và ghi chú kỹ thuật đã xem xét, Telli.sh là một lựa chọn. Mở không gian ghi chú.


← Quay lai blog