Một người dùng sở hữu một thư mục trong phần Drive của tôi. Thư mục này 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 truy cập hạn chế này có nghĩa là mỗi người dùng có thể thấy 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ẹ trong phần 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 ai có quyền truy cập trong hệ thống phân cấp.
Ngược lại, 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, vì vậy, mọi người dùng đều có cùng danh sách các 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ẽ sao chép mô hình truy cập mở rộng 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 bạn có thể 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ế quyền truy cập vào thư mục đối với một số người dùng cụ thể. Chỉ những người dùng mà bạn thêm trực tiếp vào quyền truy cập 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 được kế thừa vào thư mục dùng chung trong Drive của tôi hoặc thư mục dùng chung (thông qua quyền truy cập từ một thư mục mẹ) có thể thấy 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, 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 cũng như bài viết 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ể giới hạn quyền truy cập đối với 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 có trường boolean writersCanShare
được đặt thành true
trên tài nguyên files
, 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 trực tiếp đối với thư mục mới có thể truy cập vào thư mục đó.
Để bật lại các quyền được 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 một 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 các 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 giới hạn 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 bài viết Tìm hiểu 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 bị xoá quyền truy cập vào nội dung của thư mục, bạn vẫn có thể truy cập vào siêu dữ liệu của thư mục bằng các phương thức files.get()
và files.list()
. Để xác nhận rằng quyền truy cập bị hạn chế, hãy kiểm tra nội dung phản hồi để xem liệu mục đó có phải là một thư mục có loại MIME application/vnd.google-apps.folder
hay không và trường capabilities.canListChildren
được đặt thành false. Nếu bạn cố gắng liệt kê các thư mục con của một thư mục như vậy, kết quả sẽ luôn trống.
Truy cập vào siêu dữ liệu của 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 xem siêu dữ liệu 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 trong 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 những 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ị rằng 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 và siêu dữ liệu của thư mục, 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 ban đầu bị giới hạn bằng cách tắt tính năng kế thừa trên một thư mục (inheritedPermissionsDisabled=true
), rồi quyền đó được thêm lại trực tiếp vào 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
là chưa đặt. Nếu thư mục nằm trong bộ nhớ dùng chung, thì danh sách permissionDetails
sẽ có một mục có trường inherited
được đặt thành false
để biểu thị rằng 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á một hệ thống 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
, thì toàn bộ hệ thống 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 đó 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 có 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 họ có được thêm lại làm 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ệ thống 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ẽ chuyển đến 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 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 rộng rãi 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à bạn có ít nhất cùng cấp độ truy cập vào mọi thứ trong hệ thống phân cấp thư mục đó. Thư mục có quyền truy cập bị giới hạn là một trường hợp ngoại lệ 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, nếu không bạn sẽ không thể xoá quyền truy cập được kế thừa từ thư mục mẹ nữa. Khi đó, Drive API sẽ trả về một phản hồi lỗi. Để xác định quyền kiểm soát 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 cho thư mục.
Điều chỉnh theo quyền truy cập mở rộng
Để giúp các nhà phát triển thích ứng với quyền truy cập mở rộng, chúng tôi đã thực hiện một số điểm cải tiến đối với 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 chưa được đặt hoặc được sao chép từ trườngteamDrivePermissionDetails
khi thích 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ừ phần tử mẹ của mục hay không. Bạn có thể phát hiện xem một số vai trò (chẳng hạn nhưreader
) có được kế thừa từ phần tử mẹ hay không và liệu vai trò cao hơn (chẳng hạn nhưwriter
) có được cấp trực tiếp cho mục hay không.Khi xem các quyền đối với một mục, trường
permissionDetails[]
có thể chứa nhiều mục. 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 được kế thừa hoặc quyền thành viên trên mục đó.Nhà phát triển có thể chọn sử dụng hành vi API truy cập mở rộng trong phần My Drive trước khi có bất kỳ quy định bắt buộc nào trong tương lai. Bạn có thể đặt tham số yêu cầu
enforceExpansiveAccess
thànhtrue
để những 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.Nếu chọn sử dụng ngay, API sẽ hoạt động giống nhau đối với các mục trong Drive của tôi như đối với 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 dưới vai trò được 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 một tệp trong thư mục đó) trên các thư mục trong phần 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 có thể tạo quyền truy cập bị hạn chế ở đâu và tránh gửi những yêu cầu như vậy. Để 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, thì bạn có thể thực hiện các bước sau:
Duyệt qua hệ thống phân cấp thư mục để xoá quyền truy cập bị hạn chế. Thay vào đó, bạn nên thiết lập quyền truy cập bị giới hạn 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 cho 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ể di chuyển tệp sang một thư mục riêng tư (chẳng hạn như thư mục gốc của 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