Quyền tối thiểu nghĩa là mỗi luồng tự động chỉ được chạm vào đúng phần dữ liệu và đúng loại thao tác nó cần để làm việc của mình, không hơn. Luồng chép đơn hàng vào bảng thì chỉ cần ghi vào một bảng; luồng gửi báo cáo cuối ngày chỉ cần đọc bảng đó và gửi một email tới một địa chỉ cố định. Không luồng nào cần toàn quyền hộp thư hay toàn bộ ổ lưu trữ.
Nguyên tắc này có từ lâu trong nghề quản trị hệ thống, nhưng với người dựng luồng bằng công cụ kéo thả, nó hay bị bỏ qua vì cách kết nối nhanh nhất thường là cách rộng nhất. Bài này chỉ cách đưa nguyên tắc vào việc thật: hỏi gì khi thiết kế, tách luồng thế nào, thu hẹp phạm vi bằng những thao tác ai cũng làm được, và kiểm lại một luồng đang chạy xem có thừa quyền không.
Vì sao luồng tự động cần quyền tối thiểu hơn cả con người
Một nhân viên có quyền xoá thư mục khách hàng vẫn hiếm khi xoá nhầm, vì họ nhìn thấy mình đang làm gì và có phản xạ dừng lại. Luồng tự động không có phản xạ đó. Nếu cấu hình sai một điều kiện lọc, nó có thể sửa hàng trăm dòng trong vài giây, lặp lại ở mỗi lần chạy, cho tới khi có người phát hiện.
Thêm vào đó, luồng có bước AI đọc nội dung từ bên ngoài như email khách, biểu mẫu công khai, tin nhắn trên trang bán hàng. Nội dung đó có thể chứa lời lẽ cố ý dẫn dắt AI làm việc khác, hiện tượng gọi là chèn lệnh ẩn. Nếu luồng chỉ có quyền ghi vào một bảng nháp, thì dù AI bị dẫn dắt, thiệt hại tối đa cũng chỉ là vài dòng nháp sai. Nếu luồng có quyền gửi thư từ hộp thư giám đốc, câu chuyện khác hẳn.
Cuối cùng là chuyện tài khoản bị chiếm. Khi kẻ gian lấy được tài khoản nền tảng tự động hoá, họ có trong tay mọi kết nối mà nền tảng đang giữ. Quyền mỗi kết nối càng hẹp, phần họ lấy được càng ít. Quyền tối thiểu vì thế không phải là chuyện cẩn thận cho có, mà là cách giới hạn thiệt hại khi mọi lớp khác đều đã thủng.
Bốn câu hỏi khi thiết kế quyền cho một luồng
Trước khi kéo thả bước đầu tiên, bạn trả lời bốn câu dưới đây trên giấy. Câu trả lời chính là bản mô tả quyền của luồng.
- Luồng đọc gì? Liệt kê cụ thể: một biểu mẫu, một bảng tính, một thư mục, một nhãn email. Tránh câu trả lời kiểu toàn bộ hộp thư.
- Luồng ghi hay sửa gì? Nhiều luồng chỉ cần thêm dòng mới, không cần sửa hay xoá dòng cũ. Nếu công cụ cho chọn thao tác thêm dòng thay vì cập nhật, chọn cái hẹp hơn.
- Luồng gửi ra ngoài cho ai? Gửi email cho một địa chỉ nội bộ cố định khác hẳn gửi cho địa chỉ lấy từ dữ liệu khách nhập. Loại sau cần thêm bước duyệt hoặc giới hạn.
- Luồng cần quyền này trong bao lâu? Luồng phục vụ đợt khuyến mãi hai tuần thì sau hai tuần tắt và thu hồi, không để chạy vô thời hạn.
Bốn câu này cũng giúp bạn phát hiện luồng đang làm quá nhiều việc. Khi câu trả lời cho câu thứ nhất và thứ hai dài cả đoạn, có lẽ nên tách thành hai luồng nhỏ, mỗi luồng một bộ quyền riêng.
Năm cách thu hẹp quyền không cần kỹ thuật
Chia sẻ đúng một thư mục hoặc một bảng. Thay vì kết nối cả ổ lưu trữ của bạn, tạo một thư mục riêng cho luồng và chỉ chia sẻ thư mục đó với tài khoản chạy luồng. Đây là cách hiệu quả nhất vì nó không phụ thuộc vào việc nền tảng có cho chọn phạm vi hẹp hay không.
Dùng quyền xem thay vì quyền sửa khi chia sẻ. Luồng chỉ đọc bảng giá để trả lời khách thì tài khoản chạy luồng chỉ cần quyền xem bảng đó. Nếu một ngày luồng cố ghi vào, nó sẽ báo lỗi, và lỗi đó là dấu hiệu tốt.
Tách hộp thư nhận và hộp thư gửi. Luồng đọc thư khách nên đọc từ một hộp thư tiếp nhận riêng, còn thư trả lời gửi qua một địa chỉ chung như hộp thư hỗ trợ. Không luồng nào cần chạm vào hộp thư cá nhân của chủ doanh nghiệp.
Đặt danh sách người nhận cố định. Bước gửi email hay tin nhắn nên có người nhận viết sẵn, không lấy địa chỉ từ dữ liệu đầu vào, trừ khi đó đúng là mục đích luồng. Với luồng trả lời khách, đặt bước người duyệt trước khi gửi.
Dùng chế độ nháp. Khi có bước AI soạn nội dung, cho luồng tạo thư nháp hoặc ghi vào cột nháp thay vì gửi thẳng. Quyền tạo nháp nhẹ hơn quyền gửi, và người duyệt có cơ hội chặn những câu AI viết sai.
Ví dụ giả định: cùng một luồng, hai cách cấp quyền
Luồng: khách điền biểu mẫu đăng ký học thử, thông tin vào bảng tính, AI tóm tắt nhu cầu, nhân viên tư vấn nhận tin báo. Bảng so sánh cách cấp nhanh với cách cấp theo quyền tối thiểu.
| Bước | Cách cấp nhanh | Cách cấp tối thiểu |
|---|---|---|
| Đọc biểu mẫu | Kết nối tài khoản chính, thấy mọi biểu mẫu | Tài khoản riêng của luồng, chỉ sở hữu biểu mẫu đăng ký |
| Ghi bảng tính | Quyền sửa toàn bộ ổ lưu trữ | Chỉ được chia sẻ quyền sửa một bảng đăng ký |
| Bước AI tóm tắt | Gửi nguyên dữ liệu gồm số điện thoại, ngày sinh | Chỉ gửi phần nhu cầu học, đã bỏ trường liên hệ |
| Báo nhân viên | Gửi email từ hộp thư giám đốc | Tin nhắn vào một kênh nhóm cố định, không cho phép nhắn ra ngoài |
| Thời hạn | Không đặt | Rà lại cuối khoá tuyển sinh, tắt nếu không dùng |
Cách cấp tối thiểu tốn thêm chừng nửa giờ lúc dựng. Đổi lại, nếu một ngày tài khoản nền tảng bị lộ, người lạ chỉ thấy được một bảng đăng ký học thử chứ không phải cả kho tài liệu của trung tâm.
Khi nền tảng không cho chọn phạm vi hẹp
Không phải công cụ nào cũng cho bạn chọn đúng một thư mục khi kết nối. Có nơi chỉ có một loại kết nối duy nhất với quyền rộng. Khi đó, thay vì thu hẹp quyền, bạn thu hẹp những gì nằm sau quyền: tài khoản dùng để kết nối chỉ chứa dữ liệu luồng cần. Đó là lý do tài khoản riêng cho luồng tự động gần như luôn là bước đầu tiên của quyền tối thiểu.
Cách thứ hai là chen một lớp trung gian. Ví dụ, thay vì cho nền tảng đọc thẳng hộp thư chính, bạn đặt quy tắc chuyển tiếp những thư có nhãn đơn hàng sang một hộp thư tiếp nhận riêng, và chỉ kết nối hộp thư đó. Quy tắc chuyển tiếp nằm trong tay bạn, quyền của luồng gói gọn trong hộp thư phụ.
Cách thứ ba là chấp nhận quyền rộng nhưng có điều kiện bù: bật xác thực hai lớp cho tài khoản nền tảng, giới hạn số người được sửa luồng, bật nhật ký và hẹn lịch rà soát dày hơn. Quyết định này nên được ghi lại, kèm lý do, để người sau không tưởng đó là cấu hình tiêu chuẩn.
Kiểm một luồng đang chạy xem có thừa quyền không
Với các luồng đã dựng từ trước, bạn làm lần lượt như sau. Mỗi luồng mất khoảng mười phút.
- Mở luồng, liệt kê mọi kết nối mà các bước đang dùng, kèm tài khoản đứng sau mỗi kết nối.
- Với mỗi kết nối, tra màn hình quyền trong mục ứng dụng đã kết nối của tài khoản đó để biết quyền thực sự là gì.
- So với bốn câu hỏi thiết kế: luồng có thực sự cần quyền xoá, quyền gửi, quyền trên toàn tài khoản không.
- Đánh dấu chỗ thừa và chọn cách sửa: tách tài khoản, chia sẻ hẹp lại, đổi bước gửi thành bước nháp.
- Sửa trên bản sao của luồng, chạy thử bằng dữ liệu giả, rồi mới thay bản cũ.
- Thu hồi kết nối rộng cũ sau khi bản mới chạy ổn ít nhất vài ngày, và cập nhật sổ kết nối.
Đừng xoá kết nối cũ trước khi bản mới chạy ổn. Luồng ngừng giữa chừng có thể làm sót đơn hay sót lịch hẹn, và khi đó người ta có xu hướng cấp lại quyền rộng cho nhanh.
Những nhầm lẫn thường gặp
Nhầm lẫn thứ nhất: luồng của mình nhỏ, không ai thèm tấn công. Kẻ gian hiếm khi nhắm riêng một tiệm nhỏ; họ thu thập tài khoản bị lộ hàng loạt rồi xem trong đó có gì. Một tài khoản nền tảng tự động hoá với mười kết nối rộng là món hời bất kể chủ là ai.
Nhầm lẫn thứ hai: quyền tối thiểu làm luồng hay lỗi. Thực tế nó làm luồng báo lỗi sớm khi có gì sai, thay vì lẳng lặng làm sai trên phạm vi rộng. Một luồng hay báo lỗi do thiếu quyền thường đang cho bạn biết thiết kế cần sửa.
Nhầm lẫn thứ ba: cấp rộng trước, siết sau. Trong thực tế, rất ít ai quay lại siết. Luồng chạy ổn thì không ai muốn đụng vào. Cách duy nhất có hiệu quả là cấp hẹp ngay từ đầu, và chỉ mở rộng khi có lý do được ghi lại.
Nhầm lẫn thứ tư: quyền tối thiểu chỉ là chuyện của tài khoản kết nối. Thật ra nó còn áp cho con người quanh luồng. Ai được sửa luồng, ai chỉ được xem lịch sử chạy, ai được thêm kết nối mới, đều là quyền. Trong một nhóm năm người, thường chỉ một hoặc hai người cần quyền sửa; những người còn lại chỉ cần nhận thông báo khi luồng lỗi. Nhiều nền tảng có phân vai cho thành viên trong không gian làm việc, bạn nên tận dụng thay vì cho mọi người cùng quyền quản trị.
Nhầm lẫn thứ năm: đã đặt quyền hẹp một lần là xong. Luồng thay đổi theo thời gian, người ta thêm bước, thêm kết nối, và mỗi lần thêm lại có nguy cơ cấp rộng cho nhanh. Vì vậy việc kiểm thừa quyền nên nằm trong lịch rà soát định kỳ, không phải việc làm một lần lúc dựng.
Câu hỏi thường gặp
Quyền tối thiểu có làm chậm việc dựng luồng không?
Có, thêm khoảng nửa giờ cho mỗi luồng lúc đầu, chủ yếu để tạo tài khoản riêng và thư mục chia sẻ. Từ luồng thứ hai trở đi, khi đã có sẵn tài khoản và cấu trúc thư mục, thời gian thêm gần như không đáng kể.
Luồng cần đọc nhiều bảng tính khác nhau thì làm sao giữ quyền hẹp?
Gom các bảng đó vào một thư mục riêng và chia sẻ thư mục cho tài khoản chạy luồng. Nếu các bảng thuộc nhiều bộ phận, cân nhắc tách thành nhiều luồng, mỗi luồng phục vụ một bộ phận với tài khoản và quyền riêng.
Tác tử AI cần làm nhiều việc thì áp quyền tối thiểu thế nào?
Nguyên lý vẫn vậy: liệt kê việc tác tử được làm, cấp đúng các quyền đó, và bắt tác tử hỏi người trước những việc không đảo ngược như gửi thư ra ngoài hay xoá dữ liệu. Cách giao việc cho tác tử có bài riêng trong danh mục tác tử AI của trang.
Có nên cho luồng quyền xoá dữ liệu không?
Rất ít luồng thật sự cần xoá. Thay vào đó, cho luồng đánh dấu dòng là đã xử lý hoặc chuyển tệp vào thư mục lưu trữ. Việc xoá thật để người làm định kỳ, sau khi đã xem lại. Nhờ vậy một luồng chạy sai không thể làm mất dữ liệu.
Làm sao biết một luồng đang dùng quyền gì nếu người dựng đã nghỉ?
Mở luồng trên nền tảng để xem các kết nối, rồi đăng nhập vào từng tài khoản đứng sau kết nối, vào mục ứng dụng đã kết nối để đọc quyền. Nếu không đăng nhập được tài khoản nào, đó là việc cần xử lý ngay theo quy trình bàn giao.
Quyền tối thiểu có thay được sao lưu dữ liệu không?
Không. Quyền hẹp giảm phạm vi thiệt hại, còn sao lưu giúp khôi phục khi thiệt hại đã xảy ra. Bảng tính mà luồng ghi vào hằng ngày vẫn nên có bản sao định kỳ, nhất là khi luồng có quyền sửa dòng cũ.