Ứng dụng GitHub là gì?
Ở đây, chúng tôi thảo luận về Ứng dụng GitHub là gì, cách chúng hoạt động và cách bạn có thể sử dụng chúng để cải thiện quy trình làm việc của mình. Cho dù bạn đang áp dụng một giải pháp được xây dựng bởi người khác hay phát triển một giải pháp để đáp ứng nhu cầu chính xác của bạn, luôn có chỗ để cải thiện các quy trình của bạn.
Mở rộng nền tảng thông qua API GitHub
GitHub cung cấp một API mạnh mẽ cho phép các nhà phát triển làm bất cứ điều gì trên nền tảng này. API được hiển thị thông qua các điểm cuối REST, vì vậy bạn có thể dễ dàng tích hợp từ bất kỳ nền tảng hoặc ngôn ngữ lập trình nào. Tuy nhiên, quyền truy cập API không tự đứng. Các nhà phát triển muốn chia sẻ tính năng của họ với người khác vẫn cần đóng gói chúng dưới dạng ứng dụng và phát hành trước khi bất kỳ ai cũng có thể sử dụng chúng.
Có một số yếu tố cần cân nhắc khi chọn kết hợp ứng dụng OAuth hoặc Ứng dụng GitHub vào dòng công việc của bạn. Trong phần này, chúng tôi giới thiệu cho bạn Ứng dụng GitHub và Ứng dụng OAuth, sự khác biệt về cách sử dụng và quyền của chúng cũng như đăng ký sự kiện.
Khi tùy chỉnh quy trình làm việc GitHub, bạn có sẵn một số tính năng. Chẳng hạn như viết tập lệnh tùy chỉnh, tạo và ủy quyền Ứng dụng OAuth của riêng bạn hoặc cài đặt Ứng dụng GitHub có sẵn từ thị trường GitHub. Nói chung, bạn có thể sử dụng tập lệnh tốt nhất cho những tác vụ một lần. Đối với các hành động được chạy thường xuyên hơn, tự động hóa OAuth và Ứng dụng GitHub có thể giúp bạn và nhóm của bạn tiết kiệm thời gian, đồng thời duy trì mức độ bảo mật tối ưu trong quy trình làm việc của bạn. Có nhiều sự khác biệt ảnh hưởng đến cách bạn quyết định giữa việc sử dụng Ứng dụng GitHub hoặc Ứng dụng OAuth. Hiểu rõ những khác biệt này trước đó có thể làm giảm một số nhức đầu và làm lại trên đường, đồng thời giúp bạn tìm ra ứng dụng tốt nhất cho trường hợp sử dụng cụ thể trong dòng công việc của bạn.
Ở cuối phần này, bạn nên hiểu rõ về sự khác biệt giữa Ứng dụng GitHub và Ứng dụng OAuth, đồng thời biết cách chọn ứng dụng tốt nhất cho tình huống phù hợp.
Cấp quyền và quyền truy nhập
Một trong những cân nhắc quan trọng nhất đối với việc cho phép một ứng dụng truy cập vào kho GitHub là các quyền mà nó yêu cầu để hoạt động. Một số ứng dụng rất dễ tin cậy, nhưng những ứng dụng khác có thể bị nghi ngờ. Luôn đảm bảo rằng bạn cảm thấy thoải mái với các quyền mà bạn cấp cho một ứng dụng.
Ghi
Mỗi ứng dụng sử dụng một khóa API duy nhất để yêu cầu dữ liệu trong kho lưu trữ của bạn. Khi bạn cho phép truy nhập, đó là khóa mà bạn đang ủy quyền. Bạn có thể thu hồi quyền truy cập vào khoá của ứng dụng bất kỳ lúc nào từ cài đặt kho lưu trữ của mình.
Ứng dụng OAuth
Ứng dụng OAuth cung cấp cách truy nhập dữ liệu GitHub thay mặt người dùng. Bởi vì nó hoạt động thay mặt cho người dùng, điều quan trọng cần lưu ý là nó sử dụng giấy phép GitHub. Bạn có thể tạo và đăng ký Ứng dụng OAuth trong tài khoản cá nhân của mình hoặc ở cấp tổ chức nếu bạn có quyền truy nhập quản trị. Ứng dụng OAuth tích hợp với GitHub tiết lộ loại quyền truy cập vào tổ chức hoặc kho lưu trữ mà nó yêu cầu. Người cho phép dụng OAuth, cung cấp cho ứng dụng khả năng hoạt động như người dùng đã xác thực, chẳng hạn như đọc hoặc sửa đổi dữ liệu. Phương pháp này về cơ bản là một cách tự động để đọc, viết hoặc chỉnh sửa dữ liệu GitHub với tư cách người dùng. Cũng cần lưu ý rằng ủy quyền được giới hạn ở các tài nguyên mà người dùng có thể truy cập được. Tuy nhiên, Ứng dụng OAuth cũng có quyền truy cập vào tất cả các tài nguyên có sẵn cho người dùng.
Ghi
Mức truy nhập được giới hạn bởi phạm vi mã thông báo (người dùng, tổ chức, kho lưu trữ).
Đối với các tổ chức có giới hạn truy nhập Ứng dụng OAuth, Người quản trị có thể cấp phê duyệt để sử dụng ứng dụng. Với đăng ký Sự kiện, Ứng dụng OAuth sẽ phản hồi hoạt động như khi hoạt động diễn ra.
Ứng dụng GitHub
Ngược lại, các Ứng dụng GitHub được cài trong tài khoản cá nhân, tổ chức bạn sở hữu hoặc các kho lưu trữ cụ thể mà bạn có quyền truy nhập quản trị. Ứng dụng GitHub được cài đặt và tương tác với GitHub dưới dạng một dịch vụ, không phải người dùng riêng lẻ như với Ứng dụng OAuth. Một lợi ích của GitHub Apps là, không giống như các ứng dụng OAuth, GitHub Apps không sử dụng giấy phép GitHub.
Ứng dụng GitHub truy cập dữ liệu thay mặt cho chính ứng dụng thông qua Khóa riêng tư được sử dụng để ký Mã thông báo web JSON. Vì chúng được cài đặt trên các kho lưu trữ cụ thể, người dùng có thể chọn kho lưu trữ mà ứng dụng có thể truy cập, điều này giới hạn lượng dữ liệu mà ứng dụng có thể truy cập. Quyền xác định những tài nguyên mà Ứng dụng GitHub có thể truy cập thông qua API. Không giống như ứng dụng OAuth, Ứng dụng GitHub có quyền tùy chỉnh đối với dữ liệu kho, sự cố và yêu cầu kéo. Tùy chỉnh cho phép bạn cấp các quyền chi tiết hơn, giới hạn ứng dụng chỉ đọc và ghi trong kho lưu trữ mà bạn cho phép ứng dụng truy cập. Chỉ chủ sở hữu tổ chức mới có thể quản lý cài đặt Ứng dụng GitHub trong tổ chức.
Bạn có thể tìm và cài đặt ứng dụng GitHub từ GitHub Marketplace. Khi bạn đang tìm kiếm Ứng dụng GitHub, hãy nhớ rằng một số Ứng dụng có huy hiệu đã được xác minh. Huy hiệu đã xác minh cho biết những điều sau đây về ứng dụng và tổ chức sở hữu ứng dụng đó:
- Quyền sở hữu của tổ chức đối với miền của họ được xác minh.
- Bộ phận hỗ trợ GitHub xác nhận địa chỉ email cho tổ chức.
- Tổ chức yêu cầu xác thực hai yếu tố.
- Người quản trị có thể cấp quyền liên quan đến quản trị kho, kiểm tra, nội dung kho, triển khai và sự cố (Những thay đổi của người quản trị yêu cầu người dùng chấp nhận)
- Người quản trị có thể cấp cho người dùng ứng dụng quyền chặn người dùng khác, email, người theo dõi, Phím GPG, Phím Git SSH, gắn dấu sao, xem (Các thay đổi về người quản trị yêu cầu người dùng chấp nhận)
- Đăng ký Sự kiện: Tư vấn bảo mật, Bộ kiểm tra, Tạo, Triển khai, Fork, Label, Thành viên, Kiểm nhập, Cam kết chú thích, Xóa, Trạng thái triển khai, Mốc thời gian, Tư cách thành viên, Tổ chức ( Người quản trịđặt cấu hình trong giao diện người dùng Ứng dụng GH và có thể được thay đổi)
Chọn giữa Ứng dụng GitHub và Ứng dụng OAuth
Mặc dù Ứng dụng GitHub là một cách lý tưởng để tích hợp vào quy trình làm việc của bạn trong một số tình huống, nhưng các tổ chức lớn hơn có thể gặp khó khăn trong việc chuyển đổi từ việc sử dụng Ứng dụng OAuth truyền thống để tự động hóa. Ví dụ: hạn chế chính sách bảo mật cũng có thể giới hạn các tùy chọn của quản trị viên trong việc chọn sử dụng các công cụ này.
Ghi
Với tư cách là Quản trị viên hệ thống, bạn nên làm việc với các nhà phát triển của mình để tìm các tùy chọn phù hợp nhất cho tự động hóa bằng cách sử dụng các ứng dụng này trong khi vẫn tuân theo chính sách bảo mật của bạn.
Để xác định ứng dụng nào là giải pháp phù hợp cho tình huống của bạn, dưới đây là một số câu hỏi quan trọng cần xem xét:
- Tôi có muốn ứng dụng hoạt động như người dùng không?
- Giới hạn tốc độ cần phải là gì?
- Tôi muốn ứng dụng có những quyền truy nhập nào trong tổ chức và các kho lưu trữ?
- Ứng dụng này có tuân thủ chính sách bảo mật của chúng tôi không?
Dưới đây là một số đặc điểm và điểm khác biệt chính cần xem xét khi chọn giữa Ứng dụng GitHub hoặc Ứng dụng OAuth.
| Ứng dụng GitHub | Ứng dụng OAuth |
|---|---|
| Việc cài đặt ứng dụng GitHub cấp cho ứng dụng quyền truy cập vào kho lưu trữ đã chọn của người dùng hoặc tài khoản tổ chức. | Ủy quyền cho Ứng dụng OAuth cấp cho ứng dụng quyền truy nhập vào các tài nguyên trợ năng của người dùng; ví dụ: các kho lưu trữ mà họ có thể truy nhập. |
| Mã thông báo truy nhập cài đặt được giới hạn trong các kho đã xác định với các quyền được chọn bởi người tạo ra ứng dụng. | Mã thông báo truy nhập OAuth bị giới hạn thông qua phạm vi. |
| Mã thông báo cài đặt xác định ứng dụng là bot Ứng dụng GitHub. | Mã thông báo truy nhập xác định ứng dụng là người dùng đã cấp mã thông báo cho ứng dụng. |
| Ứng dụng GitHub sử dụng các quyền được nhắm mục tiêu cho phép họ chỉ yêu cầu quyền truy cập vào những gì họ cần. | Ứng dụng OAuth không thể sử dụng các quyền chi tiết. |
| Ứng dụng GitHub không tuân theo chính sách ứng dụng của tổ chức. Ứng dụng GitHub chỉ có quyền truy cập vào kho lưu trữ mà chủ sở hữu tổ chức cấp. | Nếu chính sách ứng dụng của tổ chức đang hoạt động, chỉ chủ sở hữu tổ chức mới có thể ủy quyền cài đặt Ứng dụng OAuth. Nếu được cài đặt, Ứng dụng OAuth sẽ có quyền truy nhập vào bất kỳ mã thông báo nào mà chủ sở hữu tổ chức có trong tổ chức được phê duyệt. |
| Tăng giới hạn tỷ lệ có thể được cấp ở cả mức Ứng dụng GitHub (ảnh hưởng đến tất cả các bản cài đặt) và ở cấp cài đặt riêng lẻ. | Tăng giới hạn tỷ lệ được cấp cho mỗi Ứng dụng OAuth. Mỗi mã thông báo được cấp cho Ứng dụng OAuth đó đều nhận được giới hạn tăng lên. |
| Ứng dụng GitHub có thể xác thực thay mặt người dùng, được gọi là yêu cầu người dùng đến máy chủ. Dòng để ủy quyền cũng giống như dòng ủy quyền Ứng dụng OAuth. Mã thông báo người dùng đến máy chủ có thể hết hạn và được gia hạn với một mã thông báo làm mới. | Dòng OAuth được ứng dụng OAuth sử dụng ủy quyền cho Một Ứng dụng OAuth thay mặt cho người dùng. Quy trình này giống như quy trình được sử dụng trong ủy quyền người dùng đến máy chủ của Ứng dụng GitHub. |
| Ứng dụng GitHub yêu cầu cho phép nội dung kho lưu trữ và sử dụng mã thông báo cài đặt của bạn để xác thực git dựa trên HTTP. | Ứng dụng OAuth yêu cầu write:public_key phạm vi và tạo khóa triển thông qua API. Sau đó, bạn có thể sử dụng phím đó để thực hiện các lệnh Git. |
Quyền và quyền truy nhập ứng dụng
Một trong những cân nhắc quan trọng nhất đối với việc cho phép một ứng dụng truy cập vào kho GitHub là các quyền mà nó yêu cầu để hoạt động. Một số ứng dụng rất dễ tin cậy, nhưng những ứng dụng khác có thể bị nghi ngờ. Luôn đảm bảo rằng bạn cảm thấy thoải mái với các quyền mà bạn cấp cho một ứng dụng.
Việc đưa ra quyết định sử dụng ứng dụng GitHub hoặc ứng dụng OAuth có thể phụ thuộc vào mức độ truy cập mà bạn muốn ứng dụng truy cập. Nói chung, bạn nên khuyến khích nhóm của mình sử dụng công cụ có phạm vi nhỏ nhất để hoàn thành nhiệm vụ. Ứng dụng OAuth có quyền truy nhập vào tất cả tài nguyên của người dùng hoặc chủ sở hữu tổ chức.
- Ứng dụng OAuth có thể giúp đọc hoặc ghi truy nhập vào dữ liệu GitHub của bạn
- Bạn có thể cấp cho Ứng dụng GitHub quyền truy cập vào một tài khoản mà không được cấp quyền truy cập vào một tài khoản khác
Bảo mật ứng dụng
Khi bạn tìm thấy một lỗ hổng trong ứng dụng của bạn, nó phải là một ưu tiên và trong chính sách bảo mật của bạn để thông báo cho người dùng của dự án của bạn. Nhanh chóng truyền đạt vấn đề bảo mật có thể có nghĩa là sự khác biệt giữa người dùng của bạn là có thể thu hồi mã thông báo bị xâm phạm hoặc có dữ liệu nhạy cảm được hiển thị. Mặc dù mã thông báo an toàn hơn nhiều so với mật khẩu, bảo mật vẫn có thể bị xâm phạm và điều quan trọng là tổ chức của bạn phải chuẩn bị.
Ngoài tệp tin README.md, chúng tôi khuyên bạn nên thêm một tệp SECURITY.md vào kho lưu trữ của bạn. Tệp SECURITY.md nổi bật thông tin liên quan đến bảo mật cho kho lưu trữ. Tệp phải bao gồm các liên hệ bảo mật, chính sách tổ chức của bạn và chi tiết phản hồi bạn dự định thực hiện khi phát hiện lỗ hổng.
Phản ứng với sự kiện
Ứng dụng GitHub được thiết kế để thụ động. Họ chờ đợi một cái gì đó xảy ra và sau đó phản ứng, thường là thông qua API GitHub. Khi chờ các sự kiện xảy ra trên GitHub, có hai cách tiếp cận: webhook và bỏ phiếu.
Ghi
Ứng dụng GitHub không bị giới hạn khi làm việc với dữ liệu GitHub. Bạn có thể dễ dàng chờ đợi các sự kiện xảy ra từ các nguồn khác hoặc thực hiện các hành động cập nhật các dịch vụ khác.
Sử dụng gitHub webhooks
Webhooks là cách tiếp cận được ưa thích để xử lý sự kiện. Khi có điều gì đó xảy ra trên GitHub trong phạm vi của webhook, một sự kiện sẽ được đưa ra ngay lập tức. Webhooks thông báo đẩy mà ứng dụng của bạn có thể nghe và xử lý trong thời gian thực. Bạn có thể đặt cấu hình webhook trong cài đặt kho lưu trữ của mình, bao gồm các loại sự kiện, xác thực và cách gửi thông báo HTTP.
Polling
Đôi khi webhooks không phải là một tùy chọn. Ứng dụng của bạn có thể cần phải tồn tại phía sau tường lửa của công ty trong đó GitHub không thể truy cập trực tiếp vào đó. Trong trường hợp đó, thay thế là bỏ phiếu cho dữ liệu bạn đang theo dõi bằng cách sử dụng API GitHub.
Chuyển tiếp Webhook
Một cách khác để bỏ phiếu cho các ứng dụng đằng sau tường lửa là sử dụng dịch vụ chuyển tiếp webhook, chẳng hạn như smee.io. Với cách tiếp cận này, dịch vụ công cộng đăng ký webhook của kho lưu trữ, sau đó chuyển tiếp dữ liệu đến một dịch vụ khách hàng chạy sau tường lửa. Dịch vụ máy khách đó sau đó sẽ đẩy thông báo tới ứng dụng đang chạy của bạn như thể chúng đến từ nguồn ban đầu.