Quyền truy cập Thực thể & Bản ghi
Một chính sách duy nhất trên mỗi thực thể — chế độ truy cập, danh sách cấp quyền, và phạm vi hồ sơ riêng cho từng thao tác.
Mỗi thực thể có một chính sách truy cập duy nhất, và chính sách đó trả lời hai câu hỏi ở cùng một chỗ: ai được thao tác trên thực thể này, và với mỗi thao tác, trên những hồ sơ nào. Không còn một lớp "quyền truy cập bản ghi" riêng biệt — phạm vi hồ sơ nằm ngay bên trong lượt cấp quyền, tính riêng cho từng thao tác.
Quyền vai trò là mức trần mà các lượt cấp quyền chỉ có thể thu hẹp, không bao giờ nới rộng.
Trang này dành cho người thiết kế/quản trị đang cấu hình một thực thể. Nếu bạn chỉ muốn biết vì sao một hồ sơ không hiện ra khi duyệt dữ liệu hằng ngày, xem Quyền truy cập.
Mở tab Quyền truy cập

Vào Quản trị → Thực thể, mở thực thể cần cấu hình, rồi chọn tab Quyền truy cập. Tab chỉ hiện với người có quyền Thiết kế trên chính thực thể đó — cùng cánh cửa dùng cho việc đọc và sửa danh sách cấp quyền, vì một lời giải thích quyền cũng nêu tên các lượt cấp quyền.
Tab xếp bốn thẻ, theo thứ tự:
| Thẻ | Nội dung |
|---|---|
| Phân loại theo đơn vị | Hồ sơ của thực thể này có bắt buộc mang một đơn vị tổ chức hay không. Bật nó là điều kiện để dùng bốn phạm vi theo đơn vị: Đơn vị, Cây con, Đơn vị của họ và Đơn vị của họ và mọi cấp bên dưới. |
| Quyền truy cập thực thể | Chế độ truy cập và danh sách cấp quyền — phần chính của trang này. |
| Giải thích quyền truy cập | Hỏi vì sao một chủ thể được, hoặc không được, thao tác trên một hồ sơ. |
| Thay đổi chính sách trên thực thể này | Nhật ký kiểm toán các thay đổi chính sách, mới nhất trước. |
Hai chế độ truy cập
| Chế độ | Ý nghĩa |
|---|---|
| Mọi người | Bất kỳ ai có quyền vai trò tương ứng đều được thao tác trên toàn tổ chức. Đây là mặc định. |
| Hạn chế | Chỉ danh sách cấp quyền bên dưới. Mỗi lượt cấp quyền nêu một chủ thể và, với từng thao tác, một phạm vi. |
Mọi người không có nghĩa là "không có bảo mật". Nó có nghĩa là: mỗi thao tác mà vai trò của người đó cho phép sẽ chạm tới toàn bộ tổ chức. Người không có entity.write vẫn không ghi được gì; người có entity.read thì đọc được mọi hồ sơ của thực thể này. Ở chế độ này danh sách cấp quyền không được tra cứu đến.
Ở chế độ Hạn chế, một thao tác không có lượt cấp quyền nào áp dụng sẽ phân giải thành không hồ sơ nào — chứ không phải "không lọc". Danh sách trống nghĩa là không ai chạm tới được gì.
Chuyển chế độ không phá hủy dữ liệu: danh sách cấp quyền được giữ nguyên khi bạn chuyển sang Mọi người, và trở lại nguyên vẹn khi bạn quay lại Hạn chế. Thực thể hệ thống (Người dùng, Nhóm, Đơn vị) luôn ở chế độ mọi người và không có lượt cấp quyền nào — xem Thực thể hệ thống.
Nếu bạn không phải quản trị viên vượt quyền (entity.admin), chuyển sang Hạn chế sẽ buộc tạo một lượt cấp quyền cho chính bạn — Thiết kế cùng Xem và Liệt kê phạm vi toàn tổ chức. Giao diện hiện bản xem thử kèm nút Lưu · chế độ hạn chế; chưa ghi gì cho tới khi bạn bấm. Lưu ý Tạo, Sửa và Xóa không bị buộc: bạn hoàn toàn có thể hạn chế một thực thể rồi mất chính khả năng sửa hồ sơ trong đó.
Một lượt cấp quyền gồm những gì
Ở chế độ hạn chế, chính sách là một bảng: mỗi chủ thể một dòng. Một lượt cấp quyền gồm đúng ba phần:
- Chủ thể — một người dùng, một nhóm, hoặc một chủ thể dịch vụ. Đúng một, không bao giờ nhiều hơn. Mỗi chủ thể chỉ xuất hiện một lần trong danh sách; bộ chọn vô hiệu hóa những ai đã có mặt và ghi "đã được cấp quyền — hãy sửa lượt cấp quyền hiện có".
- Cờ Thiết kế — quyền cấu hình toàn thực thể: trường, khung nhìn, quyền truy cập. Bật hoặc tắt, không có phạm vi.
- Phạm vi cho từng thao tác — với mỗi thao tác trong năm thao tác theo hồ sơ, một phạm vi (hoặc không cấp gì).
Thêm một lượt cấp quyền:
- Ở thẻ Quyền truy cập thực thể, chọn chế độ Hạn chế, rồi nhấn Thêm lượt cấp quyền.
- Bước Chủ thể: chuyển giữa Người dùng / Nhóm / Chủ thể dịch vụ, tìm và chọn một chủ thể, rồi nhấn Tiếp · phạm vi.
- Bước Phạm vi: với từng dòng Xem, Liệt kê, Tạo, Sửa, Xóa, chọn một trong Không · Của mình · Đơn vị · Cây con · Đơn vị của họ · Đơn vị của họ và mọi cấp bên dưới · Toàn tổ chức. Với Đơn vị hoặc Cây con, chọn tiếp đơn vị neo hiện ra ngay bên cạnh; hai phạm vi theo lượt gán không có đơn vị neo nào để chọn.
- Nếu chủ thể này cần cấu hình chính thực thể, bật công tắc Thiết kế ở cuối lưới.
- Tùy chọn: nhấn Xem trước để thấy lượt cấp quyền chưa lưu sẽ cho phép những gì.
- Nhấn Lưu lượt cấp quyền.
Một lượt cấp quyền không nêu thao tác nào và cũng không bật Thiết kế sẽ bị chặn ngay trước khi gửi đi: "Cấp ít nhất một thao tác, hoặc quyền thiết kế — lượt cấp quyền không nêu gì thì không cấp gì cả."
Thẻ Quyền truy cập thực thể không có nút Lưu. Chọn chế độ, gỡ một lượt cấp quyền, hay bấm Lưu lượt cấp quyền trong hộp thoại — mỗi thao tác ghi ngay toàn bộ chính sách. Hai nút duy nhất trông giống "Lưu" là Lưu lượt cấp quyền trong hộp thoại và Lưu · chế độ hạn chế ở bước xác nhận chống tự khóa.
Mỗi lần ghi thay thế toàn bộ chính sách và mang theo mã phiên bản của thực thể. Nếu người khác đã đổi quyền truy cập kể từ lúc bạn mở, bạn nhận Xung đột — STALE_VERSION ngay trên thẻ, kèm Tải lại chính sách và Bỏ thay đổi của tôi. Mã phiên bản này dùng chung với tự động lưu của tab Cài đặt, nên sửa cài đặt ở một tab trình duyệt và sửa quyền truy cập ở tab khác cũng sẽ xung đột.
Năm thao tác, sáu phạm vi
Năm thao tác được giới hạn theo hồ sơ. Mỗi thao tác được phân giải riêng — quyền Sửa không giúp gì cho quyền Xem.
| Thao tác | Quyền vai trò làm trần | Phạm vi được xét trên |
|---|---|---|
| Xem | entity.read | Hồ sơ đang được mở. |
| Liệt kê | entity.list | Từng hồ sơ ứng viên của một màn hình duyệt. |
| Tạo | entity.write | Chủ sở hữu và đơn vị đích mà lượt tạo đề xuất. |
| Sửa | entity.write | Hồ sơ đang bị thay đổi. |
| Xóa | entity.delete | Hồ sơ đang bị xóa. |
Tạo và Sửa tách riêng dù cùng dựa trên một quyền vai trò entity.write, vì một lượt tạo chưa có hồ sơ nào để kiểm tra: phạm vi của Sửa được xét trên hồ sơ đang thay đổi, còn phạm vi của Tạo được xét trên chủ sở hữu và đơn vị đích đang được đề xuất. Không có thao tác nào tên là "Ghi".
Sáu phạm vi:
| Phạm vi | Ý nghĩa |
|---|---|
| Của mình | Những hồ sơ chủ thể sở hữu. |
| Đơn vị | Hồ sơ đúng trong đơn vị neo — không gồm đơn vị con. |
| Cây con | Hồ sơ trong đơn vị neo và mọi đơn vị bên dưới. |
| Đơn vị của họ | Hồ sơ trong bất kỳ đơn vị nào mà chính chủ thể đang được gán vào — mọi lượt gán đều tính, không riêng đơn vị chính; không gồm đơn vị con. |
| Đơn vị của họ và mọi cấp bên dưới | Các đơn vị chủ thể được gán vào và mọi đơn vị bên dưới chúng. |
| Toàn tổ chức | Mọi hồ sơ của thực thể này. |
Không trong bộ nút không phải phạm vi thứ bảy. Nó nghĩa là thao tác đó không được cấp: khi lưu, dòng ấy bị bỏ hẳn khỏi lượt cấp quyền.
Sáu phạm vi chia làm hai họ theo đơn vị: Đơn vị và Cây con là phạm vi có neo — người viết quyền chọn một đơn vị cụ thể; Đơn vị của họ và Đơn vị của họ và mọi cấp bên dưới là phạm vi theo lượt gán — không chọn gì cả, vì tham số của chúng là chính các lượt gán của chủ thể. Hai mục tiếp theo nói về từng họ.
Vì sao Thiết kế không nằm trong lưới
Thiết kế là quyền cấu hình toàn thực thể — trường, khung nhìn, quyền truy cập — chứ không phải một thao tác trên hồ sơ. Không có hàng nào để giới hạn, nên nó là một công tắc bên cạnh chủ thể chứ không phải một dòng trong lưới phạm vi. Trên bảng cấp quyền nó hiện thành chip Thiết kế; chủ thể không có nó thì ô ấy là một dấu gạch.
Đơn vị neo: đúng đơn vị hay cây con
Một quy tắc quyết định cách đọc cả mục này: phạm vi có neo chạm tới đúng đơn vị được nêu ở điểm neo, không bao giờ chạm tới đơn vị mà người được cấp quyền đang đứng. Chỗ đứng của một chủ thể trong sơ đồ tổ chức — lượt gán (placement) của họ — không được phạm vi có neo nào đọc tới. Đó là chủ ý chứ không phải thiếu sót: đây là cách duy nhất diễn đạt việc ủy quyền chéo nhánh, chẳng hạn giao cho một người đứng ở North quyền xử lý hồ sơ của South. Nhưng nó cũng là điều duy nhất trên màn hình này mà bạn soạn hoàn toàn hợp lệ mà vẫn có thể không đúng ý mình. Còn khi điều bạn muốn nói là "đơn vị của chính họ" thì đừng đi tìm điểm neo — đó là việc của hai phạm vi theo lượt gán ở mục dưới.
Của mình và Toàn tổ chức không mang đơn vị neo, và không được phép mang. Đơn vị và Cây con thì bắt buộc phải có: thiếu neo, lần lưu bị từ chối với "Hãy chọn đơn vị neo cho phạm vi này."
Hai phạm vi này — cũng như hai phạm vi theo lượt gán ở mục dưới — chỉ dùng được trên thực thể đã bật phân loại theo đơn vị: cả bốn đều so khớp trên đơn vị mà hồ sơ được lưu vào. Nếu chưa bật, các nút bị vô hiệu kèm ghi chú nhắc bật phân loại theo đơn vị cho thực thể này trước. Xem Phân loại theo đơn vị và Đơn vị tổ chức.
Khác biệt giữa hai phạm vi là chỗ quản trị viên nhầm nhiều nhất. Lấy ngay cây đơn vị của tổ chức mẫu được dùng suốt trang này:
HQ
├── North
│ ├── Accounts Payable
│ └── Human Resources
└── South- Xem · Đơn vị ▪ North chỉ chạm tới hồ sơ được gắn đúng vào North. Hồ sơ gắn vào Accounts Payable không nằm trong phạm vi này, dù Accounts Payable nằm ngay dưới North.
- Xem · Cây con ▾ North chạm tới hồ sơ ở North, Accounts Payable và Human Resources — nhưng không chạm tới South.
Nói ngắn gọn: Đơn vị là một tầng, Cây con là cả nhánh. Nếu bạn cấp cho trưởng vùng phạm vi Đơn vị trong khi hồ sơ thực tế được gắn ở các đơn vị con, họ mở màn hình duyệt và thấy trống trơn — không có lỗi nào hiện ra, vì đó là câu trả lời đúng cho quyền đã cấu hình.
Chọn đúng-đơn-vị hay cây-con là một thiết lập, sửa được ở hai chỗ: cặp nút Đơn vị / Cây con trên dòng, và bộ chuyển ▪ Đúng đơn vị / ▾ Cây con bên trong cửa sổ chọn neo. Đổi họ phạm vi sẽ xóa neo đang chọn, để một đơn vị chọn cho Đơn vị không đi lạc sang Của mình.
Các thao tác trong cùng một lượt cấp quyền được phép neo vào những đơn vị khác nhau — ví dụ Xem · Cây con ▾ North đi cùng Sửa · Đơn vị ▪ Accounts Payable.
Đơn vị đã lưu trữ vẫn được liệt kê trong bộ chọn neo, để lượt cấp quyền đang nêu tên nó còn đọc được, nhưng không thể neo một lượt cấp quyền mới: "Đơn vị đã lưu trữ không thể làm điểm neo cho quyền mới." Một đơn vị thuộc tổ chức khác bị từ chối như thể không tồn tại.
Khi điểm neo nằm ngoài nhánh của chủ thể
Vì quy tắc trên, một lượt cấp quyền neo nhầm sang đơn vị anh em trông hệt như một lượt cấp quyền chạy tốt: người nhận vẫn duyệt được, vẫn tạo được, chỉ là mọi hồ sơ mới của họ rơi vào nhánh khác của sơ đồ tổ chức. Nên bước Phạm vi đối chiếu điểm neo bạn vừa chọn với mọi lượt gán của chủ thể — tất cả, không riêng đơn vị chính — và khi điểm neo nằm ngoài nhánh của từng lượt gán ấy, ngay dưới lưới hiện một dòng tư vấn:
{thao tác} neo tại {điểm neo}, không nằm trên nhánh của {chủ thể} — họ thuộc {lượt gán}. Phạm vi có neo trỏ tới đúng đơn vị được nêu, không phải đơn vị của chủ thể, nên bản cấp quyền này lưu đúng như đã soạn. Nếu bạn muốn chính đơn vị của họ, hãy neo tại {lượt gán}.
Chủ thể chưa được gán vào đơn vị nào thì câu chữ đổi khác, vì lời khuyên "hãy neo tại đơn vị của họ" không còn chỗ bám:
{thao tác} neo tại {điểm neo}, và {chủ thể} không thuộc đơn vị nào. Phạm vi có neo vẫn trỏ tới đúng đơn vị được nêu bất kể chỗ đứng của chủ thể, nên bản cấp quyền này lưu đúng như đã soạn và thực sự trao quyền đó.
Dòng chỉ nêu tên những thao tác có điểm neo lệch, nên một lượt cấp quyền neo vào nhiều nơi chỉ bị nhắc ở đúng phần lệch.
Đây là tư vấn, không phải từ chối — và khác hẳn cảnh báo trên mức trần ở mục dưới. Nút Lưu lượt cấp quyền vẫn hoạt động, lượt cấp quyền lưu đúng như đã soạn, và nó thực sự có hiệu lực: chủ thể chạm tới được đúng đơn vị đã neo. Từ chối lần lưu sẽ là cấm luôn trường hợp ủy quyền chéo nhánh hợp lệ chỉ để bắt trường hợp nhầm — nên trình soạn thảo nói ra, rồi để bạn quyết. Và nếu điều bạn thật sự muốn là "đơn vị của chính họ" — cho mọi người nhận, ở mọi đơn vị — thì cách sửa không phải là dời điểm neo: hãy dùng phạm vi Đơn vị của họ (hoặc Đơn vị của họ và mọi cấp bên dưới), vốn không có điểm neo nên không bao giờ làm dòng tư vấn này hiện lên.
Đừng đi tìm chip cho cảnh báo này. Khác với chip trên mức trần, nó không làm hộp thoại chuyển sang bảng Đã lưu kèm cảnh báo và không để lại dấu nào trên bảng cấp quyền: nó chỉ sống trong trình soạn thảo và biến mất khi bạn lưu. Phạm vi áp dụng cũng khác: nó hiện cho cả người dùng lẫn chủ thể dịch vụ, trong khi việc làm mờ theo mức trần chỉ áp dụng cho người dùng.
Ba trường hợp dòng này cố ý không hiện:
- Điểm neo và lượt gán nằm cùng một nhánh, theo cả hai chiều. Neo ở phía trên lượt gán là tầm với của cấp trên; neo ở phía dưới là một lần thu hẹp có chủ ý. Cả hai đều im lặng, để trường hợp đơn vị anh em — trường hợp thật sự đáng nhìn lại — không bị chìm giữa những cảnh báo không cần thiết. Một đơn vị trung gian trên đường đi đã lưu trữ cũng không làm dòng này hiện lên oan: phép đối chiếu đọc cả đơn vị đã lưu trữ, nên mạch nhánh vẫn liền.
- Chủ thể là một nhóm. Nhóm không đứng ở đâu trong sơ đồ tổ chức — thành viên của nó mới đứng — nên không có chỗ đứng nào để đối chiếu với điểm neo. Lượt cấp quyền cho nhóm không bao giờ hiện dòng này.
- Danh sách lượt gán chưa tải xong, hoặc tải hỏng. Khi đó không có dòng nào cả, kể cả dòng "không thuộc đơn vị nào". Câu ấy là một lời buộc tội, và nó sẽ sai đúng với chủ thể mà hệ thống vừa không đọc được chỗ đứng.
Vì trường hợp cuối, im lặng không có nghĩa là đã đúng. Hai trường hợp đầu im lặng vì đã đối chiếu và thấy ổn; trường hợp thứ ba im lặng vì chưa đối chiếu được. Nếu điểm neo là phần quan trọng của lượt cấp quyền này, hãy tự kiểm tra chỗ đứng của chủ thể tại Đơn vị tổ chức thay vì tin vào sự im lặng.
Phạm vi theo lượt gán: đơn vị của chính chủ thể
Hai phạm vi còn lại không neo vào đâu cả. Đơn vị của họ chạm tới hồ sơ nằm trong bất kỳ đơn vị nào mà chính chủ thể đang được gán vào; Đơn vị của họ và mọi cấp bên dưới cộng thêm mọi đơn vị bên dưới các đơn vị ấy. Không có bước chọn đơn vị neo — tham số của phạm vi chính là các lượt gán của chủ thể, đọc lại ở mỗi thao tác.
Đó là điều làm chúng đáng dùng: một lượt cấp quyền phủ mọi đơn vị. Yêu cầu "mỗi cán bộ thấy hồ sơ của đơn vị mình" trước đây phải viết thành một nhóm cộng một lượt cấp quyền neo riêng cho từng đơn vị — bốn mươi đơn vị là bốn mươi nhóm và bốn mươi lượt. Nay nó là đúng một lượt cấp quyền cho một nhóm, với Xem / Liệt kê / Tạo / Sửa · Đơn vị của họ: mỗi thành viên chạm tới đúng đơn vị của chính mình. Chuyển lượt gán của một người sang đơn vị khác là tầm với của họ đi theo ngay — không ai phải mở lại chính sách.
Vài quy tắc để đọc chúng cho đúng:
- Mọi lượt gán đều tính, không riêng đơn vị chính. Một người được gán vào hai đơn vị chạm tới hồ sơ của cả hai.
- Chủ thể chưa được gán vào đơn vị nào thì phạm vi không khớp hồ sơ nào cả — đóng về phía an toàn, chứ không lùi về một mặc định nào. Báo cáo Tình trạng phân quyền nêu đúng trường hợp này dưới phát hiện Chủ thể giữ phạm vi theo vị trí xếp nhưng chưa được xếp vào đơn vị nào; cách sửa là một lượt gán, không phải một lần sửa chính sách.
- Lượt gán vẫn không tự cấp gì. Chỉ khi có một lượt cấp quyền dùng phạm vi theo lượt gán thì lượt gán mới được đọc tới — nhưng từ lúc đó, gỡ một lượt gán là thu hẹp ngay tầm với của lượt cấp quyền ấy, và thêm một lượt gán là nới nó ra.
- Lưu trữ một đơn vị không rút lại quyền qua nó. Một lượt gán vào đơn vị đã lưu trữ vẫn được hai phạm vi này phân giải — lưu trữ chặn việc xếp hồ sơ mới vào đơn vị, không bao giờ chặn quyền truy cập qua đơn vị, đúng như với điểm neo đã lưu trữ. Tạo hồ sơ vào đơn vị đã lưu trữ vẫn bị từ chối.
- Với thao tác Tạo, Đơn vị của họ cho phép lưu vào bất kỳ đơn vị nào chủ thể được gán vào, Đơn vị của họ và mọi cấp bên dưới cộng thêm các đơn vị bên dưới chúng — trong cả hai trường hợp chỉ những đơn vị đích đang hoạt động. Đơn vị chính vẫn là đích mặc định khi lượt tạo không nêu đơn vị nào.
Trong thẻ Giải thích quyền truy cập, một hồ sơ được phép qua phạm vi này nêu đích danh lượt gán bao phủ nó; một lượt cấp quyền theo lượt gán trên chủ thể chưa được gán vào đơn vị nào hiện yếu tố nói đúng điều đó — và cách sửa nó trỏ tới là một lượt gán, không phải nới chính sách.
Hai phạm vi có neo vẫn ở nguyên chỗ của chúng: đó là công cụ đúng cho ủy quyền bất đối xứng — một giám sát viên hay tổ kiểm tra với tới một đơn vị cụ thể mà họ không đứng trong đó. Phạm vi theo lượt gán là lời giải cho trường hợp đối xứng — "ai cũng thấy đơn vị của chính mình" — chứ không thay thế điểm neo.
Ví dụ
Một tổ chức mẫu, đủ nhỏ để bốn phạm vi nó dùng cùng lộ ra khác biệt trên một màn hình. Thực thể là Hồ sơ vụ việc, đã bật phân loại theo đơn vị và đang ở chế độ Hạn chế. Trong cây đơn vị, Accounts Payable (mã AP) và Human Resources (mã HR) là hai đơn vị con của North, còn South là đơn vị anh em của North.
Bốn hồ sơ nằm như sau:
| Hồ sơ | Đơn vị | Chủ sở hữu |
|---|---|---|
| HS-001 | Accounts Payable | Nguyễn Thị Hà |
| HS-002 | Accounts Payable | Trần Văn Lân |
| HS-003 | Human Resources | Trần Văn Lân |
| HS-004 | South | Vũ Quốc Bảo |
Hà và Lân đều được gán vào North, Bảo ở South. Lượt gán ấy tự nó không cấp gì cả — và không phạm vi nào trong bốn chính sách dưới đây đọc tới nó: chúng chỉ dùng Của mình, các phạm vi có neo và Toàn tổ chức, vốn so khớp lên chủ sở hữu và đơn vị của hồ sơ, chứ không phải chỗ đứng của chủ thể. Với bốn lượt này, lượt gán chỉ đóng góp hai điều, và không điều nào là cấp quyền: đơn vị chính cung cấp đơn vị đích mặc định cho hồ sơ mới, còn trình soạn quyền đọc các lượt gán để dựng dòng tư vấn ở mục trên. (Một lượt cấp quyền dùng phạm vi theo lượt gán thì khác hẳn — nó đọc đúng chỗ đứng ấy.)
Bốn lượt cấp quyền
| Cấp cho | Xem | Liệt kê | Tạo | Sửa | Xóa |
|---|---|---|---|---|---|
| Nguyễn Thị Hà — cán bộ thụ lý | Của mình | Của mình | Toàn tổ chức | Của mình | — |
| Nhóm trưởng nhóm AP — trưởng nhóm | Đơn vị ▪ AP | Đơn vị ▪ AP | Đơn vị ▪ AP | Của mình | — |
| Trần Văn Lân — giám đốc vùng | Cây con ▾ North | Cây con ▾ North | — | Của mình | — |
| Nhóm Kiểm toán — kiểm toán viên | Toàn tổ chức | Toàn tổ chức | — | — | — |
Riêng cột Tạo được xét trên chủ sở hữu và đơn vị đích mà lượt tạo đề xuất, chứ không phải trên một hồ sơ đã có; Tạo · Toàn tổ chức của Hà nghĩa là cô ấy nộp hồ sơ mới vào đâu cũng được.
Hai trong bốn dòng nêu tên một nhóm chứ không phải một người, và mọi thành viên của nhóm nhận trọn dòng đó. Thêm ai đó vào Nhóm Kiểm toán là cách bàn giao quyền kiểm toán mà không phải mở lại chính sách. Nhóm không mang mức trần của riêng nó — mỗi thành viên vẫn phải có quyền vai trò tương ứng. Xem Nhóm.
Ai chạm tới được hồ sơ nào
Đây là đúng bốn chính sách trên, đọc theo chiều ngược lại: mỗi ô là những gì người ở đầu dòng thực sự làm được với hồ sơ ở đầu cột.
| HS-001 (AP · Hà) | HS-002 (AP · Lân) | HS-003 (HR · Lân) | HS-004 (South · Bảo) | |
|---|---|---|---|---|
| Hà — xem/sửa của mình | xem + sửa | — | — | — |
| Trưởng nhóm AP — xem đơn vị ▪ AP | xem | xem | — | — |
| Giám đốc — xem cây con ▾ North, sửa của mình | xem | xem + sửa | xem + sửa | — |
| Kiểm toán — xem toàn tổ chức | xem | xem | xem | xem |
Của mình không phải Đơn vị. Hà đứng ở North và HS-002 nằm ngay trong đơn vị con nơi cô ấy làm việc, vậy mà cô ấy không chạm tới được. Quyền của cô ấy chỉ đọc đúng một dữ kiện: ai sở hữu hồ sơ.
Đơn vị không phải Cây con. Trưởng nhóm AP với tới cả hai hồ sơ ở AP và trượt mất HS-003 ở HR — cách đúng một cấp, ngay bên cạnh, dưới cùng một đơn vị cha.
Cây con dừng lại ở điểm neo của nó. Giám đốc với tới mọi thứ dưới North và không bao giờ với tới HS-004 ở South. Cây con là một nhánh có điểm neo, không phải toàn tổ chức.
Xem không phải Sửa. Giám đốc đọc được ba hồ sơ và chỉ đổi được hai hồ sơ do chính anh ấy sở hữu; HS-001 là của Hà, anh ấy đọc được mà không đụng vào được. Trưởng nhóm AP cũng cầm Sửa · Của mình mà không đổi được gì ở đây, vì không sở hữu hồ sơ nào trong bốn hồ sơ này. Đây chính là dòng mà lưới phạm vi theo từng thao tác tồn tại để diễn đạt, và là điều một mô hình "mức truy cập" không nói ra được: không có mức nào vừa là "cây con North" cho việc xem, vừa là "của mình" cho việc sửa, nên một mô hình phát cho mỗi người đúng một mức đơn giản là không có chỗ để viết dòng này xuống.
Một dấu gạch không phải "tất cả". Kiểm toán viên không có quyền Sửa, nên kiểm toán viên không sửa được gì. Một thao tác không được cấp phân giải thành không hồ sơ nào.
Cùng ví dụ này kể từ phía người quản trị, từ đầu đến cuối — dựng cây đơn vị, xếp người vào đơn vị, bật phân loại, rồi viết bốn chính sách — nằm ở Ví dụ: phân quyền cho một tổ chức.
Mức trần vai trò
Quy tắc thông thường là: được phép = có quyền vai trò tương ứng VÀ (thực thể ở chế độ mọi người HOẶC có lượt cấp quyền phù hợp). Cấp Xem · Toàn tổ chức cho một người mà vai trò họ không mang entity.read sẽ không đem lại gì cả — lượt cấp quyền vẫn nằm đó, chỉ là không có tác dụng.
Chỉ có đúng một cách vượt qua vế thứ hai mà không cần lượt cấp quyền, và nó không phải một lượt cấp quyền: quyền riêng Vượt phạm vi bản ghi (có kiểm toán), ở mục cuối trang này. Nó chỉ thay cho vế thứ hai, không bao giờ thay cho vế thứ nhất — vẫn phải có quyền vai trò — nên mức trần luôn được giữ.
Mức trần được đọc lại ở mỗi thao tác, chứ không đóng băng lúc lưu. Một lượt cấp quyền nằm trên mức trần sẽ tự có hiệu lực ngay khi ai đó mở rộng vai trò, không cần lưu lại; ngược lại, thu hẹp vai trò sẽ lấy lại phạm vi ngay, dù lượt cấp quyền vẫn còn nguyên trong bảng.
Vì vậy trình soạn thảo không chặn bạn:
- Các nút phạm vi nằm trên mức trần bị làm mờ nhưng vẫn bấm và lưu được.
- Lần lưu thành công, kèm một cảnh báo tư vấn. Hộp thoại chuyển sang bảng Đã lưu kèm cảnh báo, và dòng tương ứng trong bảng cấp quyền mọc thêm chip trên mức trần.
- Chip đó ở lại cho tới khi ai đó mở rộng vai trò. Nó là nhận định về vai trò hiện tại của chủ thể, nên nó cũng tự xuất hiện khi vai trò bị thu hẹp sau này, mà không ai lưu lại chính sách cả.
Cấp một quyền trước khi thay đổi vai trò là việc hợp lệ — đó chính là lý do lần lưu không bị từ chối.
Việc làm mờ chỉ áp dụng cho chủ thể là người dùng. Nhóm không có mức trần riêng (mỗi thành viên mang mức trần của mình), nên không có gì bị làm mờ và cũng không bao giờ bị gắn chip. Chủ thể dịch vụ không được làm mờ trong trình soạn thảo nhưng vẫn bị gắn chip sau khi lưu — nên chip "trên mức trần" có thể xuất hiện trên một dòng chủ thể dịch vụ mà trước đó không hề có cảnh báo nào.
Liệt kê và Xem trên màn hình duyệt
Mỗi màn hình duyệt — trình duyệt bản ghi, tìm kiếm, đếm, xuất dữ liệu — buộc một hồ sơ phải qua cả hai phạm vi Liệt kê và Xem. Hai phạm vi không bao giờ được gộp lại thành một: Liệt kê · Của mình đi cùng Xem · Cây con là điều kiện "vừa thuộc sở hữu của tôi vừa nằm trong nhánh", chứ không phải cái rộng hơn trong hai.
Nghĩa là một cặp lệch nhau sẽ âm thầm thu hẹp:
Liệt kê · Toàn tổ chứccạnhXem · Của mìnhkhông liệt kê toàn tổ chức. Nó chỉ liệt kê hồ sơ của chính chủ thể.Liệt kê · Của mìnhcạnhXem · Toàn tổ chứccũng chỉ liệt kê hồ sơ của chính họ.
Một lượt mở trực tiếp một hồ sơ theo id thì khác: nó chỉ xét phạm vi Xem. Nên một hồ sơ xem được nhưng không liệt kê được sẽ mở bình thường từ một đường liên kết trong khi vắng mặt ở mọi danh sách — người dùng báo "mở link thì thấy, mà tìm mãi không ra" là dấu hiệu điển hình của một cặp phạm vi lệch nhau.
Từ chối được định hình khác nhau tùy bề mặt: một lượt xem hoặc liệt kê bị từ chối trả lời như thể hồ sơ không tồn tại, còn một lượt sửa, xóa hay thiết kế bị từ chối trả về lỗi từ chối truy cập nói rõ.
Một lượt chạy quy trình thì ngược lại
Cách trả lời "như thể không tồn tại" ở trên chỉ dành cho các màn hình có người đứng trước. Một lượt chạy quy trình được xử lý theo hướng ngược hẳn: khi bước Bản ghi thực thể đọc một hồ sơ nằm ngoài phạm vi Xem của chủ thể — dù được trỏ theo id hay tra theo khóa định danh — lượt chạy dừng lại và chờ với nguyên nhân scope_mismatch, chứ không nhận câu trả lời "không có hồ sơ nào".
Khác biệt này có lý do thực tế. Câu trả lời trên màn hình đến tay một con người, và người đó đi hỏi. Câu trả lời trong một lượt chạy đến tay một nhánh rẽ, mà nhánh "chưa có" hầu như luôn là nhánh tạo mới — nên một hồ sơ chỉ bị che sẽ đẩy quy trình đi tạo lại chính nó, và kết cục tệ nhất là một bản trùng thật sự ra đời với lượt chạy vẫn xanh. Dừng lại là câu trả lời duy nhất không thể bị hiểu nhầm thành "cứ tạo đi"; hai kết cục có thể xảy ra được mổ xẻ trên trang của chính bước ấy.
Thứ được ghi lại vẫn không nêu tên hồ sơ: dòng chặn ghi thao tác, nguyên nhân và đơn vị của hồ sơ bị che — không bao giờ ghi chính hồ sơ, đúng như lượt đọc theo id vẫn làm.
Không có gì là ngầm định
Sở hữu, vị trí trong sơ đồ tổ chức và việc gán đơn vị tự chúng không cấp quyền gì. Chúng chỉ là các dữ kiện mà phạm vi của một lượt cấp quyền phù hợp được đánh giá trên đó:
-
Sở hữu là thứ mà phạm vi Của mình so khớp — không phải thứ tự nó mở hồ sơ ra.
-
Đơn vị của hồ sơ là thứ mà bốn phạm vi theo đơn vị — Đơn vị, Cây con và hai phạm vi theo lượt gán — so khớp.
-
Đơn vị chính của một người chỉ cung cấp đơn vị đích mặc định — đích mà một lượt tạo thủ công mở sẵn, và cũng là đích của một lượt chạy hành động với tư cách họ khi bước không nêu đích nào khác. Với một lượt chạy quy trình, bước Bản ghi thực thể có thể tự nêu Đơn vị đích (Destination unit) của nó, hoặc lấy theo đơn vị của bản ghi đã kích hoạt lượt chạy. Nêu một đích không phải là cấp quyền: thiết lập ấy chỉ chọn trong số những đơn vị mà chủ thể của lượt chạy vốn đã được phép lưu vào, và một đích ngoài tầm với sẽ làm lượt chạy dừng lại với nguyên nhân
destination_ineligiblechứ không lùi về một đơn vị nào khác. -
Các lượt gán của một chủ thể là tham số của hai phạm vi theo lượt gán — và chỉ được đọc tới khi có một lượt cấp quyền dùng phạm vi ấy. Từ lúc đó, thay đổi lượt gán là thay đổi tầm với của chính lượt cấp quyền đó; nhưng bản thân lượt gán vẫn không mở hồ sơ nào ra.
Nói lại cho rõ: gán một hồ sơ vào North không cho bất kỳ ai ở North quyền xem nó. Đặt một người vào North cũng vậy — chừng nào chưa có lượt cấp quyền nào theo lượt gán nhắc tới họ. Chỉ một lượt cấp quyền phù hợp mới cấp. Thẻ Quyền truy cập thực thể in thường trực đúng câu đó ngay dưới bảng: "Không có gì là ngầm định."
Một phạm vi Của mình cấp cho chủ thể dịch vụ không được phép sở hữu sẽ được lưu nhưng không có tác dụng: nó không đóng góp điều kiện nào. Trình soạn thảo vô hiệu hóa nút Của mình cho chủ thể dịch vụ như vậy, và phần giải thích nêu đúng lý do thay vì âm thầm bỏ qua. Xem Chủ thể dịch vụ (Service principal).
Giải thích một quyết định
Thẻ Giải thích quyền truy cập trả lời một câu hỏi cụ thể: chủ thể này có được thực hiện thao tác kia trên hồ sơ đó theo chính sách hiện tại hay không — và vì sao. Câu trả lời đến từ chính phép phân giải mà truy vấn dữ liệu dùng, không phải một cách suy diễn thứ hai, nên nó không thể lệch với những gì màn hình duyệt thực sự làm.
- Chọn Chủ thể — tab Người dùng hoặc Chủ thể dịch vụ.
- Chọn Thao tác — Xem, Liệt kê, Tạo, Sửa hoặc Xóa.
- Chọn Hồ sơ, bằng Chọn từ danh sách hoặc Dán id. Với thao tác Tạo, ô này đổi thành Đơn vị đích.
- Nhấn Giải thích.
Kết quả hiện chip Được phép hoặc Bị từ chối, rồi từng yếu tố dẫn tới kết luận: quyền thô, quyền áp dụng, khớp phạm vi, bỏ qua nâng quyền. Ví dụ "Không vai trò đang hoạt động nào mang entity.read", "Không quyền nào trên thực thể này gọi tên chủ thể cho thao tác này", hoặc "Hồ sơ nằm ngoài mọi đơn vị các quyền chạm tới và không thuộc sở hữu của chủ thể".
Vài điều đáng biết:
- Bỏ trống hồ sơ để có câu trả lời ở mức chính sách: chủ thể này có thể chạm tới bất kỳ hồ sơ nào ở đây không.
- Câu hỏi Liệt kê được trả lời bằng giao của Liệt kê và Xem — hai bộ yếu tố hiện ra, mỗi bộ gắn nhãn thao tác của nó, và kết luận là phép "và" của cả hai.
- Chuyển đơn vị là hai câu hỏi: Sửa trên nguồn, Tạo vào đích. Vì vậy hộp nhập từ chối id hồ sơ cho câu hỏi Tạo, và từ chối đơn vị đích cho mọi câu hỏi khác.
- Câu hỏi Tạo là cách thử trước đơn vị đích của một bước, thay vì chạy quy trình rồi chờ xem nó có bị chặn hay không: chọn chủ thể mà quy trình chạy với tư cách, thao tác Tạo, và đơn vị mà bước Bản ghi thực thể đang nêu tên. Thẻ này hỏi câu hỏi tương tác, nên với người giữ quyền vượt phạm vi bản ghi nó trả lời rộng hơn những gì một lượt chạy làm được; nếu quy trình chạy với tư cách một chủ thể dịch vụ, hãy hỏi đúng câu hỏi ấy từ nút Xem trước quyền truy cập… trong hộp thoại Chạy với tư cách, nơi nó được đánh giá đúng như một lượt chạy.
- Nhóm không giải thích trực tiếp được — nhóm không có mức trần vai trò. Hãy giải thích một thành viên; lượt cấp quyền của nhóm vẫn áp dụng cho họ.
- Không có gì được lưu. Việc hỏi không thay đổi chính sách.
Hỏi về một hồ sơ mà chính bạn không xem được sẽ nhận thêm chip Đã che. Câu trả lời khi đó không nói gì về hồ sơ ấy: không yếu tố nào được rút ra từ nó, và kết luận lùi về mức chính sách — chủ thể này có thể thực hiện thao tác này ở đây không. "Nằm ngoài phạm vi bạn xem được" và "không tồn tại" cố ý không phân biệt được với nhau, để tính năng giải thích không trở thành cách dò tìm hồ sơ.
Nút Xem trước trong hộp thoại soạn quyền hỏi cùng câu hỏi đó trên chính sách như sau khi lưu: lượt cấp quyền chưa lưu được gộp vào chính sách hiện tại rồi đánh giá, và chưa có gì được ghi. Nếu cùng câu hỏi đó đang bị từ chối theo chính sách đã lưu, bản xem trước nói thêm "Bị từ chối theo chính sách đã lưu. Lưu quyền để câu trả lời này thành hiện thực."
Cùng bảng giải thích này còn mở được từ nút Chạy với tư cách của một quy trình, và ở đó nó luôn hỏi câu hỏi không nâng quyền — xem Chạy với tư cách (Run as).
Thay đổi chính sách trên thực thể này
Thẻ cuối cùng là nhật ký kiểm toán quản trị, mới nhất trước, phân trang bằng nút Tải thêm. Nó đọc đúng ba loại sự kiện:
| Sự kiện | Khi nào được ghi |
|---|---|
| Đã cập nhật chính sách truy cập | Mỗi lần ghi chính sách, kể cả lần không đổi gì — dòng khi đó ghi "lưu lại cùng chính sách". |
| Đã bật / tắt phân loại theo đơn vị | Khi ai đó bật hoặc tắt phân loại đơn vị của thực thể. |
| Đã gán hồ sơ vào đơn vị | Khi ai đó gán đơn vị hàng loạt cho hồ sơ hiện có. |
Mỗi dòng nêu người thực hiện (hoặc Hệ thống), tiêu đề hành động, và phần khác biệt cũ → mới: + thêm một lượt cấp quyền, − gỡ một lượt, ~ đổi thao tác của một lượt, cùng một dòng ~ cho thay đổi chế độ.
Thay đổi chủ sở hữu và đơn vị ở mức từng hồ sơ không nằm trên nhật ký này — chúng nằm trong hoạt động của chính hồ sơ đó, xem Hành động & Hoạt động. Các lượt truy cập nâng quyền cũng bị loại khỏi đây có chủ đích: phạm vi của chúng nêu tên một id hồ sơ mà người đọc nhật ký này chưa chắc có quyền xem.
Điều gì thay thế quyền vượt cấp cũ của entity.admin
entity.admin từng mở mọi hồ sơ. Nay nó là cánh cửa cấu hình và chỉ vậy: nó mở bề mặt thiết kế của mọi thực thể — trường, khung nhìn, chính sách truy cập — bất kể phân quyền thiết kế từng thực thể, và không thay cho bất kỳ quyền hồ sơ nào. Phạm vi hồ sơ vẫn áp dụng đầy đủ với người giữ nó.
Thứ duy nhất còn nới rộng tầm với tới hồ sơ là một quyền riêng: Vượt phạm vi bản ghi (có kiểm toán) — entity.records.elevated.
| Đặc điểm | Nội dung |
|---|---|
| Nó làm gì | Chạm tới mọi hồ sơ của một thực thể bị hạn chế, bất kể danh sách cấp quyền. |
| Nó không làm gì | Nó không thay quyền vai trò: người giữ nó vẫn phải có entity.read / entity.write / entity.delete cho thao tác tương ứng. Trên thực thể ở chế độ mọi người, nó không bỏ qua gì cả. |
| Ai có sẵn | Không vai trò nào. Quyền này không được gán sẵn cho bất kỳ vai trò nào, kể cả vai trò quản trị — phải cấp thủ công tại Vai trò & quyền. |
| Cái giá | Mọi thao tác theo phạm vi thực hiện dưới quyền này đều ghi một dòng kiểm toán truy cập nâng quyền, ghi trước khi thao tác được tiến hành. |
Trong phần giải thích, một quyết định đi qua đường này hiện yếu tố bỏ qua nâng quyền: "Truy cập hồ sơ nâng quyền (entity.records.elevated): bỏ qua phạm vi dòng và có ghi kiểm toán."
Không còn nút Tự động hóa với hai chế độ theo-người-khởi-chạy / nâng-quyền trên quy trình nữa. Một phiên chạy nay luôn hành động với tư cách một chủ thể đã xác định, chọn ở Chạy với tư cách trong trình thiết kế, và được phân giải theo đúng chính sách trên trang này — không có đường vòng nào quanh nó. Xem Chạy với tư cách (Run as).
Xem tiếp: Phân loại theo đơn vị · Đơn vị tổ chức · Chạy với tư cách (Run as) · Chủ thể dịch vụ (Service principal) · Vai trò & quyền · Quyền truy cập khi duyệt bản ghi