使用者擁有「我的雲端硬碟」資料夾。資料夾可能包含多位使用者,他們有權存取不同檔案。這種限制存取模式表示,不同使用者在同一個資料夾中可能會看到不同的項目清單。如果使用者有權存取上層「我的雲端硬碟」資料夾,但無法存取該資料夾中的項目,則會受到「存取限制」。這樣一來,您就難以掌握階層中的存取權。
反之,共用雲端硬碟檔案的擁有者是共用雲端硬碟。共用雲端硬碟採用擴充模型,因此每個使用者在同一個資料夾中都會看到相同的項目清單。
推出存取權受限的資料夾後,共用雲端硬碟的廣泛存取權模式也會套用至「我的雲端硬碟」。這項異動生效後,存取權受限的資料夾將成為唯一例外,允許限制「我的雲端硬碟」和共用雲端硬碟中特定子資料夾的存取權。
本指南說明如何在 Google 雲端硬碟中管理存取受限和存取權較廣的資料夾。
關於存取權受限的資料夾
存取權受限的資料夾可讓您限制特定使用者的資料夾存取權。 只有您直接新增至資料夾權限的使用者,才能開啟資料夾並存取內容。如果使用者透過上層資料夾取得存取權,並繼承「我的雲端硬碟」共用資料夾或共用雲端硬碟資料夾的存取權,則可以在雲端硬碟中看到受限制的資料夾,但無法開啟。這項功能可讓「我的雲端硬碟」和共用雲端硬碟中的項目共用行為更加一致,方便您整理含有機密內容的資料夾,以及更廣泛共用的內容。
「我的雲端硬碟」和共用雲端硬碟中均可使用存取權受限的資料夾。在「我的雲端硬碟」中,owner
角色和共用雲端硬碟中的organizer
角色,隨時都能存取設有存取限制的資料夾。如要修改資料夾使用者清單,不需要特殊權限。可以共用資料夾的角色可以更新成員清單。如要進一步瞭解角色和權限,請參閱「角色和權限」和「共用雲端硬碟總覽」。
請注意,雖然資料夾是檔案的一種,但檔案無法設定存取限制。
設定資料夾的存取限制
雖然具備直接資料夾權限的使用者可以存取設有存取限制的資料夾,但只有「我的雲端硬碟」中的owner
角色和共用雲端硬碟中的organizer
角色,才能啟用或停用存取限制。
此外,如果使用者在「我的雲端硬碟」中具有 writer
角色,且 files
資源的 writersCanShare
布林值欄位設為 true
,也可以開啟或關閉這項功能。
如要限制資料夾存取權,請將 files
資源的布林值 inheritedPermissionsDisabled
欄位設為 true
。時,只有「owner
」角色、「organizer
」角色和具備直接資料夾權限的使用者可以存取。true
如要重新啟用沿用權限,請將 inheritedPermissionsDisabled
設為 false
。
確認限制資料夾存取權的權限
如要檢查是否可以限制資料夾存取權,請檢查 files
資源中 capabilities.canDisableInheritedPermissions
和 capabilities.canEnableInheritedPermissions
欄位的布林值。這些設定會確認您是否有權透過「inheritedPermissionsDisabled
」欄位限制資料夾存取權。
如要進一步瞭解 capabilities
,請參閱「瞭解檔案功能」。
列出存取受限資料夾的子項
如要檢查是否可以列出資料夾的子項,請使用 capabilities.canListChildren
布林值欄位。
如果項目不是資料夾,或是設定 inheritedPermissionsDisabled
為 false
後,要求者對資料夾內容的存取權遭到移除,傳回的值一律為 false
。
如果存取資料夾內容的權限遭到移除,您仍可使用 files.get()
和 files.list()
方法存取資料夾中繼資料。如要確認存取權是否受限,請檢查回應主體,看看該項目是否為 MIME 類型 application/vnd.google-apps.folder
的資料夾,以及 capabilities.canListChildren
欄位是否設為 false。如果您嘗試列出這類資料夾的子項,結果一律為空白。
存取存取權受限資料夾的中繼資料
如果無法存取資料夾內容,存取權受限的資料夾可讓您查看資料夾中繼資料。
使用 permissions
資源判斷使用者存取權時,如果「我的雲端硬碟」和共用雲端硬碟資料夾只授予中繼資料存取權,回應主體就會包含 inheritedPermissionsDisabled=true
和 view=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 進行了多項改良:
「我的雲端硬碟」中的項目現在會填入
permissions
資源的permissionDetails[]
欄位。先前,這些欄位不是未設定,就是視情況從teamDrivePermissionDetails
欄位複製。只有「我的雲端硬碟」中的permissionType
和inherited
欄位會填入資料。permissionDetails[].inherited
欄位會指出權限是否繼承自項目的父項。您可以藉此偵測特定角色 (例如reader
) 是否沿用自上層,以及是否直接在項目上授予較高的角色 (例如writer
)。查看項目權限時,
permissionDetails[]
欄位可能包含多個項目。如果存在,則該範圍的項目上會有一項直接權限的項目,以及項目上沿用或成員權限的項目。開發人員可以在「我的雲端硬碟」中選擇加入擴大存取權 API 行為,以因應日後強制執行的措施。您可以將
enforceExpansiveAccess
請求參數設為true
,這樣日後擴大存取權的異動就不會影響應用程式。現在選擇啟用後,API 對「我的雲端硬碟」中項目的運作方式,就會與對共用雲端硬碟中項目的運作方式相同。舉例來說,如果嘗試將存取權限制在繼承角色以下,呼叫
permissions.update()
時就會失敗。同樣地,如果權限是沿用而來,呼叫permissions.delete()
就會失敗。
偵測及防範受限存取
使用 permissions.update()
或 permissions.delete()
方法時,應用程式可能會在「我的雲端硬碟」資料夾中建立存取限制 (使用者可以存取上層的「我的雲端硬碟」資料夾,但無法存取該資料夾中的檔案)。
使用這些方法時,您可以查看 permissions
資源中的欄位,瞭解要求可能會建立受限存取權的位置,並避免傳送這類要求。如要偵測這種情況,請使用要求中的 enforceExpansiveAccess
欄位。
此外,如果應用程式已對資料夾建立存取限制,請按照下列步驟操作:
在資料夾階層中逐一移除存取限制。請改為設定資料夾存取限制。
如果要取消共用的是檔案,可以建立中繼資料夾並設定存取限制,然後將檔案移至新資料夾。
如果不想使用存取權受限的資料夾,但必須移除部分存取權,可以將檔案移至私人資料夾 (例如「我的雲端硬碟」根資料夾)。接著建立捷徑,指向該項目的原始位置,使用者就能繼續使用。