【问题标题】:Is it possible and safe to use deterministic UUID for access control?使用确定性 UUID 进行访问控制是否可行且安全?
【发布时间】:2017-03-07 17:51:47
【问题描述】:

假设有一个多租户平台,用户可以查看其所属组织拥有的所有资源,而无法查看任何其他组织的资源。如果所有资源 UUID 都是使用确定性 UUID 生成的,并且其所有者组织的 UUID 作为其命名空间,那么是否可以仅使用组织 UUID、资源的 UUID 和确定性 UUID 方法来确定任何资源的所有者组织?

我是从高度确定性的比特币钱包中得出这个想法的,其中初始私钥用于生成钱包中的所有后续私钥(可能解释不正确),以便您始终可以再次生成相同的私钥只是原来的。

【问题讨论】:

    标签: security database-design uuid uniqueidentifier


    【解决方案1】:

    通常,多租户环境比所有者组织 UUID 具有更强的租户隔离性。通常,UUID 值具有不确定的组成部分。如果您使用的是确定性 UUID,那么有人可能会推断出另一个所有者组织的价值。在那一点上,确定性 UUID = int identity。如果攻击者可以指定 UUID 值,他们将很容易受到攻击。

    您可能会提出的问题是,不显眼是否能提供保护。虽然显眼可能会给你带来更大的目标,但随机不显眼的人的身份一直被盗。真正的安全性在于密钥而不是算法。

    【讨论】:

    • 我想我遗漏了一个重要的细节。公司 UUID 不会像秘密一样被使用,它只会用于识别公司是否拥有其他资源。经过身份验证的用户将提供他们的身份验证令牌(例如 OAuth2),并且从该令牌将向身份验证系统请求用户的信息,包括公司 UUID。公司 UUID 可以与每个资源一起存储并以这种方式进行比较,或者如果 UUID 可以根据原始公司 UUID 确定,您甚至不需要在每个资源上存储公司 UUID。
    • 我们可以进入多租户环境的安全方法,例如为每个公司使用单独的数据库表或单独的数据库,但我的问题是关于确定性 UUID 的功能。
    • 您是在考虑普通 uuid 还是非确定性 uuid?目前尚不清楚为什么它们会吸引您的用例,显然您对使用它们有一些保留。为什么不直接使用 64 位 int?
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多