Как работают роли и разрешения безопасности CloudKit?

В CloudKit есть три роли безопасности по умолчанию:

  • Мир
  • Проверено
  • Создатель

И три разрешения:

  • Создать
  • Прочитать
  • Написать

Как работают эти роли безопасности и разрешения?

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

  • Что означают три роли? Первые два кажутся очевидными, но последний - менее очевидным. Например. относится ли Создатель к создателю таблицы или создателю записи?
  • Куда подпадает разрешение на удаление? Писать?
  • Можно ли применить роли безопасности к отдельным записям? (Например, я хочу, чтобы пользователь имел доступ только к подмножеству записей в таблице InstantMessages: тем, которые они отправляют, и тем, которые они получают. Можно ли что-то подобное сделать с помощью ролей безопасности?)
  • Разрешения наследуются? (Например, получает ли создатель все разрешения, предоставленные создателем, прошедшие проверку подлинности и мир?)
  • Разрешения чисто аддитивные? Или я могу создать настраиваемую роль, которая будет удалять привилегии, а не добавлять их? (Например, для создания роли безопасности «Забаненный пользователь».)
  • Как мне установить роль для пользователя? Могу ли я установить роль по умолчанию для каждого создаваемого пользователя? Могу ли я программно изменить роль пользователя?
  • Как мне создать новые роли безопасности? Могу ли я создавать / обновлять их программно?

person Senseful    schedule 12.07.2015    source источник


Ответы (1)


1) Как работают эти роли и разрешения безопасности? Вы устанавливаете их на панели управления в среде разработки.

2) Что означают три роли? Первые два кажутся очевидными, но последний не так. Например. Под создателем подразумевается создатель таблицы или создатель записи? - Создатель записи (а это означает, что все устройства, которые получают доступ к CloudKit с одной и той же учетной записью iCloud)

3) Куда подпадает разрешение на удаление? Писать? ДА

4) Могут ли роли безопасности применяться к отдельным записям? НЕТ

5) (Например, я хочу, чтобы у пользователя был доступ только к подмножеству записей в таблице InstantMessages: тем, которые они отправляют, и тем, которые они получают. Можно ли что-то в этом роде сделать с помощью ролей безопасности?) Что означает «доступ» ' значит? Пользователь может читать только те вещи, которые ваше приложение позволяет им читать и у которых есть разрешение на чтение. Пользователь может создавать или записывать (и удалять) только те записи, которые ваше приложение позволяет им создавать или изменять (и удалять) и которые у них есть разрешение на создание или запись - для этого требуется и то, и другое.

6) Наследуются ли разрешения? (Например, получает ли создатель все разрешения, предоставленные создателем, аутентифицированные и мировые?) Роли являются подмножествами другого - создатель - это подмножество аутентифицированных. аутентифицированный - это подмножество мира.

7) Есть разрешения .... программно? Разрешения относятся к широкому классу «создатель», «аутентифицированный» «мир», поэтому вы не можете устанавливать разрешения для каждого пользователя (за исключением того, что пользователь, который создает запись, является единственным создателем).

Но ключ ко всему этому - помнить, что для предоставления создания / чтения / записи записи требуется код вашего приложения, И конкретный пользователь должен иметь это разрешение. Таким образом, вы можете делать в коде все, что захотите, чтобы позволить кому угодно делать что угодно - при условии, что вы предоставили «Прошедшим проверку подлинности» право «писать».

person Peter B. Kramer    schedule 04.09.2015
comment
Применяются ли эти роли только к общедоступной базе данных? А как насчет общего или частного? - person halfbit; 04.04.2017
comment
Эти роли применяются к общедоступной базе данных и, как правило, также применимы к частной базе данных. Только одна учетная запись имеет доступ к частной базе данных. Следовательно, этот человек является творцом, и у создателя есть все права. Конец истории. (Общие файлы - я не уверен.) - person Peter B. Kramer; 05.04.2017