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

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

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

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

В этом руководстве объясняется, как управлять папками с ограниченным и расширенным доступом в Google Диске.

О папках с ограниченным доступом

Ограничьте доступ к папкам для определенных пользователей.

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

Папки с ограниченным доступом доступны как в разделе «Мой диск», так и в общих дисках. 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 . Подробнее см. в разделе Views .

Во всех записях в поле permissionDetails поле inherited установлено на true , что означает, что разрешение унаследовано и прямой доступ к содержимому папки не предоставлен.

Чтобы предоставить доступ как к содержимому папки, так и к метаданным, установите для поля inheritedPermissionsDisabled значение false или обновите роль до reader или выше.

Наконец, если разрешение было сначала ограничено путём отключения наследования для папки ( inheritedPermissionsDisabled=true ), а затем оно было добавлено обратно непосредственно для этой папки, значения в теле ответа становятся inheritedPermissionsDisabled=true а поле view — неустановленным. Если папка находится на общем диске, в списке permissionDetails есть запись с полем inherited , установленным в значение false , что означает, что разрешение не наследуется. Это разрешение предоставляет доступ как к содержимому папки, так и к метаданным, как и любое другое разрешение.

Удалить папки с ограниченным доступом

Папки с ограниченным доступом можно удалить, используя метод files.delete() ресурса files .

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

Если у пользователя есть роль owner , вся иерархия удаляется.

На общих дисках роль organizer может удалять иерархии, даже если они содержат папки с ограниченным доступом. Если роль fileOrganizer удаляет иерархию, содержащую папки с ограниченным доступом, результат зависит от того, были ли они добавлены обратно как fileOrganizer для папок с ограниченным доступом. Если да, то удаляется вся иерархия. В противном случае папки с ограниченным доступом перемещаются в корневую папку общего диска.

О расширенном доступе

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

Адаптируйтесь к расширенному доступу

Чтобы разработчикам было проще адаптироваться к расширенному доступу, в API Google Диска было внесено несколько улучшений:

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

,

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

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

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

В этом руководстве объясняется, как управлять папками с ограниченным и расширенным доступом в Google Диске.

О папках с ограниченным доступом

Ограничьте доступ к папкам для определенных пользователей.

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

Папки с ограниченным доступом доступны как в разделе «Мой диск», так и в общих дисках. 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 . Подробнее см. в разделе Views .

Во всех записях в поле permissionDetails поле inherited установлено на true , что означает, что разрешение унаследовано и прямой доступ к содержимому папки не предоставлен.

Чтобы предоставить доступ как к содержимому папки, так и к метаданным, установите для поля inheritedPermissionsDisabled значение false или обновите роль до reader или выше.

Наконец, если разрешение было сначала ограничено путём отключения наследования для папки ( inheritedPermissionsDisabled=true ), а затем оно было добавлено обратно непосредственно для этой папки, значения в теле ответа становятся inheritedPermissionsDisabled=true а поле view — неустановленным. Если папка находится на общем диске, в списке permissionDetails есть запись с полем inherited , установленным в значение false , что означает, что разрешение не наследуется. Это разрешение предоставляет доступ как к содержимому папки, так и к метаданным, как и любое другое разрешение.

Удалить папки с ограниченным доступом

Папки с ограниченным доступом можно удалить, используя метод files.delete() ресурса files .

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

Если у пользователя есть роль owner , вся иерархия удаляется.

На общих дисках роль organizer может удалять иерархии, даже если они содержат папки с ограниченным доступом. Если роль fileOrganizer удаляет иерархию, содержащую папки с ограниченным доступом, результат зависит от того, были ли они добавлены обратно как fileOrganizer для папок с ограниченным доступом. Если да, то удаляется вся иерархия. В противном случае папки с ограниченным доступом перемещаются в корневую папку общего диска.

О расширенном доступе

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

Адаптируйтесь к расширенному доступу

Чтобы разработчикам было проще адаптироваться к расширенному доступу, в API Google Диска было внесено несколько улучшений:

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