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