Включение тестовой среды приложения
В Вашем OS X проект XCode сконфигурируйте тонкозернистые права доступа путем включения настроек на вкладке Summary целевого редактора. Эти настройки, в свою очередь, добавьте, что булевы значения к праву вводят цель .entitlements
файл списка свойств. Когда Вы разрабатываете проект, значения тогда включены в подпись кода цели.
Можно думать об использовании прав Тестовой среды приложения как двухступенчатый процесс:
Поиграйте в песочнице цель, удаляющую большинство возможностей взаимодействия с системой
Возможности восстановления к поигравшей в песочнице цели, по мере необходимости, путем конфигурирования прав Тестовой среды приложения
Во время выполнения, если цель требует возможности или системного ресурса, для которого цель не названа, демон песочницы (sandboxd
) регистрирует сообщение нарушения к консоли.
Для получения дополнительной информации о Тестовой среде приложения, считайте Руководство по проектированию Тестовой среды приложения.
Дающие право ключи тестовой среды приложения
В этом разделе описываются ключи, которые можно использовать для совещания возможностей к поигравшему в песочнице приложению в OS X. Первый ключ включает Тестовую среду приложения; другие конфигурируют песочницу. Если Тестовая среда приложения не включена, другие ключи в этом разделе бессмысленны.
Значение для использования для любого из этих ключей является булевской переменной YES
или NO
, со значением по умолчанию в каждом случае быть NO
. Если Вы редактируете .entitlements
зарегистрируйте непосредственно в текстовом редакторе, соответствующие булевы значения для использования <true/>
и <false/>
. Значение по умолчанию для каждого ключа является ложью, таким образом, Вы можете (и обычно должен) не учитывать право полностью вместо того, чтобы указать ложное значение.
В случаях, где там только для чтения и дающие право пары ключей чтения-записи, использование любого ключа в паре является взаимоисключающим с другим.
Добавьте, что эти ключи при помощи вкладки Summary XCode предназначаются для редактора. Можно также добавить их непосредственно к цели .entitlements
файл с редактором списка свойств XCode.
Для получения информации о дополнительных правах для обработки особых обстоятельств посмотрите Права Временного исключения Тестовой среды приложения.
Для каждого ключа в этой таблице, обеспечивая булево значение YES
включает соответствующую возможность (если не указано иное).
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.
Установка | Ключ Entitlement |
---|---|
Включите игру в песочнице приложения |
|
Включение выбранного пользователями доступа к файлу
XCode обеспечивает всплывающее меню, на вкладке Summary целевого редактора, с выбором включить или доступ для чтения-записи только для чтения к файлам и папкам, которые явно выбирает пользователь. При включении выбранного пользователями доступа к файлу Вы получаете программируемый доступ к файлам и папкам, что пользователь открывает использование NSOpenPanel
объект и файлы пользователь сохраняют использование NSSavePanel
объект.
Определенное другое взаимодействие с пользователем, такое как перетаскивание элементов к Вашему приложению или выбору элементов из меню Open Recent, автоматически разворачивает Вашу песочницу для включения тех элементов. Точно так же, когда OS X возобновляет приложение после того, как перезагрузка, песочница автоматически расширена для включения любых автоматически открытых элементов.
Для включения выбранного пользователями доступа к файлу в приложении используйте целевую установку редактора XCode, показанную в Таблице 3-2.
Установка | Дающие право ключи |
---|---|
Пользователь выбранный файл |
|
Включение доступа к файлам в стандартных расположениях
В дополнение к предоставлению выбранного пользователями доступа к файлу можно использовать права для предоставления программируемого доступа к файлу к следующим пользовательским папкам:
Загрузки
Музыка
Фильмы
Изображения
Управление XCode для включения доступа папки Downloads является флажком; средства управления для включения доступа к этим другим папкам являются всплывающими меню.
При включении программируемого доступа к папке Movies пользователя Вы также получаете доступ к их фильмам iTunes.
Повторное открытие файлов OS X с помощью Резюме не требует присутствия никакого дающего право ключа.
Для включения программируемого доступа к определенным папкам используйте целевые настройки редактора XCode, показанные в Таблице 3-3.
Установка | Дающие право ключи |
---|---|
Папка загрузок |
|
Музыкальная папка |
|
Папка фильмов |
|
Папка изображений |
|
Включение ограниченной по объему безопасностью закладки и доступа через URL
Если Вы хотите предоставить своему поигравшему в песочнице приложению персистентный доступ к ресурсам файловой системы, необходимо включить ограниченную по объему безопасностью закладку и доступ через URL. Ограниченные по объему безопасностью закладки являются доступным запуском в OS X v10.7.3.
Добавить bookmarks.app-scope
или bookmarks.document-scope
право, отредактируйте цель .entitlements
файл списка свойств с помощью редактора списка свойств XCode. Используйте дающие право ключи, показанные в Таблице 3-4, в зависимости от которого типа доступа Вы хотите. Используйте значение <true/>
для каждого права Вы хотите включить. Можно включить или или оба права.
Для получения дополнительной информации об ограниченных по объему безопасностью закладках считайте Ограниченные по объему безопасностью Закладки и Персистентный Доступ Ресурса в Руководстве по проектированию Тестовой среды приложения.
Ключ Entitlement | Описание |
---|---|
| Включает использование ограниченных по объему приложением закладок и URLs |
| Включает использование ограниченных по объему документом закладок и URLs. Примечание версии: в OS X v10.7.3, назвали этот дающий право ключ |
Включение доступа к сети
Флажки Network XCode на вкладке Summary целевого редактора позволяют Вам включить доступ к сети для своего приложения.
Чтобы позволить Вашему приложению соединиться с серверным процессом, работающим на другой машине (или на той же машине), позвольте исходить сетевые соединения.
Чтобы позволить открыть сеть, слушая, сокет так, чтобы другие компьютеры могли соединиться с Вашим приложением, позволяет поступать сетевые соединения.
Для включения доступа к сети используйте целевые настройки редактора XCode, показанные в Таблице 3-5.
Установка | Ключ Entitlement |
---|---|
Позвольте входящие соединения |
|
Позвольте исходящие соединения |
|
Включение аппаратного доступа
Чтобы позволить поигравшей в песочнице цели получать доступ к аппаратным службам на систему — USB, печати, или встроенной камере и микрофону — включают соответствующую установку на вкладке Summary цели XCode редактор.
Доступ к камере включает доступ к получению видеоизображения и неподвижного изображения с помощью встроенной камеры при наличии.
Доступ к микрофону включает доступ к аудиозаписи с помощью встроенного микрофона при наличии.
Доступ USB включает возможности взаимодействовать с USB-устройствами с помощью доступа USB-устройства APIs. На нарушении,
sandboxd
называет класс Набора I/O, к которому Ваш код попытался получить доступ.Если Вы хотите предоставить цели возможность распечатать, печать доступа требуется.
Для включения доступа к аппаратным средствам используйте целевые настройки редактора XCode, показанные в Таблице 3-6.
Установка | Ключ Entitlement |
---|---|
Позвольте доступ к камере |
|
Позвольте доступ к микрофону |
|
Предоставьте доступ USB |
|
Позвольте распечатывать |
|
Для предоставления доступа к устройствам, для которых никакой флажок не существует в пользовательском интерфейсе XCode необходимо вручную добавить надлежащее право на дающий право список свойств приложения. Эти дополнительные права перечислены в Таблице 3-7. Все эти ключи принимают булево значение.
Ключ Entitlement | Описание |
---|---|
| Взаимодействие с устройствами AVB при помощи Аудио платформы Образования моста Видео |
| Взаимодействие с bluetooth-устройствами |
| Взаимодействие с устройствами FireWire (в настоящее время, не поддерживает взаимодействие с аудио/видеоустройствами, таким как камеры DV), |
| Взаимодействие с последовательными устройствами |
Включение доступа персональных данных
Персональные данные пользователя недоступны Вашему поигравшему в песочнице приложению, если Вы не предоставляете доступ с помощью надлежащих настроек.
Доступ Адресной книги включает доступ для чтения-записи к контактам в адресной книге пользователя.
Доступ Служб определения местоположения позволяет использованию Базовой платформы Расположения определить географическую позицию компьютера.
Календарный доступ включает доступ для чтения-записи к календарям пользователя.
Для включения доступа к персональным данным используйте целевые настройки редактора XCode, показанные в Таблице 3-8.
Установка | Ключ Entitlement |
---|---|
Позвольте доступ к данным адресной книги |
|
Предоставьте доступ служб определения местоположения |
|
Позвольте календарный доступ к данным |
|
Добавление приложения к группе приложений
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/>
.
Ключ Entitlement | Описание |
---|---|
| Включает наследование Тестовой среды приложения |
Включение сценариев других приложений
Если Ваше приложение должно управлять другим scriptable приложением, Ваше приложение может использовать целевое право сценариев, чтобы запросить доступ к один или больше групп доступа сценариев scriptable приложения.
Ключ Entitlement | Описание |
---|---|
| Возможность использовать определенный 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
.