6.1 Phân loại hành động theo hai trục
Mọi cơ chế kiểm soát ở phần sau của chương đều phụ thuộc vào việc phân loại hành động tốt. Chỉ cần hai câu hỏi:- Khả năng đảo ngược. Thay đổi có thể hoàn tác sạch sẽ không, và nhanh đến đâu?
- Phạm vi ảnh hưởng. Thay đổi có thể chạm tới bao nhiêu phần hạ tầng của bạn, và ở những tầng nào?
Dùng ma trận này làm chính sách khởi đầu: điền lớp hành động của riêng bạn vào từng ô trước khi kết nối agent với production.
Viết chính sách dưới dạng mã
Chính sách gắn ma trận với hạ tầng thực tế của bạn. Với mỗi lớp hành động, chính sách trả lời: agent nào, trong môi trường nào, trong khung thời gian thay đổi nào, với điều kiện tiên quyết nào và do ai phê duyệt. Giữ chính sách đó dưới dạng cấu hình có phiên bản, thay đổi qua pull request với người sở hữu được nêu tên. Diff chính sách là một quyết định về quyền tự chủ, nên hãy review nó như một thay đổi production. Dưới đây là bản phác thảo chung (không phải định dạng tệp của CloudThinker) cho một lớp hành động:6.2 Thiết kế phê duyệt mà người duyệt thực sự đọc
Phê duyệt là một hệ thống yếu tố con người, và hệ thống này hỏng theo một hướng đã biết: mệt mỏi, rồi duyệt cho qua. Khi điều đó xảy ra, cổng phê duyệt chỉ còn là hình thức, và audit trail ghi nhận sự đồng ý chưa bao giờ thực sự diễn ra. Một quy tắc kinh nghiệm hữu ích: khi mọi người chấp nhận nguyên vẹn hơn khoảng 95% một lớp, hãy cho lớp đó chạy không cần hỏi. Khi tỷ lệ chấp nhận dưới khoảng 70%, hãy sửa agent hoặc chính sách trước khi mở rộng bất cứ thứ gì. Chờ ít nhất 30 quyết định trên một lớp trước khi tin vào một trong hai con số, vì ba lần duyệt trên ba không chứng minh được gì. Tỷ lệ chấp nhận cao chỉ có nghĩa là “sẵn sàng” khi mọi người thực sự đọc yêu cầu. Tỷ lệ chấp nhận cao với thời gian review gần bằng không là mệt mỏi, không phải sẵn sàng (Chương 11, failure mode 7). Bốn thực hành giúp quy tắc kinh nghiệm này dùng được:6.3 An toàn thực thi giữa “đã duyệt” và “đã xong”
Đặt tiêu chuẩn cho thay đổi của agent cao hơn thay đổi trung bình của con người. Năm cơ chế giúp bạn đạt được điều đó:- Kiểm tra trước khi chạy. Kiểm tra lại điều kiện tiên quyết khi hành động chạy, không phải khi lên kế hoạch, vì mọi thứ thay đổi trong khoảng thời gian đó. Các khẳng định phạm vi như “ảnh hưởng tối đa 5 tài nguyên, không cái nào gắn tag critical” sẽ chặn lại khi không thỏa mãn (fail closed).
- Triển khai theo giai đoạn có kiểm tra giữa các giai đoạn. Thay đổi rộng được triển khai theo từng phần, với vòng lặp xác minh từ Chương 1 giữa các phần. Chuẩn bị sẵn rollback trước phần đầu tiên.
- Circuit breaker và giới hạn tốc độ. Agent lặp lại hành động đang lỗi, hoặc cả nhóm agent vượt trần tốc độ thay đổi, sẽ dừng lại và chuyển cấp. Retry có backoff dành cho lời gọi mạng, không dành cho thay đổi production.
- Rollback là một phần bàn giao. Mọi hành động quan trọng đều kèm rollback có thể thực thi, gắn vào ngay lúc lên kế hoạch và được kiểm thử khi có thể. “Chắc là đảo ngược được” không phải kế hoạch rollback.
- Kill switch. Một hành động dừng mọi thực thi tự động trong khi điều tra vẫn tiếp tục. Giao cho kill switch một người sở hữu, lịch diễn tập và một sự kiện audit. Thiết kế cơ chế này trước ngày bạn cần đến.
6.4 Bản ghi audit mà ai cũng có thể dựng lại
Thiết kế bản ghi audit để ba kiểu người đọc có thể dựng lại bất kỳ hành động nào: kỹ sư vào sáng hôm sau, kiểm toán viên vào cuối quý và cơ quan quản lý vào tuần tồi tệ nhất của bạn. Với mỗi hành động quan trọng, ghi lại:
Làm cho bản ghi bất biến và có thể xuất, và lưu giữ trong thời gian chính sách lưu trữ của bạn yêu cầu. Nếu làm tốt, vận hành bằng agent tạo ra bằng chứng thay đổi tốt hơn hầu hết quy trình của con người, như một sản phẩm phụ của chính công việc.
6.5 Ánh xạ sang CloudThinker
Trong CloudThinker, Approvals quyết định mọi thao tác ghi mà agent thực hiện qua một kết nối. Thao tác đọc luôn chạy. Mỗi thao tác ghi đi qua bốn bước kiểm tra theo thứ tự, và bước đầu tiên có câu trả lời sẽ quyết định, với một ngoại lệ: ở chế độ Manual, Rule Allow không quyết định, và thao tác ghi vẫn được chuyển cho một người. CloudThinker bật Rule enforcement cho từng workspace một, và cho đến khi đó chỉ riêng Approval mode quyết định.- Luôn bị chặn. Một danh sách có sẵn các lời gọi không bao giờ chạy, chẳng hạn dừng ghi log CloudTrail, đóng tài khoản AWS hoặc xóa namespace
kube-system. Không Rule, không người nào và không break-glass nào ghi đè được. Bạn không thể thêm vào danh sách này; để chặn thêm, hãy chấp nhận một Rule Deny với Never allow break-glass được bật, Rule này có hiệu lực khi enforcement đến workspace của bạn. - Rules. Mỗi Rule nêu một loại thao tác ghi, chẳng hạn
ec2:StopInstancestrên một tài khoản staging, và chỉ định Allow, Ask first hoặc Deny. Agent đề xuất Rule trong khi làm việc, và Rule được đề xuất không có tác dụng cho đến khi workspace admin chấp nhận. Khi bước Rules hiển thị In preview, ngay cả Rule đã chấp nhận cũng chỉ ghi lại quyết định lẽ ra Rule sẽ đưa ra, trong khi enforcement vẫn tắt. - Approval mode. Quyết định mọi thao tác ghi mà không Rule nào quyết định. Manual hỏi một người trước mọi thao tác ghi mà không Rule Deny hoặc Ask first nào quyết định, kể cả thao tác được một Rule Allow bao phủ. Auto có bốn lựa chọn, đặt tên theo các bước của chúng (xem bảng dưới). Workspace mới bắt đầu với Auto · Rules + AI · Ask me. Automation mặc định là Auto · Rules + AI · Refuse, vì có thể không có ai ở đó để trả lời.
- Approvers. Người phê duyệt mặc định hoặc một nhóm được nêu tên, quy tắc hai người tùy chọn, và break-glass, vốn tắt cho đến khi admin bật và cần lý do bằng văn bản mỗi lần dùng.
AI judgment cho phép một thao tác ghi khớp với yêu cầu của bạn và không vượt ra ngoài phạm vi đó. Thao tác ghi mang tính phá hủy, hoặc có tác động không rõ ràng, sẽ đi tới cột cuối. Để xem AI judgment đã quyết định gì, mở Approvals → Activity: dòng No Rule matched đếm các thao tác ghi do Approval mode quyết định, bao gồm AI judgment.
Mỗi ý tưởng trong chương này có một vị trí cụ thể:
Áp dụng trong workspace của bạn
Bất kỳ ai trong workspace đều xem được Approvals. Để chấp nhận Rule hoặc thay đổi chế độ và người phê duyệt, bạn cần vai trò workspace Admin (Owner và Admin của tổ chức có vai trò này trong mọi workspace).1
Mở Approvals
Mở Approvals trên thanh bên. Nếu không thấy, nhấn More và chọn Approvals. Trang mở ở tab Overview.Trạng thái thành công: bạn thấy những gì cần bạn xử lý và số lời gọi đã chạy, đã hỏi một người hoặc bị từ chối trong 7 ngày gần nhất.
2
Điền ma trận bằng Rules
Trên tab Rules, review các Rule mà agent đề xuất. Chưa có đề xuất? Nhấn Find rules. Quá trình kiểm tra mất 5 đến 10 phút, dùng credit và đề xuất Rule từ kết nối, phát hiện, sự cố, cảnh báo và lịch sử phê duyệt của bạn. Chấp nhận những Rule khớp với ma trận ở 6.1. Nếu không có đề xuất nào bạn muốn, nhấn Add from template hoặc viết Rule trong biểu mẫu (Rules).Trạng thái thành công: mỗi Rule đã chấp nhận hiển thị Allow, Ask first hoặc Deny, và không có gì thay đổi trước khi bạn chấp nhận.
3
Chọn Approval mode
Trên tab Approval mode, đặt Workspace mode. Auto · Rules + AI · Ask me phù hợp với hầu hết các nhóm. Với workspace production mà chỉ Rule đã chấp nhận mới được tự chạy thao tác ghi, chọn Auto · Rules · Ask me hoặc Manual. Trong Run types, nhấn Override để đặt chế độ riêng cho một loại run, chẳng hạn Automations.Trạng thái thành công: bộ chọn hiển thị lựa chọn của bạn, và mỗi dòng loại run hiển thị Same as workspace hoặc chế độ ghi đè.
4
Đặt người phê duyệt
Trên tab Approvers, nhấn Edit ở Default approvers và thêm những người sẽ trả lời phần lớn yêu cầu. Nhấn New group cho nhóm sở hữu một hệ thống, và nêu tên nhóm đó trong mỗi Rule Ask first cho hệ thống của họ; các Rule đó định tuyến yêu cầu khi enforcement bật. Bật quy tắc hai người cho production, để không ai tự duyệt thao tác ghi trong lượt chạy của chính mình. Để break-glass tắt cho đến khi bạn có quy trình khẩn cấp cho break-glass.Trạng thái thành công: thẻ Who approves trên Overview cho biết bạn có bao nhiêu người phê duyệt mặc định và quy tắc hai người có bật không.
5
Đưa chính sách vào quy trình review
Trên tab Rules, mở menu More Rule actions, nhấn Export active Rules và commit tệp YAML vào một repository có người sở hữu được nêu tên. Sau khi pull request được merge, mở cùng menu, nhấn Import policy và tải tệp đã merge. Import cho thấy những gì sẽ thay đổi trước khi áp dụng. Mặc định import theo kiểu gộp: Rule trong tệp được thêm hoặc cập nhật, và Rule không có trong tệp vẫn giữ nguyên trừ khi bạn chọn Remove Rules that are not in the file. Rule Allow được nhập sẽ chờ review trừ khi bạn bật Activate Allow Rules. Rule đã chấp nhận chỉ quyết định thao tác ghi khi CloudThinker bật Rule enforcement cho workspace của bạn; cho đến khi đó, đặt chế độ Manual cho các thao tác ghi phải chờ một người.Trạng thái thành công: workspace khớp với tệp đã review trong Git.
Git không khóa workspace. Admin vẫn có thể chấp nhận hoặc sửa Rule trong ứng dụng, và thay đổi đó bỏ qua pull request của bạn. Chỉ giao vai trò workspace Admin cho số ít người sở hữu chính sách, và xuất lại sau mọi thay đổi trong ứng dụng để Git luôn cập nhật.
Bước tiếp theo
Chương 7 · Đánh giá agent như hệ thống production
Xây dựng bộ kiểm thử từ chính sự cố của bạn và kiểm soát mọi thay đổi agent bằng bộ đó.
Thiết lập Approvals
Review các Rule được đề xuất, chọn Approval mode và chọn người phê duyệt.