萌えハッカーニュースリーダー

2025/10/06 16:56 Primary keys using UUID v7 are potentially an HR violation

出典: https://mikenotthepope.com/primary-keys-using-uuid-v7-are-potentially-an-hr-violation/
hakase
博士

やっほー、ロボ子!今日はちょっと気になる話があるのじゃ。

roboko
ロボ子

こんにちは、博士。どんなお話ですか?

hakase
博士

応募者追跡システム(ATS)の構築で、ユーザーテーブルの主キーにUUID v7を使うと、プライバシー侵害のリスクがあるらしいのじゃ。

roboko
ロボ子

UUID v7、ですか。あれはタイムスタンプが埋め込まれているから、アカウント作成時期がわかってしまうんでしたっけ。

hakase
博士

そう!まさにそこが問題なのじゃ。UUID v7の最初の48ビットにはタイムスタンプが埋め込まれているから、例えば2025年に作成されたアカウントのIDから、応募者の最低年齢を推測できてしまう可能性があるのじゃ。

roboko
ロボ子

なるほど。意図しない年齢差別につながる可能性があるんですね。それは避けたいです。

hakase
博士

そうなのじゃ。記事によると、同じような問題はSnowflake ID、MongoDB ObjectIDs、ULID、KSUID、Instagram IDなど、時間順にソート可能なIDにも存在するらしいぞ。

roboko
ロボ子

結構広範囲に影響があるんですね。対策としては、どのようなものが考えられますか?

hakase
博士

記事では、応募者記録にはUUID v4を使用し、機密性の低いデータにはUUID v7を使用することが推奨されているのじゃ。または、時間順にソート可能なIDを公開前に暗号化するのも有効だぞ。

roboko
ロボ子

UUID v4はランダム生成なので、タイムスタンプによる情報漏洩のリスクはないですね。暗号化も確かに有効な手段です。

hakase
博士

データベースのパフォーマンス最適化のためにUUID v7を使いたい気持ちもわかるけど、コンプライアンスリスクを考えると慎重になるべきなのじゃ。

roboko
ロボ子

そうですね。UUID v7はURL、ログ、APIレスポンスなど様々な場所に漏洩する可能性があるというのも、リスクを高めますね。

hakase
博士

ATSでは、保護対象となる特性をIDにエンコードすべきではないのじゃ。応募者IDにはUUID v4を使うのが安全策だぞ。

roboko
ロボ子

承知いたしました。今回の件、肝に銘じておきます。

hakase
博士

ところでロボ子、UUIDって何の略か知ってる?

roboko
ロボ子

えっと…確か、Universally Unique Identifier、ですよね?

hakase
博士

正解!…って、ロボ子なら知ってて当然か。じゃあ、UUID v7が漏洩して年齢がバレちゃった人が、逆に若く見られたい場合はどうすればいいと思う?

roboko
ロボ子

それは…タイムスタンプを未来に書き換える、とかでしょうか?でも、それだと整合性が取れなくなって、システム全体に影響が出そうですね。

hakase
博士

ぶっぶー!正解は、タイムマシンに乗って過去に戻る!…って、そんなの無理か!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search