Включение тестовой среды приложения

В Вашем OS X проект XCode сконфигурируйте тонкозернистые права доступа путем включения настроек на вкладке Summary целевого редактора. Эти настройки, в свою очередь, добавьте, что булевы значения к праву вводят цель .entitlements файл списка свойств. Когда Вы разрабатываете проект, значения тогда включены в подпись кода цели.

Можно думать об использовании прав Тестовой среды приложения как двухступенчатый процесс:

  1. Поиграйте в песочнице цель, удаляющую большинство возможностей взаимодействия с системой

  2. Возможности восстановления к поигравшей в песочнице цели, по мере необходимости, путем конфигурирования прав Тестовой среды приложения

Во время выполнения, если цель требует возможности или системного ресурса, для которого цель не названа, демон песочницы (sandboxd) регистрирует сообщение нарушения к консоли.

Для получения дополнительной информации о Тестовой среде приложения, считайте Руководство по проектированию Тестовой среды приложения.

Дающие право ключи тестовой среды приложения

В этом разделе описываются ключи, которые можно использовать для совещания возможностей к поигравшему в песочнице приложению в OS X. Первый ключ включает Тестовую среду приложения; другие конфигурируют песочницу. Если Тестовая среда приложения не включена, другие ключи в этом разделе бессмысленны.

Значение для использования для любого из этих ключей является булевской переменной YES или NO, со значением по умолчанию в каждом случае быть NO. Если Вы редактируете .entitlements зарегистрируйте непосредственно в текстовом редакторе, соответствующие булевы значения для использования <true/> и <false/>. Значение по умолчанию для каждого ключа является ложью, таким образом, Вы можете (и обычно должен) не учитывать право полностью вместо того, чтобы указать ложное значение.

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

Добавьте, что эти ключи при помощи вкладки Summary XCode предназначаются для редактора. Можно также добавить их непосредственно к цели .entitlements файл с редактором списка свойств XCode.

Для получения информации о дополнительных правах для обработки особых обстоятельств посмотрите Права Временного исключения Тестовой среды приложения.

Для каждого ключа в этой таблице, обеспечивая булево значение YES включает соответствующую возможность (если не указано иное).

Ключ Entitlement
Возможность

com.apple.security.app-песочница

Включает Тестовую среду приложения для цели в проекте XCode

com.apple.security.application-группы

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

Поддерживаемый в OS X v10.7.5 и в v10.8.3 и позже. Формат для этого атрибута описан в Добавлении Приложения к Группе приложений.

com.apple.security.assets.movies.read-только

Доступ только для чтения к папке Movies пользователя и фильмам iTunes

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.assets.movies.read-записать

Доступ для чтения-записи к папке Movies пользователя и фильмам iTunes

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.assets.music.read-только

Доступ только для чтения к папке Music пользователя

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.assets.music.read-записать

Доступ для чтения-записи к папке Music пользователя

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.assets.pictures.read-только

Доступ только для чтения к папке Pictures пользователя

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.assets.pictures.read-записать

Доступ для чтения-записи к папке Pictures пользователя

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.device.audio-video-bridging

Связь с устройствами AVB

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.device.bluetooth

Взаимодействие с bluetooth-устройствами

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.device.camera

Получение фильмов и неподвижных изображений с помощью встроенной камеры, при наличии

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.device.firewire

Взаимодействие с устройствами FireWire (в настоящее время, не поддерживает взаимодействие с аудио/видеоустройствами, таким как камеры DV),

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.device.microphone

Запись аудио с помощью встроенного микрофона, при наличии, вместе с доступом к аудиовходу с помощью любого Core Audio API, поддерживающий аудиовход

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.device.serial

Взаимодействие с последовательными устройствами

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.device.usb

Взаимодействие с USB-устройствами, включая устройства HID, такие как джойстики

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.files.downloads.read-записать

Доступ для чтения-записи к папке Downloads пользователя

Для получения дополнительной информации посмотрите Доступ Включения к Файлам в Стандартных Расположениях.

com.apple.security.files.bookmarks.app-объем

Использование ограниченных по объему приложением закладок и URLs

Для получения дополнительной информации посмотрите Включающую Ограниченную по объему безопасностью Закладку и Доступ через URL.

com.apple.security.files.bookmarks.document-объем

Использование ограниченных по объему документом закладок и URLs

Для получения дополнительной информации посмотрите Включающую Ограниченную по объему безопасностью Закладку и Доступ через URL.

com.apple.security.files.user-selected.read-only

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

Для получения дополнительной информации посмотрите Включающий Выбранный пользователями File Access.

com.apple.security.files.user-selected.read-write

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

Для получения дополнительной информации посмотрите Включающий Выбранный пользователями File Access.

com.apple.security.files.user-selected.executable

Позволяет приложениям писать исполняемые файлы.

Для получения дополнительной информации посмотрите Включающий Выбранный пользователями File Access.

com.apple.security.inherit

Наследование дочернего процесса песочницы родителя

Для получения дополнительной информации посмотрите Наследование Тестовой среды приложения Включения.

com.apple.security.network.client

Сетевой сокет для соединения с другими машинами

Для получения дополнительной информации посмотрите Доступ к сети Включения.

com.apple.security.network.server

Сетевой сокет для того, чтобы прислушаться к входящим соединениям инициируется другими машинами

Для получения дополнительной информации посмотрите Доступ к сети Включения.

com.apple.security.personal-information.addressbook

Доступ для чтения-записи к контактам в адресной книге пользователя; позволяет приложениям выводить адресную книгу по умолчанию, если больше чем один присутствует в системе

Для получения дополнительной информации посмотрите Доступ Персональных данных Включения.

com.apple.security.personal-information.calendars

Доступ для чтения-записи к календарям пользователя

Для получения дополнительной информации посмотрите Доступ Персональных данных Включения.

com.apple.security.personal-information.location

Использование Базовой платформы Расположения для определения географического местоположения компьютера

Для получения дополнительной информации посмотрите Доступ Персональных данных Включения.

com.apple.security.print

Печать

Для получения дополнительной информации посмотрите Аппаратный Доступ Включения.

com.apple.security.scripting-цели

Возможность использовать определенный AppleScript, пишущий сценарий групп доступа в определенном scriptable приложении

Для получения дополнительной информации посмотрите То, чтобы позволять Писать сценарий Других Приложений.

Включение тестовой среды приложения

Вы включаете Тестовую среду приложения индивидуально для каждой цели в OS X проект XCode. Например, можно разработать проект как главное приложение и некоторых помощников в форме служб XPC. Вы тогда включаете и конфигурируете песочницу для каждой цели индивидуально.

Чтобы изучить, как включить Тестовую среду приложения для Вашего приложения OS X, включающего подписывание кода выполнения, посмотрите Быстрый запуск Тестовой среды приложения в Руководстве по проектированию Тестовой среды приложения. Существенный шаг должен гарантировать, что устанавливается целевой флажок редактора, названный в Таблице 3-1.

  Установка Table 3-1 Xcode для включения Тестовой среды приложения

Установка

 Ключ Entitlement

Включите игру в песочнице приложения

com.apple.security.app-sandbox

Включение выбранного пользователями доступа к файлу

XCode обеспечивает всплывающее меню, на вкладке Summary целевого редактора, с выбором включить или доступ для чтения-записи только для чтения к файлам и папкам, которые явно выбирает пользователь. При включении выбранного пользователями доступа к файлу Вы получаете программируемый доступ к файлам и папкам, что пользователь открывает использование NSOpenPanel объект и файлы пользователь сохраняют использование NSSavePanel объект.

Определенное другое взаимодействие с пользователем, такое как перетаскивание элементов к Вашему приложению или выбору элементов из меню Open Recent, автоматически разворачивает Вашу песочницу для включения тех элементов. Точно так же, когда OS X возобновляет приложение после того, как перезагрузка, песочница автоматически расширена для включения любых автоматически открытых элементов.

Для включения выбранного пользователями доступа к файлу в приложении используйте целевую установку редактора XCode, показанную в Таблице 3-2.

  Установка Table 3-2 Xcode для выбранного пользователями файла и доступа папки

Установка

Дающие право ключи

Пользователь выбранный файл

com.apple.security.files.user-selected.read-only

com.apple.security.files.user-selected.read-write

Включение доступа к файлам в стандартных расположениях

В дополнение к предоставлению выбранного пользователями доступа к файлу можно использовать права для предоставления программируемого доступа к файлу к следующим пользовательским папкам:

Управление XCode для включения доступа папки Downloads является флажком; средства управления для включения доступа к этим другим папкам являются всплывающими меню.

При включении программируемого доступа к папке Movies пользователя Вы также получаете доступ к их фильмам iTunes.

Повторное открытие файлов OS X с помощью Резюме не требует присутствия никакого дающего право ключа.

Для включения программируемого доступа к определенным папкам используйте целевые настройки редактора XCode, показанные в Таблице 3-3.

  Настройки Table 3-3 Xcode для программируемого файла и доступа папки

Установка

Дающие право ключи

Папка загрузок

com.apple.security.files.downloads.read-write

Музыкальная папка

com.apple.security.assets.music.read-only

com.apple.security.assets.music.read-write

Папка фильмов

com.apple.security.assets.movies.read-only

com.apple.security.assets.movies.read-write

Папка изображений

com.apple.security.assets.pictures.read-only

com.apple.security.assets.pictures.read-write

Включение ограниченной по объему безопасностью закладки и доступа через URL

Если Вы хотите предоставить своему поигравшему в песочнице приложению персистентный доступ к ресурсам файловой системы, необходимо включить ограниченную по объему безопасностью закладку и доступ через URL. Ограниченные по объему безопасностью закладки являются доступным запуском в OS X v10.7.3.

Добавить bookmarks.app-scope или bookmarks.document-scope право, отредактируйте цель .entitlements файл списка свойств с помощью редактора списка свойств XCode. Используйте дающие право ключи, показанные в Таблице 3-4, в зависимости от которого типа доступа Вы хотите. Используйте значение <true/> для каждого права Вы хотите включить. Можно включить или или оба права.

Для получения дополнительной информации об ограниченных по объему безопасностью закладках считайте Ограниченные по объему безопасностью Закладки и Персистентный Доступ Ресурса в Руководстве по проектированию Тестовой среды приложения.

  Ключи Table 3-4 Entitlement для включения ограниченной по объему безопасностью закладки и доступа через URL

 Ключ Entitlement                                                                           

Описание

com.apple.security.files.bookmarks.app-scope

Включает использование ограниченных по объему приложением закладок и URLs

com.apple.security.files.bookmarks.document-scope

Включает использование ограниченных по объему документом закладок и URLs.

Примечание версии: в OS X v10.7.3, назвали этот дающий право ключ com.apple.security.files.bookmarks.collection-scope

Включение доступа к сети

Флажки Network XCode на вкладке Summary целевого редактора позволяют Вам включить доступ к сети для своего приложения.

Чтобы позволить Вашему приложению соединиться с серверным процессом, работающим на другой машине (или на той же машине), позвольте исходить сетевые соединения.

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

Для включения доступа к сети используйте целевые настройки редактора XCode, показанные в Таблице 3-5.

  Настройки Table 3-5 Xcode для доступа к сети

Установка

 Ключ Entitlement

Позвольте входящие соединения

com.apple.security.network.server

Позвольте исходящие соединения

com.apple.security.network.client

Включение аппаратного доступа

Чтобы позволить поигравшей в песочнице цели получать доступ к аппаратным службам на систему — USB, печати, или встроенной камере и микрофону — включают соответствующую установку на вкладке Summary цели XCode редактор.

Для включения доступа к аппаратным средствам используйте целевые настройки редактора XCode, показанные в Таблице 3-6.

  Настройки Table 3-6 Xcode для аппаратного доступа

Установка

 Ключ Entitlement

Позвольте доступ к камере

com.apple.security.device.camera

Позвольте доступ к микрофону

com.apple.security.device.microphone

Предоставьте доступ USB

com.apple.security.device.usb

Позвольте распечатывать

com.apple.security.print

Для предоставления доступа к устройствам, для которых никакой флажок не существует в пользовательском интерфейсе XCode необходимо вручную добавить надлежащее право на дающий право список свойств приложения. Эти дополнительные права перечислены в Таблице 3-7. Все эти ключи принимают булево значение.

Таблица 3-7  Другие дающие право ключи для доступа к аппаратным средствам

 Ключ Entitlement                                                                                                 

Описание

com.apple.security.device.audio-video-bridging

Взаимодействие с устройствами AVB при помощи Аудио платформы Образования моста Видео

com.apple.security.device.bluetooth

Взаимодействие с bluetooth-устройствами

com.apple.security.device.firewire

Взаимодействие с устройствами FireWire (в настоящее время, не поддерживает взаимодействие с аудио/видеоустройствами, таким как камеры DV),

com.apple.security.device.serial

Взаимодействие с последовательными устройствами

Включение доступа персональных данных

Персональные данные пользователя недоступны Вашему поигравшему в песочнице приложению, если Вы не предоставляете доступ с помощью надлежащих настроек.

Для включения доступа к персональным данным используйте целевые настройки редактора XCode, показанные в Таблице 3-8.

  Настройки Table 3-8 Xcode для доступа к персональным данным пользователя

Установка

 Ключ Entitlement

Позвольте доступ к данным адресной книги

com.apple.security.personal-information.addressbook

Предоставьте доступ служб определения местоположения

com.apple.security.personal-information.location

Позвольте календарный доступ к данным

com.apple.security.personal-information.calendars

Добавление приложения к группе приложений

com.apple.security.application-groups (доступный в OS X v10.7.5 и v10.8.3 и позже), позволяет многократным приложениям, произведенным единственной группой разработчиков совместно использовать доступ к специальному контейнеру группы. Этот контейнер предназначается для содержания, которое не является направлением пользователя, таким как совместно использованные кэши или базы данных.

Кроме того, этот атрибут позволяет приложениям в группе совместно использовать Маха и семафоры POSIX и использовать определенные другие механизмы IPC среди элементов группы. Для дополнительных подробных данных и соглашений о присвоении имен, считайте “Маха IPC и Семафоры POSIX и Общая память” в Руководстве по проектированию Тестовой среды приложения.

Значение для этого ключа должно иметь тип array, и должен содержать один или больше string значения, каждое из которых должно состоять из Вашей группы разработчиков ID, сопровождаемый периодом, сопровождаемым произвольным именем, выбранным Вашей группой разработчиков. Например:

<key>com.apple.security.application-groups</key>
<array>
    <string>DG29478A379Q6483R9214.HolstFirstAppSuite</string>
    <string>DG29478A379Q6483R9214.HolstSecondAppSuite</string>
</array>

Контейнеры группы автоматически создаются или добавляются в контейнер песочницы каждого приложения, как определено существованием этих ключей. Контейнеры группы сохранены в ~/Library/Group Containers/<application-group-id>, где <application-group-id> одна из строк от массива. Ваше приложение может получить путь к контейнерам группы путем вызова containerURLForSecurityApplicationGroupIdentifier: метод NSFileManager.

Включение наследования тестовой среды приложения

Если Ваше приложение использует дочерний процесс, создаваемый с любым posix_spawn функционируйте или NSTask класс, можно сконфигурировать дочерний процесс для наследования песочницы его родителя. Однако использование дочернего процесса не обеспечивает безопасность, предоставленную при помощи службы XPC.

Для включения наследования песочницы дочерняя цель должна использовать точно два дающих право ключа Тестовой среды приложения: com.apple.security.app-sandbox и com.apple.security.inherit. При указании какого-либо другого права Тестовой среды приложения система прерывает дочерний процесс. Можно, однако, присудить другие возможности к дочернему процессу посредством прав уведомления и iCloud.

Главное приложение в проекте XCode никогда не должно иметь a YES значение для inherit право.

Добавить inherit право, отредактируйте цель .entitlements файл списка свойств с помощью редактора списка свойств XCode. Используйте дающий право ключ, показанный в Таблице 3-9 со значением <true/>.

  Ключ Table 3-9 Entitlement для наследования Тестовой среды приложения родительского процесса

 Ключ Entitlement                                                                                                 

Описание

com.apple.security.inherit

Включает наследование Тестовой среды приложения

Включение сценариев других приложений

Если Ваше приложение должно управлять другим scriptable приложением, Ваше приложение может использовать целевое право сценариев, чтобы запросить доступ к один или больше групп доступа сценариев scriptable приложения.

  Ключ Table 3-10 Entitlement для доступа к целям сценариев

 Ключ Entitlement                                                                                                 

Описание

com.apple.security.scripting-targets

Возможность использовать определенный AppleScript, пишущий сценарий групп доступа в определенном scriptable приложении

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

<key>com.apple.security.scripting-targets</key>
    <dict>
        <key>com.apple.mail</key>
        <array>
            <string>com.apple.mail.compose</string>
        </array>
    </dict>

Для получения дополнительной информации о том, как добавить группы доступа сценариев к приложению, наблюдайте 2012 WWDC: Безопасные Методы Автоматизации в OS X и прочитанный страница руководства для sdef.