Bài toán 'ai được xem cái gì': thêm phân quyền người dùng vào app bạn xây bằng AI

Hầu hết app xây bằng AI đều bắt đầu với một người dùng: bạn. Ngày bạn thêm người thứ hai, bạn sẽ cần phân quyền — và phần lớn mọi người làm sai chuyện này. Đây là cách tư duy về nó mà không cần trở thành chuyên gia bảo mật.

Khoảnh khắc app bạn xây bằng AI không còn chỉ dành riêng cho bạn cũng là khoảnh khắc phân quyền trở thành một vấn đề thật sự. Trước đó, mọi trang đều hiển thị mọi thứ. Mọi danh sách đều hiển thị mọi dòng. Mọi nút đều hoạt động với tất cả mọi người. Đó là một app dành cho một người nhưng giả vờ là dành cho nhiều người.

Rồi bạn thêm người đồng đội đầu tiên, hay khách hàng đầu tiên, hay người dùng thử đầu tiên — và họ nhìn thấy một thứ mà lẽ ra họ không nên thấy. Có thể là mức lương của người đồng nghiệp. Có thể là một bản nháp chưa sẵn sàng. Có thể là phần cài đặt quản trị, vô tình bị lộ ra.

Đây là bài toán “ai được xem cái gì”, và đó là sai lầm lớn nhất mà những người xây app không rành kỹ thuật mắc phải khi cho ra mắt một dự án làm bằng công cụ tạo app bằng AI. Tin tốt là: bạn không cần trở thành chuyên gia bảo mật để giải nó. Bạn chỉ cần một cách rõ ràng để trao đổi với công cụ AI về chuyện đó.

Vì sao app bạn xây bằng AI lúc đầu cho phép mọi thứ

Khi bạn mô tả một app cho một công cụ AI — “Tôi muốn một CRM để tôi thêm khách hàng và ghi chú” — công cụ tối ưu cho một điều: làm cho nó hoạt động được với người đang mô tả. App mặc định sẽ là “ai đã đăng nhập đều xem được mọi thứ”. Điều này ổn với một công cụ cá nhân. Nó là một thảm họa ngay khi có người dùng thứ hai xuất hiện.

Đây không phải là lỗi của công cụ tạo app bằng AI. Đó là kết quả tự nhiên của việc bạn không nói cho nó biết ai được phép xem cái gì. Công cụ không hề biết danh sách khách hàng của bạn là nhạy cảm, hay rằng “Ghi chú” có thể chứa những thứ bạn không muốn khách hàng nhìn thấy. Bạn phải nói ra.

Ba câu hỏi cần đặt ra trước khi thêm người dùng thứ hai

Trước khi mời bất kỳ ai, hãy tự hỏi ba điều. Ghi câu trả lời ra — bạn sẽ đưa chúng cho công cụ AI ở bước tiếp theo.

1. Có những vai trò nào?

Không phải con người — mà là các nhóm. Phần lớn app có từ hai đến bốn vai trò. Với một cổng dành cho freelancer: “Tôi” và “Khách hàng”. Với một công cụ nội bộ: “Quản trị viên”, “Quản lý”, “Thành viên nhóm”. Với một app cộng đồng: “Người kiểm duyệt”, “Thành viên”, “Khách”. Hãy cưỡng lại ham muốn vượt quá bốn vai trò khi còn sớm. Mỗi vai trò làm số quy tắc bạn phải theo dõi tăng gấp đôi.

2. Mỗi vai trò được xem những gì?

Hãy đi qua từng trang trong app, trong đầu. Với mỗi trang, hãy hỏi: liệu một Khách hàng có nên xem trang này hay không? Họ nên xem mọi dữ liệu trên đó, hay chỉ dữ liệu của riêng mình? Họ nên xem trang nhưng có một số trường bị ẩn đi?

Mẫu hình đơn giản nhất: chủ sở hữu xem mọi thứ; tất cả những người còn lại chỉ xem được những gì họ được cấp quyền truy cập một cách rõ ràng. Cách này dùng được cho 80% app mà không cần tùy chỉnh nhiều.

3. Mỗi vai trò được làm những gì?

Vẫn bài tập đó, nhưng cho các nút và hành động. Một Thành viên có được xóa một dự án không? Một Khách hàng có được sửa hồ sơ của mình nhưng không được sửa gói cước không? Một Quản lý có được mời người mới không? Hầu hết người xây app không rành kỹ thuật bỏ quên hẳn bước này và rốt cuộc có những app mà bất kỳ người dùng đã đăng nhập nào cũng có thể xóa sạch cả cơ sở dữ liệu chỉ bằng một cú nhấp nút.

Trao đổi với công cụ AI về phân quyền

Khi đã có câu trả lời, câu lệnh gửi cho công cụ AI gần như tự viết ra. Nó trông như thế này:

Cập nhật app này để hỗ trợ hai vai trò: Chủ sở hữu và Khách hàng.

Chủ sở hữu xem được tất cả khách hàng, tất cả dự án và tất cả hóa đơn. Chủ sở hữu có thể tạo, sửa và xóa bất cứ thứ gì.

Khách hàng chỉ xem được dự án của chính mình và hóa đơn của chính mình. Họ không xem được danh sách khách hàng, trang nhóm, hay trang cài đặt. Họ xem được dự án của mình nhưng không sửa được. Họ xem và thanh toán được hóa đơn của chính mình.

Khi một Khách hàng đăng nhập, hãy ẩn các liên kết điều hướng đến Cài đặt và Nhóm. Nếu một Khách hàng cố truy cập các trang đó bằng URL, hãy chuyển hướng họ về bảng điều khiển của họ.

Có ba điều quan trọng trong câu lệnh đó:

  • Hãy cụ thể theo từng trang và từng hành động. “Khách hàng xem được dự án của họ” là mơ hồ. “Khách hàng xem được nhưng không sửa được dự án của chính họ ở trang /projects” mới là thứ một công cụ AI thật sự có thể triển khai.
  • Nói rõ điều gì xảy ra với thanh điều hướng. Ẩn liên kết không giống với chặn trang. Bạn cần cả hai.
  • Bao quát cả tình huống tự gõ URL. Nếu không, một người dùng tò mò có thể dán /admin vào thanh địa chỉ trình duyệt và đi thẳng vào.

Bốn sai lầm tôi thấy mỗi tuần

Sau khi xem rất nhiều người xây app cho ra mắt app nhiều người dùng đầu tiên của họ, cùng những sai lầm đó cứ lặp lại:

Ẩn nút không phải là ẩn dữ liệu. Nếu bạn bảo công cụ AI “ẩn nút xóa với Khách hàng”, cái nút biến mất khỏi màn hình. Nhưng thao tác xóa nằm bên dưới vẫn hoạt động nếu ai đó tìm ra cách gọi nó. Cách sửa: bảo công cụ thêm “từ chối các yêu cầu xóa từ các tài khoản không phải Chủ sở hữu ở phía backend”. Nếu công cụ không biết “backend” nghĩa là gì trong app của bạn, hãy bảo nó “chặn hành động ở phía máy chủ, không chỉ ẩn nút”.

Một vai trò cho hai công việc. Người ta hay gộp “những người trả tiền” với “những người dùng app”. Một Khách hàng trả tiền cho bạn để làm việc và một Nhân viên-của-khách-hàng đang dùng bảng điều khiển mà bạn xây cho khách hàng đó không phải là cùng một vai trò. Nếu bạn trộn lẫn chúng, bạn sẽ dành cả tháng tới để chắp vá những quy tắc đặc thù lẻ tẻ. Hai vai trò. Luôn luôn.

Cho người dùng mời người dùng ngay từ ngày đầu. Thật cám dỗ khi muốn thêm ngay “Mời một đồng đội”. Đừng. Với 10 người dùng đầu tiên, hãy tự tay mời họ, từ một bảng quản trị mà chỉ mình bạn xem được. Tự mời (self-serve) là cả một loại quy tắc phân quyền riêng (ai được mời ai? người được mời nhận vai trò gì? họ có được mời người khác không?). Hãy chờ đến khi bạn thật sự cần nó.

Tin lời công cụ AI mà không kiểm tra. Các công cụ AI sẽ nói với bạn, đầy tự tin, rằng phân quyền đã được thiết lập. Có thể đúng. Có thể không. Hãy luôn kiểm thử bằng cách đăng nhập với tư cách một người không phải chủ sở hữu và thử làm những việc tệ: nhấp các nút xóa, dán các URL quản trị, sửa những trường mà lẽ ra bạn không được sửa. Nếu có bất cứ thứ gì hoạt động trong khi lẽ ra không nên, hãy bảo công cụ sửa nó một cách cụ thể.

Một bảng kiểm tra nhanh trước khi mời bất kỳ ai

Trước khi gửi lời mời đầu tiên đến người dùng thứ hai, hãy rà qua những điều này:

  • Tôi có thể đếm số vai trò trong app của mình trên một bàn tay.
  • Với mỗi vai trò, tôi biết những trang nào họ nên thấy và những trang nào không.
  • Tôi đã đăng nhập với tư cách một người không phải chủ sở hữu và xác nhận các trang không được phép đã bị ẩn.
  • Tôi đã thử dán một URL quản trị vào trình duyệt với tư cách người không phải chủ sở hữu và bị chặn.
  • Tôi đã thử nhấp các nút xóa hoặc sửa mà lẽ ra phải bị cấm và bị chặn.
  • Nếu có gì đó trục trặc, tôi có cách thu hồi quyền truy cập của một người dùng thật nhanh.

Nếu có gạch đầu dòng nào không đạt, đó chính là cuộc trao đổi tiếp theo với công cụ AI của bạn — trước khi bạn gửi lời mời, không phải sau.

Một thay đổi tư duy giúp ích

Xây phân quyền cho một app nhiều người dùng chủ yếu là về việc tưởng tượng bạn là một phiên bản hơi tọc mạch của người dùng cư xử tệ nhất của mình. Không ác ý — chỉ tò mò thôi. Họ sẽ nhấp linh tinh. Họ sẽ dán URL. Họ sẽ cố xem có gì trên trang “Cài đặt” mà họ tình cờ thấy trong ảnh chụp màn hình của bạn.

Công việc của bạn — và của công cụ AI của bạn — là đảm bảo rằng khi họ nhìn, câu trả lời luôn nhất quán: hoặc họ xem được vì đó là dữ liệu của họ, hoặc họ không xem được vì đó không phải dữ liệu của họ. Không có ngoại lệ rò rỉ. Không có trang quản trị vô tình bị lộ. Không có chuyện “tôi quên mất trang đó tồn tại”.

Phần lớn người xây app chẳng nghĩ đến phân quyền cho đến khi có chuyện xấu hổ nào đó xảy ra. Tin tốt: dành 20 phút suy nghĩ về vai trò trước khi cho ra mắt sẽ giúp bạn tiết kiệm 20 giờ đồng hồ sửa chữa về sau, cộng với cái email bạn chẳng muốn phải viết gửi cho vị khách hàng đã nhìn thấy thứ không nên thấy.


Đang xây một thứ gì đó có khía cạnh nhiều người dùng? Lần tới khi bạn ngồi xuống với công cụ tạo app bằng AI, hãy bắt đầu phiên làm việc bằng cách liệt kê thành tiếng các vai trò trong app của mình. Đó là thói quen năm phút dễ tạo nhất, và nó sẽ chặn được phần lớn những sai lầm tệ hại nhất trước khi chúng kịp xảy ra.