【问题标题】:Cloudkit Security RolesCloudkit 安全角色
【发布时间】:2016-06-20 04:07:18
【问题描述】:

我可以看到 CloudKit 中的 Security Rolls 的唯一用途是授予其他团队成员访问 cloudkit 仪表板的权限,以便修改仪表板中的表格?这是正确的,还是我遗漏了什么?

目前我是唯一可以登录仪表板的人,我无法添加其他团队成员。我认为这是因为我在 Apple 注册为单一开发者?我希望使用它在公共数据库上设置某种类型的安全性,但似乎我无法使用安全角色来做到这一点。

我正在尝试为公共数据库设置三种不同类型的用户:

我将在同一个容器中运行 3 个应用程序。

1.) 管理员 - 单独的应用程序

2.) 消费者 - 单独的应用程序

3.) 承包商 - 单独的应用程序

我找到了这个帖子:

How do I access security role in cloudkit

看来我必须在每个应用程序中添加安全性才能仅访问该类型用户允许的数据?

【问题讨论】:

    标签: ios security cloudkit


    【解决方案1】:

    我已经设置了多个应用程序共享同一个容器,您不仅需要在 Xcode 本身中进行配置,还需要在您编写的代码中进行配置。

    let container = CKContainer(identifier: "iCloud.yourDB")
    let publicDB = container.publicCloudDatabase
    

    访问权限是基于 iCloud 用户而非应用程序授予的。因此,如果您要让所有三个应用程序在使用相同 iCloud ID 的设备上运行,那么它们都将可以使用默认权限访问相同的公共和私有数据库。

    您需要“编码”才能在管理应用程序中“创建”和“写入”您的数据库。大概是在承包商应用程序中“写入”数据库并在您的消费者应用程序中“读取”数据库;一个示例场景。

    但是,如果计划是让多个 iCloud 用户使用共享同一个容器的不同应用程序,那么您的选择就会受到更多限制。私有数据库就是这样,私有的。所以不同的iCloud用户不能共享同一个私有数据库,不能更改权限期限,他们只能共享公共数据库。

    在公共数据库中,默认权限将授予所有人读取权限,仅允许经过身份验证的 [登录 iCloud 帐户] 用户创建新记录并将所述创建的记录与创建它们的用户链接。

    换句话说,如果经过身份验证的用户 [A] 在公共数据库中创建了一条记录,则用户 [B] 可以读取它,但没有写入权限来更新它;如果您有要求,您将/可以更改访问权限以授予他们这样做的权利,您将在仪表板上进行更改。

    但请注意,据我所知,公共数据库上的配额并未链接到 iCloud 帐户,而是链接到应用程序。因此,如果您创建一个将大量数据转储到公共数据库的应用程序;当/如果您的应用程序用户超出每个应用程序每个用户允许的公共数据库配额时,Apple 将向您发送账单。 [是的,因此您的应用程序的用户越多,您获得的公共数据库配额就越多,但您应该/需要限制个人用户可以要求的金额以限制您对 iCloud 费用的责任!]

    我可能在最后一段中误解了 Apple 关于其工作原理/将向用户/应用程序收费的描述,欢迎通过各种方式进行澄清。

    【讨论】:

    • 感谢您的代码,之前尝试过,但它不起作用....标识符...我有很多问题,但最大的问题是让承包商上传 50MB - 100MB 每个项目具有读写能力,然后消费者可以从公共数据库中访问,生成报告供他们下载。因此,他们需要某种方式来访问该项目,而不是访问由其他各种承包商发布的所有其他项目。除了为每个项目设置密码的云登录之外,我还需要某种类型的登录。服务器到服务器是否允许我将数据发送到我的服务器?
    • 您可以在您的代码中添加一个登录名,并将一个可搜索的参考 UUID 与它关联到一个公共数据库中,消费者和承包商可以相互查找参考 UUID 并搜索该承包商/消费者提交的记录.但正如我在最后一段中所说,您需要非常小心公共数据库中的大量数据。我模糊地记得一套稍微不同的规则苹果资产[这是你需要的 50/100mb],但它们链接到你的应用程序,而不是 iCloud 帐户用户!
    • 他们知道数据限制和费用,并希望继续这样做。一旦我们开始跑步,将不得不以某种方式限制照片。 UUID 会很好。该应用程序的工作原理是所有数据都可以存储在手机上供以后上传(在数据收集时可能没有 wifi)。消费者可以下载消费者应用程序并向承包商请求访问权限,我可以验证 UUID。消费者可以稍后购买,然后我需要通过请求授予对商品的访问权限,验证他们应该具有访问权限,然后通过他们的 UUID 授予访问权限?他们说他们将有一个 Icloud DB 管理员来执行此操作?
    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 2015-09-30
    • 2016-05-17
    • 2021-07-25
    • 2014-10-22
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多