Một người dùng sở hữu thư mục Drive của tôi. Thư mục có thể chứa nhiều người dùng có quyền truy cập vào các tệp khác nhau. Mô hình quyền truy cập hạn chế này có nghĩa là mỗi người dùng có thể thấy một danh sách các mục khác nhau trong cùng một thư mục. Người dùng có quyền truy cập vào thư mục mẹ Drive của tôi nhưng không có quyền truy cập vào một mục trong thư mục đó sẽ có "quyền truy cập bị hạn chế". Điều này tạo ra một tình huống khó xác định được ai có quyền truy cập trong hệ phân cấp.
Ngược lại, các tệp trong bộ nhớ dùng chung thuộc quyền sở hữu của bộ nhớ dùng chung. Bộ nhớ dùng chung có mô hình mở rộng để mọi người dùng đều có cùng một danh sách mục trong cùng một thư mục.
Việc ra mắt thư mục có quyền truy cập bị giới hạn sẽ giúp mở rộng mô hình truy cập từ bộ nhớ dùng chung sang Drive của tôi. Với thay đổi này, thư mục có quyền truy cập bị giới hạn là trường hợp ngoại lệ duy nhất cho phép hạn chế quyền truy cập vào một thư mục con cụ thể trong cả Drive của tôi và bộ nhớ dùng chung.
Hướng dẫn này giải thích cách quản lý các thư mục có quyền truy cập bị giới hạn và quyền truy cập mở rộng trong Google Drive.
Giới thiệu về thư mục có quyền truy cập bị giới hạn
Thư mục có quyền truy cập bị giới hạn cho phép bạn hạn chế thư mục cho một số người dùng cụ thể. Chỉ những người dùng mà bạn trực tiếp thêm vào quyền của thư mục mới có thể mở thư mục đó và truy cập vào nội dung của thư mục. Những người dùng có quyền truy cập kế thừa vào thư mục Drive của tôi hoặc thư mục bộ nhớ dùng chung (thông qua quyền truy cập từ thư mục mẹ) có thể xem thư mục bị hạn chế trong Drive nhưng không thể mở thư mục đó. Tính năng này giúp điều chỉnh hành vi chia sẻ của các mục trong cả Drive của tôi và bộ nhớ dùng chung một cách phù hợp hơn, cho phép bạn sắp xếp các thư mục có nội dung nhạy cảm cùng với nội dung được chia sẻ rộng rãi hơn.
Bạn có thể dùng tính năng thư mục có quyền truy cập bị giới hạn trong cả Drive của tôi và bộ nhớ dùng chung. Vai trò owner
trong Drive của tôi và vai trò organizer
trong bộ nhớ dùng chung luôn có thể truy cập vào các thư mục có quyền truy cập bị giới hạn. Để sửa đổi danh sách người dùng thư mục, bạn không cần có quyền đặc biệt. Những vai trò có thể chia sẻ thư mục có thể cập nhật danh sách thành viên. Để tìm hiểu thêm về vai trò và quyền, hãy xem bài viết Vai trò và quyền và Tổng quan về ổ đĩa dùng chung.
Xin lưu ý rằng mặc dù thư mục là một loại tệp, nhưng bạn không thể đặt quyền truy cập bị giới hạn cho tệp.
Đặt quyền truy cập bị giới hạn cho một thư mục
Mặc dù người dùng có quyền trực tiếp đối với thư mục có thể truy cập vào thư mục có quyền truy cập bị giới hạn, nhưng chỉ vai trò owner
trong Drive của tôi và vai trò organizer
trong bộ nhớ dùng chung mới có thể bật hoặc tắt quyền truy cập bị giới hạn.
Ngoài ra, nếu người dùng có vai trò writer
trong Drive của tôi đặt trường boolean writersCanShare
trên tài nguyên files
thành true
, thì họ cũng có thể bật hoặc tắt tính năng này.
Để giới hạn quyền truy cập vào một thư mục, hãy đặt trường boolean inheritedPermissionsDisabled
trên tài nguyên files
thành true
. Khi true
, chỉ vai trò owner
, vai trò organizer
và người dùng có quyền truy cập trực tiếp vào thư mục mới có thể truy cập vào thư mục đó.
Để bật lại các quyền kế thừa, hãy đặt inheritedPermissionsDisabled
thành
false
.
Xác minh quyền giới hạn quyền truy cập vào thư mục
Để kiểm tra xem bạn có thể giới hạn quyền truy cập vào một thư mục hay không, hãy kiểm tra các giá trị boolean của trường capabilities.canDisableInheritedPermissions
và capabilities.canEnableInheritedPermissions
trên tài nguyên files
. Các chế độ cài đặt này xác nhận xem bạn có quyền hạn chế quyền truy cập vào một thư mục thông qua trường inheritedPermissionsDisabled
hay không.
Để biết thêm thông tin về capabilities
, hãy xem phần Tìm hiểu về các chức năng của tệp.
Liệt kê các thư mục con của một thư mục có quyền truy cập bị giới hạn
Để kiểm tra xem bạn có thể liệt kê các thư mục con của một thư mục hay không, hãy sử dụng trường boolean capabilities.canListChildren
.
Giá trị trả về luôn là false
khi mục không phải là thư mục hoặc nếu quyền truy cập của người yêu cầu vào nội dung của thư mục đã bị xoá bằng cách đặt inheritedPermissionsDisabled
thành false
.
Nếu quyền truy cập vào nội dung của thư mục đã bị xoá, bạn vẫn có thể truy cập vào metadata của thư mục bằng các phương thức files.get()
và files.list()
. Để xác nhận quyền truy cập bị hạn chế, hãy kiểm tra phần nội dung phản hồi để xem mục đó có phải là thư mục có loại MIME application/vnd.google-apps.folder
và trường capabilities.canListChildren
được đặt thành false hay không. Nếu bạn cố gắng liệt kê các thư mục con của thư mục như vậy, kết quả sẽ luôn trống.
Truy cập vào thư mục có siêu dữ liệu về quyền truy cập bị giới hạn
Thư mục có quyền truy cập bị giới hạn cho phép bạn xem metadata của thư mục nếu bạn không có quyền truy cập vào nội dung của thư mục.
Khi sử dụng tài nguyên permissions
để xác định quyền truy cập của người dùng, cả thư mục Drive của tôi và thư mục ổ đĩa dùng chung chỉ cấp quyền truy cập vào siêu dữ liệu đều chứa các giá trị sau trong phần nội dung phản hồi: inheritedPermissionsDisabled=true
và view=metadata
. Vai trò này luôn được đặt thành reader
. Trường view
chỉ được điền sẵn cho các quyền thuộc về view
. Để biết thêm thông tin, hãy xem phần Lượt xem.
Tất cả các mục trong trường permissionDetails
đều có trường inherited
được đặt thành true
để biểu thị quyền được kế thừa và quyền truy cập trực tiếp vào nội dung thư mục chưa được cấp.
Để cấp quyền truy cập vào cả nội dung thư mục và siêu dữ liệu, hãy đặt trường inheritedPermissionsDisabled
thành false
hoặc cập nhật vai trò thành reader
trở lên.
Cuối cùng, nếu một quyền bị giới hạn ban đầu bằng cách tắt tính năng kế thừa trên một thư mục (inheritedPermissionsDisabled=true
), sau đó quyền đó được thêm trực tiếp trở lại thư mục, thì các giá trị trong phần nội dung phản hồi sẽ trở thành inheritedPermissionsDisabled=true
với trường view
chưa được đặt. Nếu thư mục nằm trong một bộ nhớ dùng chung, danh sách permissionDetails
sẽ có một mục có trường inherited
được đặt thành false
để biểu thị quyền không được kế thừa. Quyền này cấp quyền truy cập vào cả nội dung thư mục và siêu dữ liệu như mọi quyền khác.
Xoá thư mục có quyền truy cập bị giới hạn
Bạn có thể xoá các thư mục có quyền truy cập bị giới hạn bằng phương thức files.delete()
trên tài nguyên files
.
Trong Drive của tôi, chỉ chủ sở hữu của mục mới có thể xoá hệ phân cấp thư mục. Nếu một người dùng xoá một hệ thống phân cấp có các thư mục có quyền truy cập bị giới hạn và do người khác sở hữu, thì các thư mục này sẽ chuyển sang Drive của tôi của chủ sở hữu.
Nếu người dùng có vai trò owner
, toàn bộ hệ phân cấp sẽ bị xoá.
Trong bộ nhớ dùng chung, vai trò organizer
có thể xoá hệ thống phân cấp ngay cả khi hệ thống phân cấp đó chứa các thư mục có quyền truy cập bị giới hạn. Nếu vai trò fileOrganizer
xoá một hệ thống phân cấp chứa các thư mục có quyền truy cập bị giới hạn, thì kết quả sẽ phụ thuộc vào việc các thư mục đó có được thêm lại dưới dạng fileOrganizer
trên các thư mục có quyền truy cập bị giới hạn hay không. Nếu có, toàn bộ hệ phân cấp sẽ bị xoá. Nếu không, các thư mục có quyền truy cập bị giới hạn sẽ di chuyển sang thư mục gốc của bộ nhớ dùng chung.
Giới thiệu về quyền truy cập mở rộng
Việc ra mắt tính năng thư mục có quyền truy cập bị giới hạn sẽ mở rộng mô hình quyền truy cập mở rộng từ bộ nhớ dùng chung sang Drive của tôi. Sau khi mô hình quyền truy cập được triển khai, việc có quyền truy cập vào một thư mục có nghĩa là ít nhất cũng có cùng cấp truy cập vào mọi thứ trong hệ phân cấp thư mục đó. Thư mục có quyền truy cập bị giới hạn là trường hợp ngoại lệ duy nhất cho phép hạn chế quyền truy cập vào một thư mục con cụ thể trong cả Drive của tôi và bộ nhớ dùng chung. Điều này cũng có nghĩa là trừ phi thư mục của bạn có quyền truy cập bị giới hạn, bạn sẽ không thể xoá quyền truy cập được kế thừa từ thư mục mẹ nữa. Việc này có nghĩa là API Drive sẽ trả về một phản hồi lỗi. Để xác định chế độ kiểm soát quyền truy cập chi tiết hơn trong một hệ thống phân cấp, bạn có thể đặt quyền truy cập bị giới hạn trên thư mục.
Điều chỉnh để phù hợp với quyền truy cập mở rộng
Để giúp nhà phát triển dễ dàng thích ứng với quyền truy cập mở rộng, chúng tôi đã cải tiến một số tính năng cho API Google Drive:
Trường
permissionDetails[]
trên tài nguyênpermissions
hiện được điền sẵn cho các mục trong Drive của tôi. Trước đây, các trường này đã bị huỷ thiết lập hoặc sao chép từ trườngteamDrivePermissionDetails
khi phù hợp. Chỉ các trườngpermissionType
vàinherited
trong Drive của tôi mới được điền sẵn.Trường
permissionDetails[].inherited
cho biết liệu một quyền có được kế thừa từ mục mẹ hay không. Phương thức này cho phép bạn phát hiện xem một số vai trò nhất định (chẳng hạn nhưreader
) có được kế thừa từ thành phần mẹ hay không và liệu một vai trò cao hơn (chẳng hạn nhưwriter
) có được cấp trực tiếp trên mục hay không.Khi xem các quyền cho một mục, trường
permissionDetails[]
có thể chứa nhiều mục nhập. Nếu có, sẽ có một mục nhập cho quyền trực tiếp trên mục cho phạm vi đó, sau đó là các mục nhập cho quyền kế thừa hoặc quyền thành viên trên mục.Nhà phát triển có thể chọn cho phép hành vi mở rộng quyền truy cập API trong Drive của tôi trước khi chúng tôi bắt buộc phải thực thi trong tương lai. Bạn có thể đặt tham số yêu cầu
enforceExpansiveAccess
thànhtrue
để các thay đổi trong tương lai đối với quyền truy cập mở rộng không ảnh hưởng đến ứng dụng của bạn.Việc chọn sử dụng API này hiện có nghĩa là API sẽ hoạt động giống như đối với các mục trong Drive của tôi và các mục trong bộ nhớ dùng chung. Ví dụ: mọi nỗ lực hạn chế quyền truy cập bên dưới vai trò kế thừa đều không thành công khi gọi
permissions.update()
. Tương tự, lệnh gọi đếnpermissions.delete()
sẽ không thành công nếu quyền được kế thừa.
Phát hiện và ngăn chặn quyền truy cập bị hạn chế
Ứng dụng của bạn có thể đang tạo quyền truy cập bị hạn chế (trong đó người dùng có quyền truy cập vào thư mục gốc Drive của tôi nhưng không có quyền truy cập vào tệp trong thư mục đó) trên các thư mục Drive của tôi khi sử dụng phương thức permissions.update()
hoặc permissions.delete()
.
Khi sử dụng các phương thức này, bạn có thể xem xét các trường trên tài nguyên permissions
để biết yêu cầu nào có thể tạo quyền truy cập bị hạn chế và tránh gửi các yêu cầu đó. Để phát hiện trường hợp này, hãy sử dụng trường enforceExpansiveAccess
trong yêu cầu của bạn.
Ngoài ra, nếu ứng dụng của bạn đã tạo quyền truy cập bị hạn chế trên các thư mục, bạn có thể làm theo các bước sau:
Di chuyển qua hệ phân cấp thư mục để xoá quyền truy cập bị hạn chế. Thay vào đó, bạn nên đặt quyền truy cập hạn chế vào thư mục.
Nếu mục bạn đang cố gắng huỷ chia sẻ là một tệp, bạn có thể tạo một thư mục trung gian, đặt quyền truy cập bị giới hạn trên thư mục đó rồi di chuyển tệp vào thư mục mới.
Nếu không muốn sử dụng thư mục có quyền truy cập bị giới hạn nhưng phải xoá một số quyền truy cập, bạn có thể chuyển tệp sang một thư mục riêng tư (chẳng hạn như thư mục gốc Drive của tôi). Sau đó, bạn có thể tạo một lối tắt đến vị trí ban đầu của mục để người dùng vẫn có thể sử dụng mục đó.
Chủ đề có liên quan
- Chia sẻ tệp, thư mục và ổ đĩa
- Cách hoạt động của quyền truy cập vào tệp trong bộ nhớ dùng chung
- Tìm hiểu về các thư mục có quyền truy cập bị giới hạn