Câu hỏi của bạn dường như không đưa ra bất kỳ giả định nào về nền tảng / HĐH. Đó là lý do tại sao có thể có ý nghĩa để thêm một câu trả lời về cách thường được thực hiện / giải quyết trong môi trường máy tính lớn, trong đó các "kỹ sư" (như trong tiêu đề câu hỏi của bạn) thực sự là nhóm người có hàng chục (có thể hàng trăm) người bị liên lụy. Câu trả lời của tôi dựa trên việc sử dụng sản phẩm SCM nơi tôi quen thuộc nhất (không chắc có cần tiết lộ tên sản phẩm không).
1. Kiến trúc
Dưới đây là những điểm nổi bật về cách tôi trả lời câu hỏi của bạn:
- Tất cả các mã (và các tạo phẩm liên quan như tệp thực thi, v.v.) được lưu trữ trong các tệp, tất cả cùng nhau là cái mà chúng ta gọi là cấu trúc thư viện .
- Đối với mỗi môi trường trên mỗi hệ thống đích (có thể là từ xa), có một máy chủ ("tác vụ bắt đầu" trong máy tính lớn), đảm nhiệm việc cập nhật TẤT CẢ (lặp lại: TẤT CẢ) cho mọi thứ trong cấu trúc thư viện. Có một vài trường hợp ngoại lệ (như nhân viên bảo mật hoặc nhóm quản lý không gian), nhưng ngoài ra, không ai (lặp lại: không ai) có quyền áp dụng các bản cập nhật cho bất kỳ tệp nào trong cấu trúc thư viện đó. Nói cách khác: máy chủ có quyền cập nhật độc quyền cho toàn bộ cấu trúc thư viện . Chú ý: Người OPS sẽ đi bon bon nếu bạn bước vào để hạn chế quyền truy cập của họ (lúc đầu họ sẽ chống lại ...), vì vậy hãy đảm bảo bạn được quản lý cấp trên (CxO) bảo vệ để áp đặt các quy tắc truy cập đó ...
- Phần mềm thực tế thay đổi bao gồm một thành phần duy nhất (sửa mã nhỏ vào giữa đêm ...) hoặc cũng có thể là hàng trăm hoặc hàng ngàn nguồn, tệp thực thi hoặc bất kỳ tạo phẩm nào khác (trong cuối tuần phát hành). Để làm cho chúng có thể quản lý được, những thứ nên được di chuyển (nhiều hơn hoặc ít hơn) cùng một lúc, được gói cùng nhau trong cái được gọi là gói thay đổi phần mềm .
Với những điều đã nêu ở trên, bất kỳ loại cập nhật nào được máy chủ áp dụng cho cấu trúc thư viện, sẽ chỉ có thể được thực hiện thông qua một quy trình công việc được xác định rõ, mà chúng tôi gọi là vòng đời của gói thay đổi phần mềm (SDLC nếu bạn muốn). Để thực sự thực hiện các bước khác nhau trong quy trình công việc đó, đây là những gì cần có để thực hiện:
- Chỉ máy chủ sẽ thực hiện các bước cần thiết (và cấu hình sẵn).
- Máy chủ sẽ chỉ thực hiện một bước cụ thể (= cập nhật một cái gì đó trong cấu trúc thư viện), sau khi các phê duyệt cần thiết (từ con người) đã được tập hợp để thực hiện bước đó.
- Các phê duyệt chỉ có thể được đưa ra bởi những người dùng có vai trò cho phép họ (= quyền) đưa ra các phê duyệt đó.
2. Vai trò và quyền
Máy chủ sẽ đảm bảo rằng người dùng đang cố gắng thực hiện điều gì đó (như 'phê duyệt điều gì đó') sẽ chỉ có thể làm điều đó, nếu quyền của người dùng là phù hợp. Phần đó là dễ dàng. Nhưng bạn không muốn sử dụng hệ thống SCM để quản lý tất cả các quyền đó cho tất cả người dùng có liên quan, đó là những gì thuộc về hệ thống bảo mật của bạn (không phải hệ thống SCM!), Để bạn có thể điều chỉnh quy trình làm việc của mình (trong hệ thống SCM của bạn) để đi kiểm tra các quyền đó bất cứ khi nào thích hợp. Các bước dưới đây cung cấp thêm một số chi tiết về điều đó.
Bước 1: Định cấu hình quyền (trong hệ thống bảo mật)
Xác định các thực thể bảo mật trong hệ thống bảo mật của bạn, với các tên được xác định rõ cho các thực thể đó. Một vài mẫu (thêm nhiều mẫu tương tự để phù hợp với nhu cầu của riêng bạn):
PrmUnit
, được sử dụng để nhận được quyền yêu cầu Quảng cáo để nói Đơn vị kiểm tra.
PrmQA
, được sử dụng để nhận được quyền yêu cầu Quảng cáo để nói Qa -testing (giả sử đây là cấp độ thử nghiệm cao nhất).
PrdEnduser
, được sử dụng bởi người dùng cuối liên quan đến một số cấp độ thử nghiệm, để cho biết rằng họ hài lòng với kết quả được tạo ra bởi một loại thử nghiệm nào đó. Và vì điều đó, những người dùng cuối đồng ý với sự thay đổi tiến lên trong cấu trúc thư viện.
PrdRelmgnt
, được sử dụng bởi người quản lý phát hành để ủy quyền Kích hoạt trong sản xuất (= mức cuối cùng / cao nhất trong cấu trúc thư viện).
Xác định các nhóm người dùng trong hệ thống bảo mật của bạn. Một vài mẫu (thêm nhiều mẫu tương tự để phù hợp với nhu cầu của riêng bạn):
GrpDevs
, mà (nói) tương ứng với các nhà phát triển của bạn (có thể nhiều hơn chỉ 1).
GrpEnduser
, mà (nói) tương ứng với người dùng cuối của bạn (ít nhất là 1, tốt nhất là với nhiều người dùng tương tự hơn).
GrpRelMgnt
, mà (nói) tương ứng với các trình quản lý phát hành của bạn (ít nhất là 1, tốt nhất là thêm một vài người dùng).
Cấp quyền , cũng sử dụng hệ thống bảo mật của bạn, để cho phép truy cập vào các " thực thể bảo mật " được chọn cho " nhóm người dùng " đã chọn. Để tiếp tục ví dụ trên, đây là những gì có vẻ phù hợp (thích ứng để phù hợp với nhu cầu của riêng bạn):
- Nhóm
GrpDevs
được quyền truy cập vào (chỉ!) Thực thể bảo mật PrmUnit
.
- Nhóm
GrpEnduser
được quyền truy cập vào (chỉ!) Thực thể bảo mật PrdEnduser
.
- Nhóm
GrpRelMgnt
được quyền truy cập vào (cả!) Thực thể bảo mật PrmQA
và PrdRelmgnt
.
Bước 2: Định cấu hình quy trình làm việc (trong hệ thống SCM)
Sau khi các quyền được định cấu hình trong hệ thống bảo mật của bạn (như Bước 1), tất cả những gì còn lại phải làm trong hệ thống SCM của bạn là định cấu hình cách các bước khác nhau trong vòng đời khớp với các thực thể bảo mật có liên quan trong hệ thống bảo mật của bạn. Nghĩa là, chỉ những người dùng có quyền truy cập phù hợp vào thực thể bảo mật được yêu cầu, mới được phép yêu cầu máy chủ thực hiện bước tương ứng trong quy trình làm việc.
Dưới đây là một số ví dụ về cách bạn định cấu hình hệ thống SCM của mình để thực hiện một số phép thuật:
- Nếu người dùng có quyền truy cập
PrmUnit
, thì người dùng đó được phép yêu cầu Quảng cáo lên đơn vị . Rõ ràng, người dùng trong nhóm GrpDevs
là người dùng được ủy quyền cho việc này (lưu ý: không, ví dụ: người dùng trong nhóm GrpRelMgnt
).
- Nếu người dùng có quyền truy cập
PrmQA
, thì người dùng đó được phép yêu cầu Quảng cáo lên QA -testing. Rõ ràng, người dùng trong nhóm GrpRelMgnt
là người dùng được ủy quyền cho việc này (lưu ý: không, ví dụ: người dùng trong nhóm GrpDevs
hoặc theo nhóm GrpEnduser
).
- Nếu người dùng có quyền truy cập
PrdEnduser
, thì người dùng đó được phép cho phép thay đổi tiến lên trong cấu trúc thư viện (thường là điều kiện tiên quyết để người dùng trong nhóm GrpRelMgnt
thậm chí có thể xem xét thay đổi). Rõ ràng, người dùng trong nhóm GrpEnduser
là người dùng (duy nhất) được ủy quyền cho việc này.
- Nếu người dùng có quyền truy cập
PrdRelmgnt
, thì người dùng đó được phép ủy quyền Kích hoạt trong sản xuất (= mức cuối cùng / cao nhất trong cấu trúc thư viện).
3. Mong đợi những điều bất ngờ, và sẵn sàng cho nó
Trên đây chỉ là một bản kế hoạch chi tiết, hy vọng sẽ giúp hiểu được cuối cùng nó là máy chủ đảm nhiệm việc phân chia nhiệm vụ như thế nào ... miễn là bạn có CxO bảo vệ bạn áp đặt một số quy tắc truy cập mà không phải ai cũng thích.
Để hoàn thành bức tranh như được giải thích ở trên, máy chủ tạo ra một bản kiểm toán (ghi nhật ký) bất kỳ điều gì đang xảy ra trong hệ thống. Vì vậy, tại bất kỳ thời điểm nào, luôn có thể trả lời các câu hỏi như
Điều gì đã xảy ra khi nào và tại sao, và người dùng được ủy quyền nào thực sự chấp thuận nó ... trả trước?
Nhưng, có lẽ phần khó nhất là có sẵn các công cụ báo cáo đầy đủ (và biết cách sử dụng chúng). Ít nhất để (dễ dàng) đáp ứng các yêu cầu từ kiểm toán viên CNTT (câu hỏi của họ có thể rất khó khăn). Nhưng cũng để chỉ ra các bản ghi nhật ký có liên quan trong hệ thống SCM của bạn để trả lời tất cả các câu hỏi "Chuyện gì đã xảy ra" trong các tình huống khủng hoảng khi sản xuất (một phần) bị ngừng hoạt động.
Tái bút: Tôi để mọi người tự đánh giá nếu câu trả lời của tôi là có hoặc không tuân thủ DevOps.