Vai trò và quyền hạn
Quyền hạn là quyền làm một loại việc, như đặt ngân sách hay đọc nhật ký kiểm tra. Vai trò gom các quyền hạn lại, và là cách duy nhất để ai đó có được quyền hạn.
Quyền hạnQuyền hạnCapabilityQuyền làm một loại việc, như đặt ngân sách hay đọc nhật ký kiểm toán. Vai trò là cách duy nhất để có quyền hạn.Mở trong Thuật ngữ là quyền làm một loại việc, như đặt ngân sách hay đọc nhật ký kiểm tra. Vai tròVai tròRoleGói các quyền hạn. Mỗi người có một vai trò có sẵn — Org Owner, Org Admin hoặc Org User — và nhóm có thể cấp thêm vai trò tùy chỉnh.Mở trong Thuật ngữ gom các quyền hạn lại, và vai trò là nguồn duy nhất cấp quyền hạn. Trang này trả lời câu hỏi người này được làm gì. Câu hỏi với những tài nguyên nào nằm ở Phạm vi hiển thị tài nguyên; được chi bao nhiêu nằm ở Ngân sách và chính sách.
Quy tắc chính
- Vai trò là nguồn quyền hạn duy nhất. Phòng ban, việc là thành viên nhóm và trạng thái giao diện không cấp quyền nào.
- Mỗi người có đúng một vai trò dựng sẵn: Org Owner, Org Admin hoặc Org User.
- Vai trò tùy chỉnh cộng thêm lên trên, giữ trực tiếp hoặc qua một nhómNhómGroupTập hợp người dùng để cấp vai trò và nêu tên trong quy tắc chia sẻ. Một người có thể thuộc nhiều nhóm; nhóm không bao giờ giữ tiền.Mở trong Thuật ngữ.
- Bốn quyền hạn chỉ thuộc vai trò dựng sẵn. Không vai trò tùy chỉnh nào giữ được.
- Mọi quyền hạn đều áp dụng toàn tổ chức. Không quyền nào gắn với một phòng ban.
| Quyền hạn | Org Owner có sẵn | Org Admin có sẵn | Org User có sẵn | Department Lead tùy chỉnh | Cost Analyst tùy chỉnh | Compliance Reviewer tùy chỉnh | Knowledge Curator tùy chỉnh | Agent Curator tùy chỉnh | Trong vai trò tùy chỉnh? giới hạn cấp quyền |
|---|---|---|---|---|---|---|---|---|---|
| Tổ chức | |||||||||
Thay đổi cài đặt tổ chức org.settings.manage | — | Chỉ vai trò có sẵn | |||||||
Quản lý thanh toán billing.manage | Chỉ Owner | — | Chỉ vai trò có sẵn | ||||||
| Con người | |||||||||
Quản lý người dùng user.manage | — | — | — | — | — | — | Có | ||
Xem portal dưới tư cách người khác user.impersonate | — | Chỉ vai trò có sẵn | |||||||
Duyệt yêu cầu xem dưới tư cách người khác impersonation.approve | — | Chỉ vai trò có sẵn | |||||||
Quản lý phòng ban department.manage | — | — | — | — | — | — | Có | ||
Quản lý nhóm group.manage | — | — | — | — | — | — | Có | ||
Quản lý vai trò role.manage | — | — | — | — | — | — | Có | ||
| Mô hình & chi phí | |||||||||
Quản lý danh mục mô hình và duyệt khoá model_catalog.manage | — | — | — | — | — | — | Có | ||
Thêm khoá nhà cung cấp riêng của phòng ban byok.manage | — | — | — | — | — | Có | |||
Đặt ngân sách và hạn mức policy.manage | — | — | — | — | — | — | Có | ||
Xem chi phí toàn tổ chức usage.view_org | — | — | — | — | — | Có | |||
Xem chi phí phòng ban của mình usage.view_department | — | — | — | — | — | Có | |||
| Tài nguyên | |||||||||
Đổi chia sẻ trên mọi tài nguyên visibility.manage | — | — | — | — | — | — | Có | ||
Quản lý agent agent.manage | — | — | — | — | — | Có | |||
Phát hành agent cho mọi người agent.publish_org | — | — | — | — | — | Có | |||
Quản lý skill skill.manage | — | — | — | — | — | Có | |||
Quản lý prompt prompt.manage | — | — | — | — | — | Có | |||
Quản lý artifact artifact.manage | — | — | — | — | — | — | Có | ||
Quản lý kho tri thức knowledge.manage | — | — | — | — | — | Có | |||
| Ứng dụng & công cụ | |||||||||
Quản lý công cụ tool.manage | — | — | — | — | — | — | Có | ||
Quản lý ứng dụng kết nối application.manage | — | — | — | — | — | — | Có | ||
| Giám sát | |||||||||
Đọc nhật ký kiểm toán audit.view | — | — | — | — | — | Có | |||
Xuất nhật ký kiểm toán audit.export | — | — | — | — | — | Có | |||
Đọc hội thoại làm bằng chứng transcript.read | — | — | — | — | — | Có | |||
Duyệt yêu cầu đọc hội thoại transcript.approve | — | — | — | — | — | — | Có | ||
| Không có quyền hạn nào khớp bộ lọc. | |||||||||
Nguồn của quyền hạn
Tập quyền hạn hiệu lực của bạn là hợp của ba nguồn:
- Vai trò dựng sẵn theo cấp trong tổ chức: Org Owner, Org Admin hoặc Org User.
- Các vai trò tùy chỉnh giữ trực tiếp. Một người có thể giữ nhiều vai trò.
- Các vai trò tùy chỉnh từ mọi nhóm bạn tham gia. Nhóm mang các gói quyền dùng lại được.
Một bộ phân giải duy nhất tính tập này cho mọi bên gọi. Không có bộ nhớ đệm giữa các yêu cầu và không có bản cài đặt thứ hai, nên mọi màn hình và mọi lần kiểm tra đều thấy cùng một đáp án.
Bộ phân giải giữ nguồn gốc của từng quyền. Nếu bạn có một quyền trực tiếp và qua hai nhóm, màn hình “vì sao người này có quyền này” của quản trị viên hiển thị đủ cả ba đường.
Cùng bộ phân giải này được dùng cho mọi lần đọc, ghi và sửa quy tắc chia sẻ của tài nguyên dùng chung, bản ghi từng bước của một lượt, bản chép hội thoại, nội dung tệp, và màn hình xem trước quyền hạn hiệu lực của quản trị viên.
Không có cấp vai trò theo nhóm làm việc — không có chủ nhóm hay quản trị nhóm. Org Admin quản lý phòng ban. Giao diện gọi vai trò Org Admin là Organisation admin, và trường phòng ban trên lời mời ghi rõ nó không mang lại quyền nào: phòng ban là ngân sách người đó được tính phí, còn vai trò là thẩm quyền trên toàn tổ chức.
Các vai trò được tạo sẵn
Khi tạo tổ chức, hệ thống tạo ba vai trò dựng sẵn và năm vai trò tùy chỉnh, cùng với phòng ban mặc định. Năm vai trò tùy chỉnh là vai trò bình thường: bạn có thể đổi tên, đổi phạm vi hoặc xóa, chúng chịu giới hạn cấp quyền, và không vai trò nào được gắn vào nhóm cho đến khi bạn gắn.
| Vai trò | Loại | Giữ | Cố ý loại trừ |
|---|---|---|---|
| Org Owner | dựng sẵn | mọi quyền hạn | — |
| Org Admin | dựng sẵn | mọi quyền hạn trừ billing.manage | billing.manage |
| Org User | dựng sẵn | cấp cơ bản, không có quyền quản trị | — |
| Department Lead | tùy chỉnh | usage.view_department, byok.manage | policy.manage, department.manage; quyền biên tập kho tri thức đến từ việc sở hữu kho đó |
| Cost Analyst | tùy chỉnh | usage.view_org | quyền xem cấp phòng ban, vốn không thu hẹp thêm gì |
| Compliance Reviewer | tùy chỉnh | audit.view, audit.export, transcript.read | mọi thứ cấu hình được, và transcript.approve, để người rà soát không tự phê duyệt điều người rà soát yêu cầu |
| Knowledge Curator | tùy chỉnh | knowledge.manage | visibility.manage, vốn chạm tới mọi loại tài nguyên |
| Agent Curator | tùy chỉnh | agent.manage, skill.manage, prompt.manage, agent.publish_org | artifact, vì đó là đầu ra chứ không phải cấu hình |
Org User là cấp cơ bản: trò chuyện, dùng những gì được chia sẻ, giữ bộ nhớ cá nhân, và thêm khóa nhà cung cấp của riêng mình trong Settings › Model keys (Cài đặt › Khóa mô hình). Việc cuối không cần quyền hạn nào, vì đó là khóa và tiền của chính bạn.
Toàn bộ 26 quyền hạn
Org Owner giữ cả 26. Org Admin giữ tất cả trừ billing.manage. Org User không giữ quyền nào. Quyền “chỉ dựng sẵn” không bao giờ được đưa vào vai trò tùy chỉnh.
| Mảng | Quyền hạn | Cho phép | Trong vai trò tùy chỉnh? |
|---|---|---|---|
| Tổ chức | org.settings.manage | Đổi cài đặt tổ chức | Chỉ dựng sẵn |
| Tổ chức | billing.manage | Quản lý thanh toán (chỉ Org Owner) | Chỉ dựng sẵn |
| Con người | user.manage | Quản lý người dùng | Có |
| Con người | user.impersonate | Xem portal dưới tư cách người khác | Chỉ dựng sẵn |
| Con người | impersonation.approve | Phê duyệt yêu cầu xem dưới tư cách người khác | Chỉ dựng sẵn |
| Con người | department.manage | Quản lý phòng ban | Có |
| Con người | group.manage | Quản lý nhóm | Có |
| Con người | role.manage | Quản lý vai trò | Có |
| Mô hình và chi tiêu | model_catalog.manage | Quản lý danh mục mô hình và duyệt khóa | Có |
| Mô hình và chi tiêu | byok.manage | Thêm khóa do phòng ban mình trả tiền | Có |
| Mô hình và chi tiêu | policy.manage | Đặt ngân sách và giới hạn | Có |
| Mô hình và chi tiêu | usage.view_org | Xem chi tiêu toàn tổ chức | Có |
| Mô hình và chi tiêu | usage.view_department | Xem chi tiêu phòng ban mình | Có |
| Tài nguyên | visibility.manage | Đổi chia sẻ của mọi tài nguyên | Có |
| Tài nguyên | agent.manage | Quản lý agent | Có |
| Tài nguyên | agent.publish_org | Công bố agent cho mọi người | Có |
| Tài nguyên | skill.manage | Quản lý skill | Có |
| Tài nguyên | prompt.manage | Quản lý prompt | Có |
| Tài nguyên | artifact.manage | Quản lý artifact | Có |
| Tài nguyên | knowledge.manage | Quản lý kho tri thức | Có |
| Ứng dụng và tool | tool.manage | Quản lý tool | Có |
| Ứng dụng và tool | application.manage | Quản lý ứng dụng kết nối | Có |
| Giám sát | audit.view | Đọc nhật ký kiểm tra | Có |
| Giám sát | audit.export | Xuất nhật ký kiểm tra | Có |
| Giám sát | transcript.read | Đọc hội thoại làm bằng chứng | Có |
| Giám sát | transcript.approve | Phê duyệt yêu cầu đọc hội thoại | Có |
transcript.read còn mở thẻ Conversations trong nhật ký kiểm tra, liệt kê mọi hội thoại trong tổ chức và cung cấp các tệp mỗi hội thoại tạo ra. Nếu tổ chức yêu cầu phê duyệt, quyền này chỉ cho người giữ xin: một hội thoại chỉ mở dưới một quyền truy cập đã được người giữ transcript.approve phê duyệt. Xem Phê duyệt truy cập.
Quyền gắn với phòng ban thu hẹp thế nào
Mọi quyền hạn đều áp dụng toàn tổ chức. Các lần kiểm tra tài nguyên kết hợp quyền với quyền sở hữu và phạm vi hiển thị của đối tượng trước khi chạy.
usage.view_departmentchỉ hiện phòng ban của bạn, vì phòng ban lấy từ bạn chứ không từ yêu cầu.byok.managethu hẹp tương tự: cho bạn dán khóa do phòng ban mình trả tiền, và lần kiểm tra so phòng ban của khóa với phòng ban của bạn. Dán khóa của riêng bạn không cần quyền nào.- Duyệt một khóa là
model_catalog.manage, hai cấp quản trị đều giữ và có thể cấp cho vai trò tùy chỉnh. policy.managevàdepartment.managelấy phòng ban từ yêu cầu và chỉ kiểm tra nó thuộc tổ chức của bạn. Một trưởng phòng giữ một trong hai có thể sửa ngân sách và chính sách mô hình của mọi phòng ban khác, nên việc đặt ngân sách cho một phòng ban không thể làm ở dưới cấp quản trị viên.- Biên tập kho tri thức của phòng ban không phải là quyền hạn. Quản trị viên chỉ định trưởng phòng làm chủ sở hữu kho, và quyền sở hữu cho phép ghi.
Giới hạn cấp quyền
Bốn quyền hạn không thể ủy quyền. Chúng chỉ nằm trên vai trò dựng sẵn, và việc cấp chúng cho vai trò tùy chỉnh bị từ chối.
| Quyền hạn | Ai giữ | Ủy quyền được? |
|---|---|---|
org.settings.manage | Org Owner, Org Admin | Không |
billing.manage | Org Owner | Không |
user.impersonate | Org Owner, Org Admin | Không |
impersonation.approve | Org Owner, Org Admin | Không |
Giới hạn thứ hai nằm ở khâu tạo: những gì người dựng agent được tham chiếu bị giới hạn bởi chính sách hiệu lực của họ, và phần vượt quá bị từ chối khi lưu. Xem Dựng một agent.
Đăng nhập thay
Quản trị viên giữ user.impersonate có thể dùng View as (xem dưới tư cách) một người cụ thể trong 30 phút để tái hiện những gì người đó thấy. Mọi quy tắc, ngân sách và quyền hạn khi đó là của người kia, không phải của quản trị viên. Việc này bị từ chối nếu người kia có quyền mà quản trị viên không có, và cả lúc bắt đầu lẫn kết thúc đều được ghi nhật ký. Quy tắc đầy đủ ở Phê duyệt truy cập › Đăng nhập thay.
Lời mời
| Quy tắc | Kết quả |
|---|---|
| Mời thành viên hoặc quản trị viên | Cho phép |
| Mời chủ sở hữu (owner) | Bị từ chối |
| Chỉ định phòng ban ngoài tổ chức | Không tìm thấy |
| Gửi hoặc gửi lại khi danh bạ do nhà cung cấp định danh quản lý | Bị từ chối (danh bạ bị khóa) |
| Rút lời mời đang mở | Cho phép ở cả hai chế độ danh bạ |
Không thể mời owner vì cấp đó mang billing.manage, quyền không thể ủy quyền. Owner đầu tiên là người tạo tổ chức; owner sau do ECV đặt trực tiếp. Phòng ban được chọn khi viết lời mời, không phải khi chấp nhận, nên tin nhắn đầu tiên của ai đó không rơi vào nhóm chi phí chưa phân bổ. Các chế độ danh bạ ở Phòng ban › Chế độ thư mục; luồng đăng nhập ở Danh tính.
Quy tắc mọi lần kiểm tra tuân theo
- Quy tắc chặn luôn thắng. Một quy tắc chặn là đủ, kể cả với owner. Xem Phạm vi hiển thị tài nguyên.
- Chuyển người giữa các cấp là việc riêng của owner, vì nâng ai lên owner là trao quyền thanh toán. Danh bạ người dùng theo cấp, không theo
user.manage. - Bạn đọc được quyền của chính mình. Hồ sơ tải sau khi đăng nhập mang tập quyền hiệu lực (không kèm nguồn gốc). Màn hình giải thích của quản trị viên dùng cùng bộ phân giải.
- Không có cửa sau. Danh tính được truyền tường minh vào mọi lần kiểm tra, nên agent và tác vụ nền chạy không có yêu cầu từ trình duyệt cũng không vượt được phân quyền.
- Một quy tắc, một chỗ. Mỗi quy tắc chỉ tồn tại một lần và trả lời hiệu quả câu “trang 3 của những gì người này thấy”; màn hình xem trước gọi bộ phân giải thật.
- Mặc định đóng. Người không xác định không thấy gì; tài khoản bị vô hiệu không thấy gì; tài nguyên không tồn tại là không hiển thị; thiếu chính sách thì từ chối chứ không mượn cấp trên.
- “Bị cấm” hay “không tìm thấy”. Bị cấm nghĩa là có tồn tại nhưng bạn không được phép; không tìm thấy nghĩa là bạn không có quyền biết. Tài nguyên không hiển thị với bạn luôn là “không tìm thấy”.
Vì sao lại như vậy
Vì sao Department Lead không tự đặt ngân sách phòng mình?
Đặt ngân sách là một quyền hạn toàn tổ chức. Trao nó cho trưởng phòng nghĩa là họ sửa được ngân sách và quyền dùng mô hình của mọi phòng ban, không chỉ phòng mình. Vì vậy ngân sách ở lại với quản trị viên, còn vai trò trưởng phòng xem chi tiêu phòng mình và thêm được khóa do phòng mình trả tiền.
Vì sao bốn quyền hạn không bao giờ được ủy quyền?
Mỗi quyền điều khiển chính portal chứ không phải công việc bên trong: cài đặt tổ chức, thanh toán, hành động dưới tư cách người khác, và phê duyệt việc đó. Một vai trò tùy chỉnh giữ một trong số đó có thể sửa giới hạn của mọi vai trò khác, nên chúng ở lại với Org Owner và Org Admin — riêng thanh toán chỉ với Org Owner.
Vì sao vào một phòng ban không mang lại quyền hạn nào?
Phòng ban quyết định ai trả tiền, không quyết định bạn được làm gì. Giữ quyền hạn chỉ trên vai trò nghĩa là chuyển ai đó sang ngân sách khác không bao giờ thay đổi việc họ được làm.
Bên dưới
Khai báo route
@RequireCapability chặn theo một quyền cố định. Khai báo ở cấp class phủ mọi route của controller; decorator riêng của handler thay thế class chứ không cộng thêm; giữ bất kỳ mục nào trong danh sách là mở được route. Một bài test duyệt toàn bộ danh sách quyền và báo lỗi nếu có quyền không được tệp nguồn nào kiểm tra.
@RequireAccess(resource, mode) phân giải tham chiếu phạm vi hiển thị của đối tượng và kiểm tra quyền đọc hoặc ghi trước khi use case chạy:
@Patch(":id")
@RequireAccess("AGENT", "write")Đối số thứ ba mặc định là id; đặt tên tham số khác khi tài nguyên được xác định qua đường dẫn cha:
@Get("nodes/:nodeId/documents")
@RequireAccess("KNOWLEDGE_BASE", "read", "nodeId")Khai báo ở method thay thế khai báo ở class. read cần hiển thị; write cần hiển thị và sở hữu hoặc quyền manage của loại đó, nên ghi thỏa mãn kiểm tra đọc, và DENY chặn cả hai kể cả với owner và người quản lý. Chia sẻ, tạo mới và quyền phụ thuộc vào thay đổi được yêu cầu giữ chính sách riêng.
Thực thi dùng chung và phân giải đối tượng
Guard và bên gọi trực tiếp đều dùng AssertResourceAccess. Guard chuyển quyền truy cập đã xác minh kèm bên gọi (gắn với bên gọi, tổ chức, visibility id và chế độ), nên các lần kiểm tra lặp lại cho cùng tài nguyên dùng lại kết quả trong lần gọi đó; tuần tự hóa danh tính sẽ bỏ phần xác minh. AuthContext thường luôn đánh giá chính sách hiện hành, nên agent runtime và worker đi qua cùng các lần kiểm tra mà không cần HTTP guard.
Guard phân giải id ở phía máy chủ và chỉ lấy siêu dữ liệu truy cập; use case tải nội dung. MEMORY_RECORD và KNOWLEDGE_DOCUMENT trỏ tới collection của chúng; VISIBILITY chỉ thẳng một dòng visibility (lựa chọn thư viện cá nhân). MEMORY_NODE phân giải cùng collection với KNOWLEDGE_BASE và giữ lỗi node_not_found của API bộ nhớ; route tri thức giữ knowledge_node_not_found, được màn hình tri thức dùng để hiện trạng thái truy cập bị hạn chế. Collection lọc hiển thị trước khi phân trang.
Giới hạn cấp quyền, bộ phân giải và mã lỗi
Giới hạn là mã ứng dụng: Role.assertGrantable từ chối khi vai trò không dựng sẵn được cấp quyền không thể ủy quyền, và một spec chứng minh riêng cơ sở dữ liệu sẽ cho phép dòng đó. Màn hình xem trước dùng GET /effective-capabilities.
| Trường hợp | Phản hồi |
|---|---|
| Mời owner | 400 invite_role_not_invitable |
| Phòng ban của tổ chức khác | 404 |
Gửi hoặc gửi lại ở chế độ IDP | 409 directory_frozen |
| Có tồn tại nhưng không được phép | 403 |
| Không hiển thị, hoặc thuộc tổ chức khác | 404 |