管理存取權受限和擴充的資料夾

使用者擁有「我的雲端硬碟」資料夾。資料夾可能包含多位使用者,他們有權存取不同檔案。這個限制存取模式表示,不同使用者在同一個資料夾中可能會看到不同的項目清單。如果使用者有權存取上層「我的雲端硬碟」資料夾,但無權存取該資料夾中的項目,就會「存取受限」。這樣一來,您就難以掌握階層中的存取權。

反之,共用雲端硬碟檔案的擁有者是共用雲端硬碟。共用雲端硬碟採用擴充模型,因此每個使用者在同一個資料夾中看到的項目清單都相同。

推出存取權受限的資料夾後,共用雲端硬碟的廣泛存取權模式也適用於「我的雲端硬碟」。這項異動生效後,存取權受限的資料夾將成為唯一例外,允許您限制「我的雲端硬碟」和共用雲端硬碟中特定子資料夾的存取權。

本指南說明如何在 Google 雲端硬碟中管理設有存取限制和存取權較廣的資料夾。

關於存取權受限的資料夾

將資料夾設為僅限特定使用者存取。

存取權受限的資料夾可讓您限制特定使用者的資料夾存取權。 只有您直接新增至資料夾權限的使用者,才能開啟資料夾並存取內容。如果使用者擁有繼承的存取權,或擁有共用「我的雲端硬碟」資料夾或共用雲端硬碟資料夾的存取權 (透過上層資料夾取得),則可以在雲端硬碟中看到受限資料夾,但無法開啟。這項功能可讓「我的雲端硬碟」和共用雲端硬碟中的項目共用行為更加一致,方便您整理含有機密內容的資料夾,以及更廣泛共用的內容。

「我的雲端硬碟」和共用雲端硬碟中均可使用存取權受限的資料夾。「我的雲端硬碟」中的owner角色和共用雲端硬碟中的organizer角色,一律可以存取設有存取限制的資料夾。如要修改資料夾使用者清單,不需要任何特殊權限。可共用資料夾的角色可以更新成員清單。如要進一步瞭解角色和權限,請參閱「角色和權限」和「共用雲端硬碟總覽」。

請注意,雖然資料夾是檔案的一種,但檔案無法設定存取限制。

設定資料夾的存取限制

雖然具備資料夾直接存取權的使用者可以存取設有存取限制的資料夾,但只有「我的雲端硬碟」中的owner角色和共用雲端硬碟中的organizer角色,才能啟用或停用存取限制。

此外,如果使用者在「我的雲端硬碟」中具有 writer 角色,且 files 資源的 writersCanShare 布林值欄位設為 true,也可以開啟或關閉這項功能。

如要限制資料夾存取權,請將 files 資源的布林值 inheritedPermissionsDisabled 欄位設為 truetrue 時,只有owner角色、organizer角色和具備直接資料夾權限的使用者可以存取。

如要重新啟用沿用權限,請將 inheritedPermissionsDisabled 設為 false

確認限制資料夾存取權的權限

如要檢查是否可以限制資料夾存取權,請檢查 files 資源中 capabilities.canDisableInheritedPermissionscapabilities.canEnableInheritedPermissions 欄位的布林值。這些設定會確認您是否有權透過「inheritedPermissionsDisabled」欄位限制資料夾存取權。

如要進一步瞭解 capabilities,請參閱「瞭解檔案功能」。

列出存取受限資料夾的子項

如要檢查是否可以列出資料夾的子項,請使用 capabilities.canListChildren 布林值欄位。

如果項目不是資料夾,或是透過將 inheritedPermissionsDisabled 設為 false 移除要求者對資料夾內容的存取權,傳回的值一律為 false

如果存取資料夾內容的權限遭到移除,您仍可使用 files.get()files.list() 方法存取資料夾中繼資料。如要確認存取權受到限制,請檢查回應主體,看看該項目是否為 MIME 類型application/vnd.google-apps.folder 的資料夾,且 capabilities.canListChildren 欄位是否設為 false。如果您嘗試列出這類資料夾的子項,結果一律為空白。

存取設有存取限制的資料夾中繼資料

如果無法存取資料夾內容,您仍可查看存取權受限資料夾的中繼資料

使用 permissions 資源判斷使用者存取權時,如果「我的雲端硬碟」和共用雲端硬碟資料夾只授予中繼資料存取權,回應主體就會包含 inheritedPermissionsDisabled=trueview=metadata 值。角色一律設為 reader。只有屬於 view 的權限,才會填入 view 欄位。詳情請參閱「檢視畫面」。

permissionDetails」欄位中的所有項目都設有「inherited」欄位,且該欄位設為「true」,表示權限是繼承而來,且未授予直接存取資料夾內容的權限。

如要授予資料夾內容和中繼資料的存取權,請將 inheritedPermissionsDisabled 欄位設為 false,或將角色更新為 reader 以上。

最後,如果權限最初是透過關閉資料夾的權限沿用功能 (inheritedPermissionsDisabled=true) 受到限制,然後權限直接新增回資料夾,則回應主體中的值會變成 inheritedPermissionsDisabled=true,且 view 欄位會設為未設定。如果資料夾位於共用雲端硬碟中,permissionDetails 清單會包含一個項目,且 inherited 欄位會設為 false,表示權限並非沿用。這項權限與其他權限相同,可授予資料夾內容和中繼資料的存取權。

刪除存取權受限的資料夾

您可以使用 files 資源的 files.delete() 方法,刪除設有存取限制的資料夾。

在「我的雲端硬碟」中,只有項目擁有者才能刪除資料夾階層。 如果使用者要刪除某個階層,但階層中包含其他使用者擁有且設有存取限制的資料夾,則系統會將這些資料夾移至其擁有者的「我的雲端硬碟」。

如果使用者擁有owner角色,整個階層就會遭到刪除。

在共用雲端硬碟中,organizer角色可以刪除階層,即使階層中含有存取權受限的資料夾也一樣。如果fileOrganizer角色刪除的階層包含設有存取限制的資料夾,結果取決於他們是否以fileOrganizer角色重新加入設有存取限制的資料夾。如果有的話,整個階層就會遭到刪除。否則,存取權受限的資料夾會移至共用雲端硬碟的根資料夾。

關於無受限存取權

推出存取權受限的資料夾後,共用雲端硬碟的廣泛存取權模式將擴展至「我的雲端硬碟」。存取權模式推出後,只要有資料夾的存取權,就表示至少有該資料夾階層中所有項目的存取權。存取權受限的資料夾是唯一例外,可限制使用者存取「我的雲端硬碟」和共用雲端硬碟中的特定子資料夾。這也表示,除非資料夾設有存取限制,否則您無法再移除從上層資料夾沿用的存取權。這麼做會導致 Drive API 傳回錯誤回應。如要在階層中定義更精細的存取控管,可以為資料夾設定存取限制

適應無受限存取權

為方便開發人員適應無受限存取權,Google Drive API 進行了多項改良:

  1. 「我的雲端硬碟」中的項目現在會填入 permissions 資源的 permissionDetails[] 欄位。先前,這些欄位不是未設定,就是視情況從 teamDrivePermissionDetails 欄位複製。只有「我的雲端硬碟」中的 permissionTypeinherited 欄位會填入資料。

    permissionDetails[].inherited 欄位會指出權限是否繼承自項目的上層。您可以藉此偵測特定角色 (例如 reader) 是否沿用自上層,以及是否直接在項目上授予較高的角色 (例如 writer)。

    查看項目權限時,permissionDetails[] 欄位可能包含多個項目。如果存在,則該範圍的項目上會有一項直接權限的項目,以及項目上沿用或成員權限的項目。

  2. 開發人員可以在「我的雲端硬碟」中選擇採用擴大存取權 API 行為,以因應日後強制執行的措施。您可以將 enforceExpansiveAccess 要求參數設為 true,這樣日後擴大存取權的異動就不會影響應用程式。

    現在選擇加入,表示 API 對「我的雲端硬碟」中的項目,會以與共用雲端硬碟項目相同的方式運作。舉例來說,如果嘗試將存取權限制在繼承角色以下,呼叫 permissions.update() 時就會失敗。同樣地,如果權限是沿用而來,呼叫 permissions.delete() 就會失敗。

偵測及防範受限存取

使用 permissions.update()permissions.delete() 方法時,應用程式可能會在「我的雲端硬碟」資料夾中建立存取權受限的項目 (使用者可以存取上層的「我的雲端硬碟」資料夾,但無法存取該資料夾中的檔案)。

使用這些方法時,您可以查看 permissions 資源中的欄位,瞭解要求可能建立受限存取權的位置,並避免傳送這類要求。如要偵測這種情況,請在要求中使用 enforceExpansiveAccess 欄位。

此外,如果應用程式已在資料夾中建立受限制的存取權,請按照下列步驟操作:

  1. 在資料夾階層中逐一移除存取限制。請改為設定資料夾存取限制

  2. 如果想取消共用的是檔案,可以建立中繼資料夾並設為存取限制,然後將檔案移至新資料夾。

  3. 如果不想使用存取權受限的資料夾,但必須移除部分存取權,可以將檔案移至私人資料夾 (例如「我的雲端硬碟」根資料夾)。接著,您可以建立項目原始位置的捷徑,讓使用者仍可使用該項目。