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

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

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

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

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

關於存取權受限的資料夾

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

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

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

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

設定資料夾的存取限制

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

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

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

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

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

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

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

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

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

如果項目不是資料夾,或是設定 inheritedPermissionsDisabledfalse 後,要求者對資料夾內容的存取權遭到移除,傳回的值一律為 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. 如果不想使用存取權受限的資料夾,但必須移除部分存取權,可以將檔案移至私人資料夾 (例如「我的雲端硬碟」根資料夾)。接著建立捷徑,指向該項目的原始位置,使用者就能繼續使用。