Chủ thể dịch vụ (Service principal)
Danh tính bền vững mà tự động hóa hành động dưới danh nghĩa đó — cấp và thu hồi thông tin xác thực, vai trò, nhóm, quyền sở hữu hồ sơ, vô hiệu hóa và xóa.
Chủ thể dịch vụ là gì?
Danh tính thì bền vững, thông tin xác thực thì xoay vòng. Đó là toàn bộ ý tưởng của trang này, và mọi thứ còn lại đều treo vào nó. Một khóa API chỉ làm một việc: chứng minh cuộc gọi đến từ đâu. Thứ được ủy quyền, thứ được ghi vào lượt chạy, thứ đứng tên chủ sở hữu một hồ sơ và thứ xuất hiện trong nhật ký — luôn là chủ thể dịch vụ, không phải khóa.
Một chủ thể dịch vụ là danh tính mà một tự động hóa hành động dưới danh nghĩa đó: thứ mà một quy trình chạy với tư cách, thứ mà một kết nối tích hợp kết nối dưới danh nghĩa, và thứ mà một khóa API xác thực thành. Bạn có thể cấp cho nó nhiều khóa cùng lúc, thu hồi từng khóa một và xoay vòng chúng hằng quý mà không một dòng lịch sử nào phải đổi.
Vào Quản trị → Chủ thể dịch vụ. Mọi thao tác trên trang này — đọc danh sách, tạo, sửa, cấp khóa, gán vai trò — đều cần quyền deployment.admin.
Thanh điều hướng hiển thị mục Chủ thể dịch vụ cho bất kỳ ai có instance.admin, nhưng các thao tác lại cần deployment.admin. Nếu bạn chỉ có instance.admin, bạn thấy liên kết nhưng trang không tải được nội dung. Xem Vai trò & quyền.
Trang danh sách

Thanh công cụ có ô Tìm theo tên…, bộ lọc ba trạng thái Tất cả / Đang hoạt động / Đã vô hiệu hóa, và số lượng chủ thể ở bên phải. Danh sách trả về toàn bộ chủ thể của tổ chức trong một lần, sắp xếp theo tên — không phân trang, không có nút tải thêm. Nhấn vào bất kỳ đâu trên một hàng để mở trang chi tiết.
| Cột | Nội dung |
|---|---|
| Tên | Tên chủ thể, kèm dòng phụ Được tham chiếu từ {ngày} hoặc tuổi của bản ghi khi chưa từng được tham chiếu. |
| Trạng thái | Chip Đang hoạt động hoặc Đã vô hiệu hóa. |
| Sở hữu hồ sơ | Được phép hoặc Không được phép. |
| Thông tin xác thực | Số khóa có thể xác thực ngay lúc này — chưa thu hồi và chưa hết hạn. |
| Được tham chiếu lần đầu | Ngày chủ thể lần đầu được dùng, hoặc chip Chưa bao giờ — có thể xóa. |
| Cập nhật | Lần sửa gần nhất. |
Chân trang nhắc lại điều quan trọng nhất trong bảng: “Được tham chiếu lần đầu” được ghi khi chủ thể lần đầu khởi chạy một lượt chạy, sở hữu một hồ sơ, hoặc được một chính sách run-as nhắc tới — và không bao giờ xóa.
Ô tìm kiếm chỉ khớp tên. Nó không khớp nhãn của khóa, tiền tố token hay UUID của chủ thể.
Tạo một chủ thể dịch vụ
- Nhấn Chủ thể dịch vụ mới.
- Nhập Tên. Tên duy nhất trong tổ chức, không phân biệt hoa/thường, và hiển thị ở mọi nơi chủ thể này hành động — lượt chạy, nhật ký, chủ sở hữu hồ sơ.
- Để Được phép sở hữu hồ sơ ở trạng thái tắt trừ khi tự động hóa này cần tạo các hồ sơ do chính nó sở hữu. Mặc định là tắt.
- Nhấn Tạo.
Bạn tạo danh tính trước; việc cấp thông tin xác thực, gán vai trò, thêm vào nhóm và thêm lượt gán đơn vị đều làm từ trang chi tiết của chủ thể.
Nếu tên đã có chủ thể khác dùng, biểu mẫu báo lỗi ngay trên trường Tên: Đã có chủ thể dịch vụ mang tên này.
Trang chi tiết
Phần đầu trang hiển thị tên chủ thể, chip trạng thái, chip Được sở hữu hồ sơ khi được bật, chip Được tham chiếu từ {ngày} (hoặc Chưa bao giờ — có thể xóa), và UUID của chủ thể. Hai hành động nằm ở góc trên: Vô hiệu hóa (hoặc Kích hoạt) và Xóa.
Bốn tab — Tổng quan, Thông tin xác thực, Vai trò & nhóm, Gán đơn vị — không đổi nội dung hiển thị mà cuộn tới thẻ tương ứng. Tất cả các thẻ nằm sẵn trên cùng một trang dài.
Thẻ Danh tính là nơi sửa ba thứ: Tên, công tắc Trạng thái, và công tắc Được phép sở hữu hồ sơ. Nút Lưu chỉ sáng lên khi có thay đổi. Mô tả của thẻ nói đúng điều mở đầu trang này: Danh tính bền vững mà lượt chạy, hồ sơ và sự kiện nhật ký trỏ tới. Xoay vòng thông tin xác thực không bao giờ thay đổi nó.
Thẻ Nơi đang được dùng ở cuối trang là năm ô đếm cho biết điều gì đang giữ chủ thể này lại.
| Ô đếm | Đếm cái gì |
|---|---|
| Định nghĩa quy trình (run-as) | Số quy trình có chính sách chạy với tư cách trỏ tới chủ thể này. |
| Lượt chạy quy trình | Số lượt chạy đã đóng băng chủ thể này làm chủ thể thực thi. |
| Hồ sơ sở hữu | Số hồ sơ thực thể do chủ thể này đứng tên chủ sở hữu. |
| Lượt chạy hàng loạt | Số lượt chạy hàng loạt được quy cho chủ thể này. |
| Kết nối tích hợp | Số kết nối tích hợp hành động dưới danh nghĩa chủ thể này. |
Nếu có người khác sửa chủ thể này trong lúc bạn đang mở trang, nút Lưu trả về: Có người khác đã thay đổi mục này kể từ khi bạn mở. Hãy tải lại và thử lại. Đây là bảo vệ chống ghi đè, không phải lỗi.
Thông tin xác thực
Một chủ thể có thể giữ nhiều khóa API cùng lúc — đó chính là cách xoay vòng khóa mà không có khoảng gián đoạn: cấp khóa mới, chuyển ứng dụng khách sang khóa đó, rồi thu hồi khóa cũ.
Cấp một thông tin xác thực
- Cuộn tới thẻ Thông tin xác thực rồi nhấn Cấp thông tin xác thực.
- Nhập Nhãn — khóa này dùng để làm gì: ngày xoay vòng, ứng dụng khách, môi trường.
- Chọn hạn dùng: 30 ngày, 90 ngày, 1 năm (mặc định) hoặc Không bao giờ.
- Ở mục Quyền, giữ Mọi quyền từ vai trò của chủ thể, hoặc chọn Chỉ những quyền tôi chọn rồi đánh dấu đúng những quyền khóa này cần.
- Xác nhận. Bí mật hiện ra một lần trong khung cảnh báo phía trên bảng, kèm nút Sao chép và Xong.
| Cột trong bảng khóa | Nội dung |
|---|---|
| Nhãn | Tên bạn đặt lúc cấp. |
| Tiền tố | 12 ký tự đầu của token, dạng afk_xxxxxxxx… — đủ để nhận ra khóa mà không lộ bí mật. |
| Quyền | Các quyền mà khóa này được thu hẹp vào, hoặc Mọi quyền của vai trò. |
| Tạo lúc | Thời điểm cấp. |
| Hết hạn | Ngày hết hạn, hoặc chưa bao giờ. |
| Dùng lần cuối | Khoảng thời gian từ lần xác thực gần nhất, hoặc chưa bao giờ. |
| Trạng thái | Chip Đang hoạt động, hoặc Đã thu hồi {ngày}. |
Bí mật chỉ hiển thị một lần, ngay lúc tạo. Hệ thống chỉ lưu bản băm và tiền tố hiển thị. Nhấn Xong hoặc tải lại trang là mất vĩnh viễn — không có nút hiện lại, không có cách khôi phục. Cách duy nhất khi lỡ mất là cấp một khóa mới rồi thu hồi khóa cũ.
Chủ thể đã vô hiệu hóa không nhận khóa mới: yêu cầu bị từ chối kèm Chủ thể này đã bị vô hiệu hóa — hãy kích hoạt trước khi cấp thông tin xác thực. Hộp thoại cũng cảnh báo trước khi bạn bấm. Một hạn dùng nằm trong quá khứ cũng bị từ chối — một khóa sinh ra đã hết hạn vẫn là một bí mật bị lộ mà chẳng xác thực được gì.
Chọn quyền chỉ thu hẹp một khóa, không bao giờ nới rộng: khóa được làm gì là các quyền hiện tại từ vai trò của chủ thể, giao với những quyền bạn đã đánh dấu, tính lại ở mỗi yêu cầu. Đánh dấu một quyền mà vai trò không cấp thì không thêm được gì, và gỡ một quyền khỏi vai trò là lấy nó khỏi mọi khóa ngay từ lần gọi kế tiếp. Lựa chọn này cố định trong suốt vòng đời của khóa — muốn đổi, hãy cấp khóa mới rồi thu hồi khóa cũ. Không đánh dấu quyền nào sẽ bị từ chối (Hãy chọn ít nhất một quyền.), và API từ chối danh sách rỗng hoặc tên quyền không tồn tại với 422 CREDENTIAL_SCOPE_INVALID.
entity.records.elevated chỉ tới được một khóa khi nó vừa nằm trong vai trò của chủ thể vừa được đánh dấu trên khóa. Một khóa cấp với Mọi quyền từ vai trò của chủ thể sẽ mang quyền đó bất cứ khi nào vai trò có nó, vì vậy hãy cấp khóa cho tích hợp với đúng những gì nó cần.
Thu hồi một thông tin xác thực
Nhấn Thu hồi trên hàng của khóa. Hộp thoại xác nhận nói rõ hệ quả: Các yêu cầu dùng khóa này ngừng được xác thực ngay lập tức. Những lượt chạy đã khởi động vẫn giữ {chủ thể} làm chủ thể — thu hồi thông tin xác thực không bao giờ viết lại lịch sử.
Thu hồi tác động lên đúng một thông tin xác thực và không gì khác. Danh tính vẫn còn nguyên cùng vai trò, nhóm, quyền truy cập, lượt gán đơn vị và toàn bộ lịch sử được quy cho nó — và mọi khóa còn sống khác của chủ thể đó vẫn xác thực bình thường.
Hệ quả cần nói thẳng: nếu bạn thu hồi một khóa để cắt đường một tích hợp, bạn chưa cắt được chừng nào chủ thể còn giữ khóa khác. Hãy nhìn cột Thông tin xác thực ngoài danh sách trước khi kết luận. Muốn dừng cả danh tính trong một thao tác, hãy Vô hiệu hóa chủ thể — mọi khóa của nó ngừng hoạt động cùng lúc.
Hàng đã thu hồi vẫn nằm lại trong bảng, làm mờ đi, kèm ngày thu hồi. Nó là lịch sử chứ không phải một ô trống để dùng lại.
Cột Trạng thái chỉ nhìn vào việc khóa đã bị thu hồi hay chưa. Vì vậy một khóa đã hết hạn nhưng chưa thu hồi vẫn hiện chip Đang hoạt động bên cạnh một ngày hết hạn trong quá khứ, trong khi con số ở cột Thông tin xác thực ngoài danh sách lại loại khóa hết hạn ra. Hai con số lệch nhau ở trường hợp này là bình thường, không phải lỗi hiển thị.
Thông tin xác thực gọi được những gì
Một khóa chỉ tới được API công khai: các thao tác liệt kê trong tài liệu API ở /api/docs (trừ khi bản triển khai tắt tài liệu đó). Mọi điểm cuối khác — những điểm cuối chính ứng dụng web dùng — trả 403 với loại ENDPOINT_NOT_PUBLIC. Mọi lỗi là một tài liệu application/problem+json mang một type ổn định và request_id để trích dẫn khi bạn báo lỗi.
| Khóa gọi gì | Nhận được gì |
|---|---|
GET /api/v1/caller | Khóa đang hành động dưới danh nghĩa ai: chủ thể, tổ chức, thông tin xác thực và các quyền nó giữ ngay lúc này. Cách nhanh nhất để kiểm tra phạm vi còn lại những gì. |
| Hồ sơ, thực thể, khởi động quy trình, lượt chạy, lượt chạy hàng loạt, tệp đính kèm, bảng điều khiển, người dùng, nhóm, đơn vị | Những gì vai trò của chủ thể, quyền của khóa và các quyền truy cập thực thể cho phép — đúng các hàng, đúng các trường nhạy cảm bị ẩn mà một người có vai trò và quyền truy cập đó sẽ thấy. |
| Danh sách công việc của tôi (My Work), nhận, trả lại, giao lại và giao việc, gửi một bước, và thông báo | 403 với loại USER_IDENTITY_REQUIRED. Những người được đề nghị một việc chỉ gồm người, nên các thao tác này bị từ chối rõ tên thay vì hỏng ở một chỗ nào đó về sau. |
Đọc bước của một công việc, GET /api/v1/entities/{entity_id}/records/{record_id}/step | Chỉ khi chủ thể có quyền giao việc (assign) chạm tới bản ghi của công việc, hoặc instance.admin; nếu không thì 404, y như một công việc không tồn tại. Khóa không thể được cấp quyền về công việc: không còn quyền nào như vậy. |
| Một lượt chạy | Những lượt chạy do khóa của chủ thể này khởi động. Mọi lượt chạy khi có instance.read.any — để đọc, không để hủy, tạm dừng, tiếp tục hay chạy lại — hoặc instance.admin. |
| Một bảng điều khiển | Bảng được chia sẻ với tổ chức hoặc với một nhóm chủ thể thuộc về, hoặc mọi bảng khi có dashboard.manage.any. Mọi ô đều được tính trong phạm vi của chính chủ thể. |
Những gì một khóa làm được ghi nhận cho chủ thể và thông tin xác thực: lượt chạy nó khởi động, hồ sơ nó tạo hoặc sửa, và lượt đọc nâng quyền đều nêu cả hai. Đó là lý do thu hồi một khóa không bao giờ viết lại lịch sử — và vì sao nhãn của khóa đáng được đặt cẩn thận.
Về các quyền được nhắc tới trong bảng, xem Vai trò & quyền.
Cách gọi API bằng khóa — xác thực, lỗi, phân trang, tài liệu tham chiếu và ví dụ theo từng mảng — nằm ở mục API, bắt đầu từ Xác thực.
Vai trò — trần quyền
Thẻ Vai trò liệt kê các vai trò đã cấp cho chủ thể, mỗi vai trò kèm chip Vai trò hệ thống khi phù hợp và một liên kết gỡ. Bộ chọn Cấp một vai trò… ở cuối thẻ lấy từ đúng danh mục vai trò mà các trang người dùng dùng. Mô tả của thẻ tóm tắt vai trò của nó trong hệ thống: Trần quyền thô. Các quyền chi tiết chỉ có thể thu hẹp những gì vai trò cho phép.
Quyền không nằm trên khóa. Mỗi yêu cầu giải quyết quyền từ các vai trò của chủ thể tại thời điểm gọi, nên sửa một vai trò là đổi quyền cho mọi khóa của chủ thể đó cùng lúc, có hiệu lực từ lần gọi kế tiếp. Cách tạo và sửa vai trò xem tại Vai trò & quyền.
Nhóm
Thẻ Nhóm cho phép thêm chủ thể vào nhóm bằng bộ chọn Thêm vào nhóm…, và mô tả của thẻ nói chính xác điều tư cách thành viên đem lại: Quyền của nhóm áp dụng cho chủ thể này đúng như với một thành viên là người dùng.
Đó là toàn bộ những gì nó làm — những gì đến qua một quyền hay một lượt chia sẻ dành cho nhóm đó: hồ sơ của thực thể Hạn chế có chính sách truy cập nêu tên nhóm, quy trình có quyền khởi động nêu tên nhóm, và bảng điều khiển được chia sẻ với nhóm. Một quyền nêu tên chủ thể trực tiếp cũng vậy: nó tới được chủ thể ở mọi lần gọi bằng khóa của chủ thể, không chỉ bên trong một lượt chạy. Chủ thể dịch vụ không bao giờ được giao công việc, không bao giờ nhận thông báo, và không bao giờ xuất hiện trong bộ chọn thành viên. Những màn hình ấy chỉ đọc danh sách thành viên là người dùng, mà một chủ thể dịch vụ thì không bao giờ nằm trong đó.
Tư cách thành viên này vô hình từ phía màn hình nhóm: trang Quản trị → Nhóm không có giao diện cho chủ thể dịch vụ, và số thành viên chỉ đếm người dùng. Một nhóm hiện 0 thành viên vẫn có thể từ chối xóa với thông báo GROUP_IN_USE — cannot delete a group that still has service-principal members. Nơi duy nhất tìm và gỡ thành viên đó là thẻ Nhóm trên trang chủ thể dịch vụ. Xem thêm Nhóm.
Được phép sở hữu hồ sơ
Công tắc Được phép sở hữu hồ sơ mặc định tắt và kiểm soát hai thứ cùng lúc: chủ thể có được ghi làm chủ sở hữu của một hồ sơ hay không, và một quyền có phạm vi own nhắc tới chủ thể này có nghĩa lý gì hay không. Hai điều đó luôn đi cùng nhau, không thể lệch nhau.
Khi tắt, mọi phạm vi own nhắc tới chủ thể này không khớp hồ sơ nào cả, và một lệnh tạo hồ sơ theo phạm vi own bị từ chối kèm Service principal này không đủ điều kiện sở hữu nên quyền tạo theo phạm vi “của tôi” không áp dụng.
Trong trình sửa chính sách truy cập của thực thể, tab chủ thể dịch vụ gắn chip Được sở hữu hồ sơ cho những chủ thể đủ điều kiện và ghi chữ mờ không được phép sở hữu cho số còn lại; nút phạm vi own bị vô hiệu hóa với chủ thể không đủ điều kiện. Đó là gợi ý ở giao diện: một quyền như vậy vẫn lưu được qua API và sau đó lặng lẽ không khớp hồ sơ nào. Xem Quyền truy cập hồ sơ.
Rút lại quyền sở hữu
Nếu đang có thứ phụ thuộc vào quyền này, việc tắt công tắc không được áp dụng ngay. Hệ thống trả về hộp thoại Rút quyền sở hữu hồ sơ? với ba ô đếm — Hồ sơ đang sở hữu, Quyền trực tiếp có phạm vi own, Quyền qua nhóm có phạm vi own — và bạn phải tích xác nhận rồi chọn Rút quyền (hoặc Giữ quyền để bỏ qua).
Rút quyền không đổi chủ sở hữu của bất kỳ hồ sơ nào. Các hồ sơ đang có giữ nguyên chủ. Thứ thay đổi, và thay đổi một cách không nhìn thấy được, là các phạm vi own nhắc tới chủ thể này ngừng khớp bất cứ gì, còn mọi lệnh tạo theo phạm vi own thì bị từ chối. Đó chính là lý do hộp thoại xác nhận tồn tại.
Vô hiệu hóa và xóa
Vô hiệu hóa và xóa trả lời hai câu hỏi khác nhau. Vô hiệu hóa là tạm dừng danh tính này; xóa là danh tính này chưa từng tồn tại một cách có ý nghĩa. Chỉ một trong hai luôn khả dụng.
Vô hiệu hóa
Vô hiệu hóa giữ lại mọi thứ trừ khả năng xác thực. Vai trò, nhóm, quyền, lượt gán đơn vị, hồ sơ sở hữu và lịch sử đều được giữ nguyên; mọi khóa ngừng xác thực ngay lập tức; và bạn có thể kích hoạt lại bất cứ lúc nào. Hộp thoại xác nhận nói rõ số khóa đang hoạt động sẽ ngừng và cảnh báo rằng các quy trình có chính sách chạy với tư cách trỏ tới chủ thể này sẽ không khởi chạy được cho đến khi nó được kích hoạt lại — lúc đó lượt khởi chạy bị từ chối kèm Service principal đó đã bị vô hiệu hóa. Hãy chọn một cái đang hoạt động.
Có hai cách vô hiệu hóa và chúng không giống nhau. Nút Vô hiệu hóa ở đầu trang mở hộp thoại xác nhận nêu số khóa bị ảnh hưởng và những gì được giữ lại. Công tắc Trạng thái trong thẻ Danh tính, cộng với nút Lưu, làm đúng việc đó mà không hỏi lại lần nào.
Một lượt chạy đã đóng băng chủ thể của nó ngay lúc khởi động, nên vô hiệu hóa không dừng ngay các lượt đang chạy: thao tác hồ sơ kế tiếp của chúng bị chặn và lượt chạy tạm dừng, rồi xuất hiện trong báo cáo tình trạng truy cập ở nhóm phát hiện dành cho tự động hóa. Vô hiệu hóa chỉ từ chối các lượt khởi chạy mới một cách tức thì. Ngoài ra, chủ thể đã vô hiệu hóa biến mất khỏi mọi bộ chọn trong sản phẩm — chạy với tư cách, quyền thực thể, lượt gán đơn vị đều chỉ liệt kê chủ thể đang hoạt động.
Xóa
Xóa chỉ hợp lệ khi chủ thể chưa bao giờ được tham chiếu. Khi đó hộp thoại xác nhận nói ngắn gọn: Chủ thể này chưa bao giờ được tham chiếu, nên xóa sẽ không để lại gì. Lệnh xóa kéo theo phần cấu hình của chủ thể — khóa, vai trò, tư cách thành viên nhóm, lượt gán đơn vị và các quyền cấp cho nó — vì đó là bộ phận của danh tính chứ không phải tham chiếu tới nó.
Dấu “đã tham chiếu” được ghi vào lần đầu tiên xảy ra một trong các việc sau:
- Một lượt chạy khởi động dưới danh nghĩa chủ thể này.
- Một định nghĩa quy trình được tạo hoặc được đặt chính sách chạy với tư cách trỏ tới nó.
- Một bước ghi hồ sơ thực thể dưới danh nghĩa nó, hoặc một hồ sơ được tạo do nó sở hữu.
- Một kết nối tích hợp được gán cho nó.
- Một lượt chạy được đặt chủ thể thực thi là nó.
Chủ thể đã được tham chiếu trả lời lệnh xóa bằng hộp thoại Không thể xóa “{tên}”, kèm ngày tham chiếu đầu tiên, năm ô đếm tham chiếu và nút Vô hiệu hóa thay vào đó. Lý do được nêu thẳng: Xóa nó sẽ khiến các lượt chạy, hồ sơ và sự kiện nhật ký trỏ vào khoảng trống, nên danh tính được giữ lại.
“Đã tham chiếu” là chốt một chiều. Nó được ghi trong cùng giao dịch với tham chiếu đầu tiên và không bao giờ được xóa đi. Gỡ hết chính sách chạy với tư cách, chuyển hết hồ sơ sang chủ khác và bỏ hết kết nối tích hợp cũng không làm chủ thể xóa được trở lại. Kết thúc vòng đời duy nhất của một chủ thể đã dùng là Vô hiệu hóa.
Ngược lại, tạo một chủ thể rồi vô hiệu hóa nó mà chưa từng dùng thì nó vẫn xóa được. “Đã vô hiệu hóa” không đồng nghĩa với “đã dùng”.
Gán đơn vị
Thẻ Gán đơn vị liệt kê các đơn vị tổ chức mà chủ thể được đặt vào, với chip Chính và các hành động đặt/bỏ đơn vị chính. Tự việc được gán không đem lại quyền truy cập nào — nhưng lượt gán không còn chỉ là giá trị mặc định khi tạo hồ sơ: một lượt cấp quyền dùng phạm vi theo lượt gán (Đơn vị của họ / Đơn vị của họ và mọi cấp bên dưới) lấy chính các lượt gán này làm tham số, nên với chủ thể được nêu trong một lượt như thế, thêm hay gỡ một dòng ở đây là nới ra hay thu hẹp ngay tầm với của nó — và chủ thể không còn lượt gán nào thì phạm vi ấy không khớp hồ sơ nào cả. Xem Quyền truy cập hồ sơ.
Lượt gán quyết định hồ sơ mới do chủ thể tạo ra rơi vào đơn vị nào — nhưng nó là phương án dự phòng, không phải lời cuối. Một lượt chạy hành động dưới danh nghĩa chủ thể này lưu hồ sơ vào nơi mà ô Đơn vị đích (Destination unit) trên bước Bản ghi thực thể chỉ định; hồ sơ chỉ rơi vào lượt gán chính đang hoạt động của chủ thể khi bước ấy không tự nêu ra đơn vị nào — tức là ở mặc định Đơn vị của chủ thể (Principal's unit), và ở Đơn vị của bản ghi kích hoạt (Trigger's unit) khi lượt chạy không có bản ghi kích hoạt, hoặc bản ghi ấy không nằm ở đơn vị nào. Xem Bản ghi thực thể.
Một chủ thể có nhiều nhất một lượt gán chính; đặt một lượt gán làm chính sẽ hạ lượt gán chính cũ xuống, và gỡ lượt gán chính đi thì không lượt nào được thăng lên thay. Xem Đơn vị tổ chức.
Vì thế “chủ thể này chưa có lượt gán chính” tự nó chưa phải một lỗi. Nó chỉ làm hỏng những bước phải lùi về chủ thể để tìm đơn vị — ô Đơn vị đích ở mặc định Đơn vị của chủ thể, và ở Đơn vị của bản ghi kích hoạt trên một lượt chạy không có bản ghi kích hoạt: các bước ấy chặn lượt chạy với nguyên nhân destination_ineligible vì không còn đơn vị nào để hồ sơ rơi vào — còn bước tự chỉ đích danh đơn vị thì vẫn chạy bình thường. Điều lượt gán không bao giờ tự làm là cấp quyền: đích đến nào cũng vẫn phải là đơn vị mà chủ thể vốn đã được phép tạo hồ sơ vào — trên thực thể ở chế độ Hạn chế, đó là phạm vi của lượt cấp quyền Tạo. (Riêng khi lượt cấp quyền ấy dùng phạm vi theo lượt gán, các đơn vị được phép chính là các đơn vị chủ thể được gán vào — nên một lượt gán mới cũng mở thêm một đích hợp lệ, qua đúng lượt cấp quyền đó.)
Chủ thể dịch vụ còn xuất hiện ở đâu
Chạy với tư cách
Trong trình thiết kế quy trình, điều khiển Chạy với tư cách cho phép chọn Một service principal rồi chỉ định một chủ thể đang hoạt động: Một service principal đang hoạt động, bất kể ai khởi chạy. Bắt buộc với mọi lượt khởi chạy không có người. Chủ thể được giải quyết lại từ bản ghi sống ở mỗi lần khởi chạy, và lượt khởi chạy đó đánh dấu chủ thể là đã được tham chiếu.
Lựa chọn này được đóng băng lên lượt chạy ngay lúc khởi động. Sửa chính sách không bao giờ đổi một lượt chạy đang chạy dở. Chi tiết xem Chạy với tư cách.
Kết nối tích hợp
Một kết nối tích hợp có thể được gán một chủ thể dịch vụ, và chủ thể đó quyết định mọi công việc theo lịch trên kết nối ấy hành động dưới danh nghĩa ai. Bỏ gán sẽ dừng vòng quét đồng bộ của kết nối đó.
Hôm nay chưa có màn hình nào trong Tích hợp để đọc hoặc đặt việc gán này. Ô đếm Kết nối tích hợp trên trang chủ thể cho thấy kết quả, nhưng bản thân việc gán chỉ được thực hiện bởi bước khởi tạo lúc triển khai hoặc bằng cách gọi API trực tiếp.
Khóa API và trang Tích hợp MCP
Trang Quản trị → Tích hợp MCP vẫn còn mục Khóa API cũ, và nó chỉ hiển thị thông tin xác thực chứ không bao giờ hiển thị danh tính. Tạo một khóa ở đó sẽ âm thầm tạo thêm một chủ thể dịch vụ mới và một vai trò mới tên “Automation: {tên khóa}”; cả hai sẽ xuất hiện trong danh sách chủ thể và danh sách vai trò dù bạn không yêu cầu, và tên trùng sẽ được thêm hậu tố — Zapier, Zapier (2).
Xóa một khóa ở trang đó không xóa chủ thể dịch vụ mà nó xác thực thành. Nó chỉ thu hồi đúng một thông tin xác thực: danh tính, vai trò, quyền, lượt gán và toàn bộ lịch sử vẫn còn, và chủ thể vẫn nằm trong Quản trị → Chủ thể dịch vụ. Đây là thay đổi hành vi lớn nhất đối với người quen dùng trang MCP cũ.
Cột Quyền trên trang đó không còn là thuộc tính của khóa nữa — nó là tập quyền hiện tại suy ra từ vai trò của chủ thể, tính lại mỗi lần liệt kê. Sửa vai trò là đổi cột đó cho mọi khóa của chủ thể. Phụ đề của trang vẫn viết theo lối cũ; hãy đọc trang này thay vì tin phụ đề đó. Về điểm cuối MCP, xem Máy chủ MCP. Lưu ý giao diện chưa thống nhất cách gọi: hộp thoại Chạy với tư cách viết là service principal, trang Tích hợp MCP viết là Principal dịch vụ — đều chỉ cùng một khái niệm.
Ví dụ
Bốn trong năm chủ thể trên trang danh sách, mỗi cái trả lời một câu hỏi khác nhau. Cả tổ chức, cây đơn vị và bốn chính sách nằm sau ví dụ này được dựng từng bước tại Ví dụ: phân quyền cho một tổ chức; ở đây chỉ nhìn phần thuộc về chủ thể dịch vụ.
Invoice Import cần ba thứ, và không thứ nào kéo theo thứ nào
Mỗi đêm, quy trình Nhập hóa đơn đêm khởi chạy theo lịch và biến hóa đơn rơi vào một thư mục theo dõi thành hồ sơ Hồ sơ vụ việc. Nó chạy với tư cách Invoice Import. Ba thứ dưới đây nằm ở ba chỗ khác nhau, không thứ nào suy ra được từ thứ khác, và với cách dựng đơn giản nhất thì cả ba đều cần:
| Thứ cần có | Đặt ở đâu | Thiếu nó thì sao |
|---|---|---|
Một vai trò mang quyền thô entity.write | Thẻ Vai trò trên trang của chủ thể, qua bộ chọn Cấp một vai trò…. | Lượt cấp quyền bên dưới vẫn lưu được nhưng nằm trên mức trần — nó không đem lại gì cho đến khi vai trò được mở rộng. |
| Một lượt cấp quyền trên Hồ sơ vụ việc: Tạo ▪ phạm vi Đơn vị, đơn vị neo Accounts Payable | Tab Quyền truy cập của thực thể, không phải trang này. | Thực thể đang ở chế độ Hạn chế: không có quyền phù hợp nghĩa là không hồ sơ nào. |
| Một lượt gán vào Accounts Payable, mang chip Chính | Thẻ Gán đơn vị trên trang của chủ thể. | Chỉ cần khi bước tạo hồ sơ không tự nêu ra đơn vị — ô Đơn vị đích để ở mặc định Đơn vị của chủ thể: khi đó hồ sơ mới không có đơn vị nào để rơi vào, nên lượt chạy bị chặn với nguyên nhân destination_ineligible. |
Dòng thứ ba là dòng duy nhất có cách thay: nếu bước Bản ghi thực thể của quy trình đặt ô Đơn vị đích thành Một đơn vị (A unit) ▪ Accounts Payable, hồ sơ vẫn được lưu đúng chỗ dù chủ thể không có lượt gán nào. Dòng thứ hai thì không có cách thay: ô Đơn vị đích chỉ chọn trong số các đơn vị mà chủ thể vốn đã được phép lưu vào, nên thiếu lượt cấp quyền thì đích đến nào cũng bị từ chối. Xem Bản ghi thực thể.
Ngoài ra công tắc Được phép sở hữu hồ sơ của Invoice Import phải bật: các bước sau trong chính quy trình đó đọc lại những hồ sơ nó vừa tạo theo phạm vi Của mình.
Ba dòng trên là ba màn hình và ba lần lưu khác nhau. Vai trò là trần quyền, lượt cấp quyền là hồ sơ nào, lượt gán là hồ sơ mới rơi vào đâu khi bước không tự chỉ định — không thứ nào tự sinh ra thứ nào, và không có thông báo nào cho bạn biết đang thiếu thứ nào. Toàn bộ tổ chức nằm ở Ví dụ: phân quyền cho một tổ chức.
Reporting Export không được phép sở hữu hồ sơ — và đó là cài đặt đúng cho nó
Reporting Export chạy một bản xuất báo cáo hằng đêm: nó đọc, tổng hợp, rồi ghi ra tệp. Nó không bao giờ tạo hồ sơ để rồi phải đọc lại, nên công tắc Được phép sở hữu hồ sơ của nó để tắt. Kết quả là không hồ sơ nào trong hệ thống có thể mang tên nó ở ô chủ sở hữu — và nếu có người lỡ cấp cho nó một phạm vi Của mình, lượt cấp quyền ấy lưu được rồi lặng lẽ không khớp gì cả.
Đúng công tắc đó, tắt trên Invoice Import, sẽ làm hỏng việc: hồ sơ nó tạo ra không có chủ, còn bước đọc lại theo phạm vi Của mình trả về rỗng mà không báo lỗi ở đâu. Hai chủ thể, một công tắc, hai câu trả lời ngược nhau — vì thế nó là thuộc tính của từng danh tính chứ không phải một mặc định chung.
Xoay vòng khóa của Invoice Import mà tự động hóa không gián đoạn
Invoice Import đang giữ hai khóa: khóa cũ mà ứng dụng khách đang dùng, và khóa mới bạn vừa cấp. Đó là toàn bộ quy trình xoay vòng:
- Ở thẻ Thông tin xác thực, nhấn Cấp thông tin xác thực, đặt Nhãn theo ngày xoay vòng, chọn 90 ngày, rồi sao chép bí mật.
- Chuyển ứng dụng khách sang khóa mới và chờ cột Dùng lần cuối của khóa đó đổi từ chưa bao giờ sang một mốc thời gian.
- Nhấn Thu hồi trên khóa cũ.
Danh tính không đổi, vai trò không đổi, lượt cấp quyền không dịch đi đâu, lượt gán cũng vậy. Các lượt chạy đang chạy dở không nhận thấy điều gì, và mọi lượt chạy trong quá khứ vẫn trỏ về đúng Invoice Import.
Thứ tự là quan trọng: thu hồi khóa cũ trước bước 2 sẽ làm tự động hóa đứng lại cho tới khi ứng dụng khách được sửa. Và nếu mục đích của bạn là chặn Invoice Import chứ không phải xoay vòng nó, thu hồi một khóa chẳng chặn được gì — hãy nhìn cột Thông tin xác thực ngoài trang danh sách cho tới khi nó về 0, hoặc dùng Vô hiệu hóa để dừng cả danh tính trong một thao tác.
Legacy Importer chỉ vô hiệu hóa được; Sandbox Bot vẫn xóa được
Hai chủ thể cùng nằm trong danh sách, cùng không còn cần đến nữa, nhưng kết thúc khác nhau — chỉ vì một trong hai đã từng được dùng.
| Legacy Importer | Sandbox Bot | |
|---|---|---|
| Được tham chiếu lần đầu | Một ngày trong quá khứ. | Chip Chưa bao giờ — có thể xóa. |
| Nhấn Xóa | Hộp thoại Không thể xóa “Legacy Importer”, kèm các ô đếm tham chiếu và nút Vô hiệu hóa thay vào đó. | Một hộp thoại xác nhận ngắn; xóa xong không để lại gì. |
| Cách kết thúc vòng đời | Vô hiệu hóa, vĩnh viễn. | Xóa. |
Legacy Importer hiện đã vô hiệu hóa và giữ 0 thông tin xác thực còn sống — vậy mà vẫn không xóa được. Nó từng khởi chạy các lượt chạy, những lượt chạy đó còn nằm trong lịch sử, và xóa danh tính đi sẽ khiến chúng trỏ vào khoảng trống. Gỡ hết mọi thứ đang trỏ tới nó cũng không đảo ngược được điều đó.