Kiểm soát quyền truy cập trong Google Cloud Search dựa trên Tài khoản Google của người dùng. Khi lập chỉ mục nội dung, tất cả các ACL trên các mục phải phân giải thành mã nhận dạng nhóm hoặc mã nhận dạng người dùng Google (địa chỉ email) hợp lệ.
Trong nhiều trường hợp, kho lưu trữ không có kiến thức trực tiếp về Tài khoản Google. Thay vào đó, người dùng có thể được biểu thị bằng tài khoản cục bộ hoặc sử dụng phương thức đăng nhập liên kết với nhà cung cấp danh tính và mã nhận dạng (ngoài địa chỉ email của người dùng) để xác định từng tài khoản. Mã nhận dạng này được gọi là mã nhận dạng bên ngoài.
Được tạo bằng Bảng điều khiển dành cho quản trị viên, Nguồn nhận dạng giúp thu hẹp khoảng cách này giữa các hệ thống nhận dạng bằng cách:
- Xác định trường người dùng tuỳ chỉnh để lưu trữ mã nhận dạng bên ngoài. Trường này dùng để phân giải các mã nhận dạng bên ngoài thành một Tài khoản Google.
- Xác định không gian tên cho nhóm bảo mật do một kho lưu trữ hoặc nhà cung cấp danh tính quản lý.
Sử dụng nguồn nhận dạng khi:
- Kho lưu trữ không biết địa chỉ email chính của người dùng trong Google Workspace hoặc Google Cloud Directory.
- Kho lưu trữ xác định các nhóm để kiểm soát quyền truy cập, nhưng các nhóm này không tương ứng với các nhóm dựa trên email trong Google Workspace.
Các nguồn nhận dạng giúp cải thiện hiệu quả lập chỉ mục bằng cách tách hoạt động lập chỉ mục khỏi ánh xạ danh tính. Quá trình phân tách này cho phép bạn trì hoãn việc tra cứu người dùng khi tạo danh sách kiểm soát quyền truy cập (ACL) và các mục lập chỉ mục.
Ví dụ về phương thức triển khai
Hình 1 cho thấy một ví dụ về một quá trình triển khai trong đó doanh nghiệp sử dụng cả kho lưu trữ tại chỗ và kho lưu trữ trên đám mây. Mỗi kho lưu trữ sử dụng một loại mã nhận dạng bên ngoài khác nhau để tham chiếu đến người dùng.
Kho lưu trữ 1 xác định người dùng bằng cách sử dụng địa chỉ email đã xác nhận bằng SAML. Vì kho lưu trữ 1 có biết địa chỉ email chính của người dùng trong Google Workspace hoặc Cloud Directory, nên không cần nguồn nhận dạng.
Kho lưu trữ 2 tích hợp trực tiếp với một thư mục tại chỗ và xác định người dùng bằng thuộc tính sAMAccountName
. Vì kho lưu trữ 2 sử dụng thuộc tính sAMAccountName
làm mã nhận dạng bên ngoài, nên bạn cần có một nguồn nhận dạng.
Tạo nguồn nhận dạng
Nếu bạn cần có một nguồn nhận dạng, hãy xem bài viết Liên kết danh tính người dùng trong Cloud Search.
Bạn phải tạo nguồn nhận dạng trước khi tạo trình kết nối nội dung vì bạn sẽ cần mã nguồn nhận dạng để tạo ACL và dữ liệu lập chỉ mục. Như đã đề cập trước đó, việc tạo nguồn nhận dạng cũng sẽ tạo một thuộc tính người dùng tuỳ chỉnh trong Thư mục đám mây. Sử dụng thuộc tính này để ghi lại mã nhận dạng bên ngoài cho mỗi người dùng trong kho lưu trữ của bạn. Thuộc tính này được đặt tên theo quy ước IDENTITY_SOURCE_ID_identity
.
Bảng sau đây cho thấy hai nguồn nhận dạng, một để giữ tên tài khoản SAM (sAMAccountName) làm mã nhận dạng bên ngoài và một để giữ mã nhận dạng người dùng (uid) làm mã nhận dạng bên ngoài.
Nguồn nhận dạng | thuộc tính người dùng | mã nhận dạng bên ngoài |
---|---|---|
id1 | id1_identity | sAMAccountName |
id2 | id2_identity | uid |
Tạo một nguồn nhận dạng cho mỗi mã nhận dạng bên ngoài có thể có, dùng để tham chiếu đến một người dùng trong doanh nghiệp.
Bảng sau đây cho biết cách người dùng có một Tài khoản Google và hai mã nhận dạng bên ngoài (id1_identity và id2_identity) và các giá trị của họ xuất hiện trong Thư mục đám mây:
người dùng | id1_identity | id2_identity | |
---|---|---|---|
Ann | ann@example.com | ví dụ\ann | 1001 |
Bạn có thể tham chiếu đến cùng một người dùng bằng cách sử dụng 3 mã nhận dạng khác nhau (email Google, sAMAccountName và uid) khi tạo các ACL cho việc lập chỉ mục.
Ghi danh sách kiểm soát quyền truy cập (ACL) của người dùng
Hãy sử dụng phương thức getUserPrincpal() hoặc phương thức getGroupPrincipal() để tạo đối tượng chính bằng mã nhận dạng bên ngoài được cung cấp.
Ví dụ sau đây minh hoạ cách truy xuất các quyền đối với tệp. Các quyền này bao gồm tên của từng người dùng có quyền truy cập vào tệp đó.
Đoạn mã sau đây cho biết cách tạo đối tượng chính là chủ sở hữu bằng mã nhận dạng bên ngoài (externalUserName
) được lưu trữ trong các thuộc tính.
Cuối cùng, đoạn mã sau đây cho biết cách tạo các đối tượng chính có vai trò người đọc tệp.
Sau khi có danh sách người đọc và chủ sở hữu, bạn có thể tạo ACL:
API REST cơ bản sử dụng mẫu identitysources/IDENTITY_SOURCE_ID/users/EXTERNAL_ID
cho mã nhận dạng khi tạo đối tượng chính. Xem lại các bảng trước, nếu bạn tạo ACL bằng id1_identity
của Ann (SAMAccountName), mã nhận dạng này sẽ phân giải thành:
identitysources/id1_identity/users/example/ann
Toàn bộ mã nhận dạng này được gọi là mã nhận dạng trung gian của người dùng vì nó cung cấp cầu nối giữa mã nhận dạng bên ngoài và mã nhận dạng của Google được lưu trữ bằng Thư mục đám mây.
Để biết thêm thông tin về cách lập mô hình các ACL dùng cho kho lưu trữ, hãy xem phần ACL.
Nhóm bản đồ
Nguồn nhận dạng cũng đóng vai trò là không gian tên cho các nhóm được sử dụng trong ACL. Bạn có thể sử dụng tính năng không gian tên này để tạo và ánh xạ các nhóm chỉ dùng cho mục đích bảo mật hoặc các nhóm cục bộ được dùng trong kho lưu trữ.
Hãy dùng API Cloud Identity Groups để tạo nhóm và quản lý các thành viên. Để liên kết nhóm với một nguồn nhận dạng, hãy sử dụng tên tài nguyên nguồn nhận dạng làm không gian tên nhóm.
Đoạn mã sau đây cho biết cách tạo nhóm bằng API Cloud Identity Groups:
Tạo Danh sách kiểm soát quyền truy cập (ACL) của nhóm
Để tạo Danh sách kiểm soát quyền truy cập (ACL) của nhóm, hãy sử dụng phương thức getGroupPrincipal() để tạo một thành phần chính của nhóm bằng mã nhận dạng bên ngoài được cung cấp. Sau đó, hãy tạo ACL bằng cách sử dụng lớp Acl.Builder như sau:
Trình kết nối danh tính
Mặc dù bạn có thể sử dụng mã nhận dạng bên ngoài và không phải của Google để tạo ACL và các mục chỉ mục, nhưng người dùng không thể xem các mục trong nội dung tìm kiếm cho đến khi mã nhận dạng bên ngoài của họ phân giải thành mã nhận dạng Google trong Thư mục đám mây. Có 3 cách để đảm bảo Cloud Directory biết cả mã nhận dạng Google và mã nhận dạng bên ngoài của người dùng:
- Cập nhật từng hồ sơ người dùng theo cách thủ công thông qua Bảng điều khiển dành cho quản trị viên Bạn chỉ nên cập nhật quy trình này để kiểm thử và tạo nguyên mẫu bằng cách sử dụng một vài hồ sơ người dùng.
- Ánh xạ các mã nhận dạng bên ngoài với mã nhận dạng trên Google bằng API Thư mục. Quy trình này nên dùng cho những người không thể sử dụng SDK trình kết nối danh tính.
- Tạo trình kết nối danh tính bằng cách sử dụng SDK trình kết nối danh tính. SDK này đơn giản hoá việc sử dụng Directory API để ánh xạ mã nhận dạng.
Trình kết nối danh tính là các chương trình dùng để liên kết các mã nhận dạng bên ngoài, từ danh tính doanh nghiệp (người dùng và nhóm) đến danh tính nội bộ trong Google mà Google Cloud Search sử dụng. Nếu phải tạo nguồn nhận dạng, bạn phải tạo một trình kết nối danh tính.
Google Cloud Directory Sync (GCDS) là một ví dụ về trình kết nối danh tính. Trình kết nối danh tính này liên kết thông tin người dùng và thông tin nhóm từ Active Directory của Microsoft tới Thư mục đám mây cùng với các thuộc tính người dùng có thể đại diện cho danh tính của họ trong các hệ thống khác.
Đồng bộ hoá danh tính bằng API REST
Sử dụng phương thức update
để đồng bộ hoá danh tính bằng API REST.
Ánh xạ lại danh tính
Sau khi ánh xạ lại thuộc tính của một mục với một nhận dạng khác, bạn phải lập chỉ mục lại các mục để danh tính mới tiếp tục được duy trì. Ví dụ:
- nếu bạn cố xoá một mục ánh xạ khỏi một người dùng hoặc ánh xạ lại cho người dùng khác, thì mục ánh xạ ban đầu vẫn được giữ nguyên cho đến khi bạn lập chỉ mục lại.
- Nếu bạn xoá một nhóm đã ánh xạ có trong Danh sách kiểm soát quyền truy cập (ACL) của mục rồi tạo một nhóm mới có cùng
groupKey
, thì nhóm mới sẽ không cung cấp quyền truy cập vào mục cho đến khi mục được lập chỉ mục lại.