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

Một người dùng sở hữu một thư mục trong 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 mục riêng trong cùng một thư mục. Một người dùng có quyền truy cập vào thư mục mẹ trong 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 tình huống khó xác định người có quyền truy cập trong hệ thống phân cấp.

Ngược lại, các tệp trong bộ nhớ dùng chung do bộ nhớ dùng chung sở hữu. Bộ nhớ dùng chung có mô hình mở rộng để mọi người dùng đều có cùng 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ẽ sao chép mô hình quyền 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ý 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

Giới hạn quyền truy cập vào thư mục cho một số người dùng cụ thể.

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 đối với 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 đượ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 trong bộ nhớ dùng chung (thông qua quyền truy cập 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 (chủ sở hữu) trong Drive của tôi và vai trò organizer (người sắp xếp) trong bộ nhớ dùng chung luôn có thể truy cập vào thư mục có quyền truy cập bị giới hạn. Bạn không cần có quyền đặc biệt để sửa đổi danh sách người dùng thư mục. 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ềnTổng quan về bộ nhớ 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 (chủ sở hữu) trong Drive của tôi và vai trò organizer (người sắp xếp) 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 một người dùng có vai trò writer trong Drive của tôi có trường boolean writersCanShare trên tài nguyên files được đặt 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 trường này được đặt thành true, chỉ vai trò owner (chủ sở hữu), vai trò organizer (người sắp xếp) 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 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.canDisableInheritedPermissionscapabilities.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 Tìm hiểu về các tính 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 của bạn vào nội dung của thư mục đã bị xoá, 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()files.list(). Để xác nhận quyền truy cập bị giới hạn, hãy kiểm tra 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 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 trong bộ nhớ 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 nội dung phản hồi: inheritedPermissionsDisabled=trueview=metadata. Vai trò luôn được đặt thành reader. Trường view chỉ được điền cho các quyền thuộc về một view. Để biết thêm thông tin, hãy xem bài viết Khung hiển thị.

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 của 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 (người đọc) hoặc vai trò cao hơn.

Cuối cùng, nếu một quyền được giới hạn lần đầ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 lại trực tiếp vào thư mục, thì các giá trị trong nội dung phản hồi sẽ trở thành inheritedPermissionsDisabled=true với trường view không được đặ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 với 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 và siêu dữ liệu của thư mục giống 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á 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ệ 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 (chủ sở hữu), thì toàn bộ hệ thống phân cấp sẽ bị xoá.

Trong bộ nhớ dùng chung, vai trò organizer (người sắp xếp) 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 (người sắp xếp tệp) 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 họ có được thêm lại làm fileOrganizer (người sắp xếp tệp) trên các thư mục có quyền truy cập bị giới hạn hay không. Nếu có, thì 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 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à bạn có ít nhất cùng một cấp quyền 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à 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, nếu không, bạn không thể xoá quyền truy cập được kế thừa từ thư mục mẹ nữa. Nếu bạn làm như vậy, API Drive sẽ trả về 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.

Thích ứng 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 đã thực hiện một số cải tiến đối với API Google Drive:

  1. Trường permissionDetails[] trên tài nguyên permissions hiện được điền cho các mục trong Drive của tôi. Trước đây, các trường này không được đặt hoặc được sao chép từ trường teamDrivePermissionDetails khi thích hợp. Chỉ các trường permissionTypeinherited trong Drive của tôi mới được điền.

    Trường permissionDetails[].inherited cho biết liệu một quyền có được kế thừa từ thư mục mẹ của mục hay không. Trường này cho phép bạn phát hiện xem một số vai trò (chẳng hạn như reader (người đọc)) có được kế thừa từ thư mục mẹ hay không và liệu một vai trò cao hơn (chẳng hạn như writer (người viết)) có được cấp trực tiếp cho mục hay không.

    Khi xem quyền của một mục, trường permissionDetails[] có thể chứa nhiều mục. Nếu có, thì sẽ có một mục cho quyền trực tiếp trên mục cho phạm vi đó, sau đó là các mục cho quyền được kế thừa hoặc quyền thành viên trên mục.

  2. Nhà phát triển có thể chọn sử dụng hành vi API quyền truy cập mở rộng trong Drive của tôi trước khi bất kỳ quy tắc bắt buộc nào trong tương lai được thực thi. Bạn có thể đặt tham số yêu cầu enforceExpansiveAccess thành true để 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 ngay bây giờ có nghĩa là API 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 đến permissions.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 mẹ trong 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 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 để xem yêu cầu có thể tạo quyền truy cập bị hạn chế ở đâu và tránh gửi các yêu cầu như vậy. Để phát hiện tình huống này, hãy sử dụng trường enforceExpansiveAccess trên 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ể thực hiện các bước sau:

  1. 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 đặt quyền truy cập bị giới hạn vào thư mục.

  2. Nếu mục mà 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 đó và di chuyển tệp vào thư mục mới.

  3. 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 đó vào một thư mục riêng tư (chẳng hạn như thư mục gốc trong Drive của tôi). Sau đó, bạn có thể tạo 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 đó.