Пользователь является владельцем папки «Мой диск». Эта папка может содержать файлы, к которым имеют доступ несколько пользователей. Такая модель ограниченного доступа означает, что разные пользователи могут видеть разные списки элементов в одной и той же папке. Пользователь, имеющий доступ к родительской папке «Мой диск», но не имеющий доступа к элементам внутри этой папки, имеет «ограниченный доступ». Это создает ситуацию, когда трудно определить, кто имеет доступ в иерархии папок.
Напротив, файлы на общих дисках принадлежат самому общему диску. Общие диски имеют расширенную модель, поэтому у каждого пользователя один и тот же список элементов в одной и той же папке.
Введение папок с ограниченным доступом воспроизводит модель расширенного доступа, существовавшую на общих дисках, и в приложении «Мой диск». Благодаря этому изменению, папки с ограниченным доступом являются единственным исключением, позволяющим ограничивать доступ к определенной подпапке как на «Моем диске», так и на общих дисках.
В этом руководстве объясняется, как управлять папками с ограниченным и расширенным доступом в Google Drive.
О папках с ограниченным доступом
Папки с ограниченным доступом позволяют ограничить доступ к папкам для определенных пользователей. Только пользователи, которых вы непосредственно добавили в настройки разрешений папки, могут открыть ее и получить доступ к ее содержимому. Пользователи, унаследовавшие доступ к общей папке «Мой диск» или общей папке диска (через доступ из родительской папки), могут видеть ограниченную папку в Диске, но не могут ее открыть. Эта функция лучше согласовывает поведение общего доступа к элементам как в «Моем диске», так и на общих дисках, позволяя организовывать папки с конфиденциальным содержимым наряду с более широко доступным контентом.
Папки с ограниченным доступом доступны как в разделе «Мой диск», так и на общих дисках. Роль owner в разделе «Мой диск» и роль organizer на общих дисках всегда могут получить доступ к папкам с ограниченным доступом. Для изменения списка пользователей папки специальные разрешения не требуются. Роли, которые могут предоставлять общий доступ к папкам, могут обновлять списки участников. Для получения дополнительной информации о ролях и разрешениях см. разделы «Роли и разрешения» и «Обзор общих дисков» .
Обратите внимание, что хотя папки являются типом файлов, ограниченный доступ к файлам не предусмотрен.
Установить ограниченный доступ к папке
Хотя пользователи с прямыми правами доступа к папке могут получить доступ к папке с ограниченными правами, только роль owner в разделе «Мой диск» и роль organizer в общих дисках могут включать или отключать ограниченный доступ.
Кроме того, если у пользователя с ролью writer в «Моем диске» в поле writersCanShare ресурса files установлено значение true , он также может включать или отключать эту функцию.
Чтобы ограничить доступ к папке, установите логическое значение поля inheritedPermissionsDisabled в ресурсе files в true . Если true , доступ к папке будет иметь только роль owner , роль organizer и пользователи с прямыми правами доступа к папке.
Чтобы снова включить унаследованные разрешения, установите параметр inheritedPermissionsDisabled в false .
Проверка прав доступа для ограничения доступа к папке.
Чтобы проверить, можете ли вы ограничить доступ к папке, изучите логические значения полей capabilities.canDisableInheritedPermissions и capabilities.canEnableInheritedPermissions в ресурсе files . Эти параметры подтверждают наличие у вас разрешения на ограничение доступа к папке через поле inheritedPermissionsDisabled .
Для получения дополнительной информации о capabilities см. раздел «Понимание возможностей файлов» .
Список дочерних элементов папки с ограниченным доступом
Чтобы проверить, можно ли вывести список дочерних элементов папки, используйте логическое поле capabilities.canListChildren .
Возвращаемое значение всегда равно false , если элемент не является папкой или если доступ запрашивающего к содержимому папки был закрыт путем установки параметра inheritedPermissionsDisabled в значение 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.delete() ресурса files .
В разделе «Мой диск» удалять иерархию папок может только владелец элемента. Если пользователь удаляет иерархию с папками, имеющими ограниченный доступ и принадлежащими другим пользователям, эти папки перемещаются в раздел «Мой диск» владельца.
Если у пользователя есть роль owner , вся иерархия удаляется.
На общих дисках роль organizer может удалять иерархии, даже если они содержат папки с ограниченным доступом. Если роль fileOrganizer удаляет иерархию, содержащую папки с ограниченным доступом, результат зависит от того, были ли они добавлены обратно в качестве fileOrganizer для папок с ограниченным доступом. Если да, то удаляется вся иерархия. В противном случае папки с ограниченным доступом перемещаются в корневую папку общего диска.
О широком доступе
Введение папок с ограниченным доступом расширяет модель доступа, распространяя её с общих дисков на «Мой диск». После внедрения этой модели доступа доступ к папке означает, по крайней мере, тот же уровень доступа ко всему содержимому иерархии папок. Папки с ограниченным доступом — единственное исключение, позволяющее ограничивать доступ к определённой подпапке как на «Моём диске», так и на общих дисках. Это также означает, что если ваша папка не имеет ограниченного доступа, вы больше не сможете удалить доступ, унаследованный от родительской папки. В противном случае API Drive вернёт сообщение об ошибке. Для более детального контроля доступа внутри иерархии вы можете установить ограниченный доступ для папки.
Адаптируйтесь к широкому доступу
Чтобы упростить разработчикам адаптацию к широкому доступу, в API Google Drive был внесен ряд улучшений:
Поле
permissionDetails[]в ресурсеpermissionsтеперь заполняется для элементов в разделе «Мой диск». Ранее эти поля либо не задавались, либо дублировались из поляteamDrivePermissionDetailsгде это было необходимо. Заполняются только поляpermissionTypeиinheritedполя в разделе «Мой диск».Поле
permissionDetails[].inheritedуказывает, наследуется ли разрешение от родительского элемента. Оно позволяет определить, наследуются ли определенные роли (например,reader») от родительского элемента, и предоставлена ли элементу непосредственно более высокая роль (например,writer»).При просмотре разрешений для элемента поле
permissionDetails[]может содержать несколько записей. Если оно присутствует, то имеется одна запись для разрешения, непосредственно относящегося к элементу в данной области действия, а затем записи для унаследованных или членских разрешений элемента.Разработчики могут включить расширенный доступ к API в разделе «Мой диск» до введения каких-либо обязательных мер в будущем. Вы можете установить параметр запроса
enforceExpansiveAccessвtrue, чтобы будущие изменения в расширенном доступе не повлияли на ваше приложение.Если вы подключитесь сейчас, API будет работать для элементов в разделе «Мой диск» так же, как и для элементов на общих дисках. Например, любая попытка ограничить доступ ниже унаследованной роли завершится неудачей при вызове
permissions.update(). Аналогично, вызовpermissions.delete()завершится неудачей, если разрешение унаследовано.
Выявление и предотвращение ограниченного доступа
Возможно, ваше приложение создает ограниченный доступ (когда пользователь имеет доступ к родительской папке "Мой диск", но не к файлу внутри этой папки) к папкам "Мой диск" при использовании методов permissions.update() или permissions.delete() .
При использовании этих методов вы можете просмотреть поля ресурса permissions , чтобы определить, где запрос может привести к ограничению доступа, и избежать отправки таких запросов. Для обнаружения такой ситуации используйте поле enforceExpansiveAccess в вашем запросе.
Кроме того, если ваше приложение уже установило ограниченный доступ к вашим папкам, вы можете выполнить следующие действия:
Пройдитесь по иерархии папок, чтобы снять ограничение доступа. Вместо него следует установить ограничение доступа к папке .
Если вы пытаетесь отменить общий доступ к файлу, вы можете создать промежуточную папку, установить для нее ограниченный доступ и переместить файл в новую папку.
Если вы не хотите использовать папки с ограниченным доступом, но вам необходимо ограничить некоторые права доступа, вы можете переместить файл в частную папку (например, в корневую папку «Мой диск»). Затем вы можете создать ярлык к исходному местоположению файла, чтобы пользователи могли продолжать им пользоваться.
Связанные темы
- Обменивайтесь файлами, папками и дисками.
- Как работает доступ к файлам на общих дисках
- Узнайте о папках с ограниченным доступом.