Управляйте папками с ограниченным и расширенным доступом

Пользователь является владельцем папки «Мой диск». Эта папка может содержать файлы, к которым имеют доступ несколько пользователей. Такая модель ограниченного доступа означает, что разные пользователи могут видеть разные списки элементов в одной и той же папке. Пользователь, имеющий доступ к родительской папке «Мой диск», но не имеющий доступа к элементам внутри этой папки, имеет «ограниченный доступ». Это создает ситуацию, когда трудно определить, кто имеет доступ в иерархии папок.

Напротив, файлы на общих дисках принадлежат самому общему диску. Общие диски имеют расширенную модель, поэтому у каждого пользователя один и тот же список элементов в одной и той же папке.

Введение папок с ограниченным доступом воспроизводит модель расширенного доступа, существовавшую на общих дисках, и в приложении «Мой диск». Благодаря этому изменению, папки с ограниченным доступом являются единственным исключением, позволяющим ограничивать доступ к определенной подпапке как на «Моем диске», так и на общих дисках.

В этом руководстве объясняется, как управлять папками с ограниченным и расширенным доступом в 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 был внесен ряд улучшений:

  1. Поле permissionDetails[] в ресурсе permissions теперь заполняется для элементов в разделе «Мой диск». Ранее эти поля либо не задавались, либо дублировались из поля teamDrivePermissionDetails где это было необходимо. Заполняются только поля permissionType и inherited поля в разделе «Мой диск».

    Поле permissionDetails[].inherited указывает, наследуется ли разрешение от родительского элемента. Оно позволяет определить, наследуются ли определенные роли (например, reader ») от родительского элемента, и предоставлена ​​ли элементу непосредственно более высокая роль (например, writer »).

    При просмотре разрешений для элемента поле permissionDetails[] может содержать несколько записей. Если оно присутствует, то имеется одна запись для разрешения, непосредственно относящегося к элементу в данной области действия, а затем записи для унаследованных или членских разрешений элемента.

  2. Разработчики могут включить расширенный доступ к API в разделе «Мой диск» до введения каких-либо обязательных мер в будущем. Вы можете установить параметр запроса enforceExpansiveAccess в true , чтобы будущие изменения в расширенном доступе не повлияли на ваше приложение.

    Если вы подключитесь сейчас, API будет работать для элементов в разделе «Мой диск» так же, как и для элементов на общих дисках. Например, любая попытка ограничить доступ ниже унаследованной роли завершится неудачей при вызове permissions.update() . Аналогично, вызов permissions.delete() завершится неудачей, если разрешение унаследовано.

Выявление и предотвращение ограниченного доступа

Возможно, ваше приложение создает ограниченный доступ (когда пользователь имеет доступ к родительской папке "Мой диск", но не к файлу внутри этой папки) к папкам "Мой диск" при использовании методов permissions.update() или permissions.delete() .

При использовании этих методов вы можете просмотреть поля ресурса permissions , чтобы определить, где запрос может привести к ограничению доступа, и избежать отправки таких запросов. Для обнаружения такой ситуации используйте поле enforceExpansiveAccess в вашем запросе.

Кроме того, если ваше приложение уже установило ограниченный доступ к вашим папкам, вы можете выполнить следующие действия:

  1. Пройдитесь по иерархии папок, чтобы снять ограничение доступа. Вместо него следует установить ограничение доступа к папке .

  2. Если вы пытаетесь отменить общий доступ к файлу, вы можете создать промежуточную папку, установить для нее ограниченный доступ и переместить файл в новую папку.

  3. Если вы не хотите использовать папки с ограниченным доступом, но вам необходимо ограничить некоторые права доступа, вы можете переместить файл в частную папку (например, в корневую папку «Мой диск»). Затем вы можете создать ярлык к исходному местоположению файла, чтобы пользователи могли продолжать им пользоваться.