cnil-compliant-cookies について
CNILのCookie同意規則に対応するウェブサイト・プライバシーチーム向けの実装ガイドです。同意と拒否の同等表示、Cookieウォールの禁止、同意の再取得、情報開示を解説します。
主な機能
- 01同意と拒否の選択肢を同等に表示
- 02Cookieウォールの回避
- 03最長6か月ごとの同意再取得
- 04必須Cookieの免除条件
- 05目的・第三者・保存期間の開示
活用シーン
- 01Cookie同意バナーを設計
- 02拒否を同じ手軽さで選べるか確認
- 03同意更新と情報開示を計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ privacy-data-protection-skills --skill cnil-compliant-cookiesインストール後、Claude Code で/cnil-compliant-cookiesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/template.mdreferences/standards.mdworkflows.mdscripts/process.py詳細
CNIL に準拠した Cookie の実装
概要
フランスの情報処理と自由に関する国家委員会(Commission Nationale de l'Informatique et des Libertés、CNIL)は、Cookie の同意ルールを最も積極的に執行している欧州の機関です。2022 年 1 月、CNIL は Cookie の同意違反を理由に、Google LLC に 1 億 5,000 万ユーロ、Meta Platforms Ireland Ltd. に 6,000 万ユーロの罰金を科しました。これらの執行措置と、CNIL 決定第 2020-091 号(2020 年 9 月 17 日)により、欧州で最も詳細な Cookie 同意基準が定められています。
CNIL の Cookie 同意要件
1. 同意と拒否を同等に目立たせる(CNIL 決定 2020-091、第 2.1 項)
要件: ユーザーが Cookie を受け入れる場合と同じくらい簡単に拒否できる必要があります。「すべて拒否」オプションは、「すべて受け入れる」オプションと同等の視覚的な目立ちやすさで表示する必要があります。
CNIL の具体的な要件:
- 「すべて受け入れる」と「すべて拒否する」のボタンは、同じ階層(インターフェースの同じレイヤー)に配置する必要があります
- 両方のボタンの視覚的な扱い(サイズ、色、フォント、位置)は同等でなければなりません
- どちらのボタンも、もう一方より視覚的に目立たせたり、目立たなくしたりしてはなりません
- 「設定を管理」オプションを 3 つ目の選択肢として提示してもかまいませんが、「すべて拒否する」の代わりにしてはなりません
CloudVault SaaS Inc. の実装:
┌─────────────────────────────────────────────────────────────┐
│ CloudVault uses cookies to improve your experience. │
│ [Learn more about our cookie use] │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Accept All │ │ Refuse All │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ [Manage Preferences] │
└─────────────────────────────────────────────────────────────┘
Button specifications:
- Both: 200x44px, #2563EB blue background, white text, 16px bold
- Position: side by side, same vertical level
- "Manage Preferences": text link below, #6B7280 grey, 14px regular
2. Cookie ウォールの禁止(CNIL 決定 2020-091、第 2.2 項)
要件: ウェブサイトまたはサービスへのアクセスを、Cookie の受け入れを条件としてはなりません。すべての Cookie を拒否したユーザーも、同じコンテンツと機能にアクセスできる必要があります。
例外:
- CNIL は、一部の機能(例:パーソナライズされたおすすめ)には Cookie が必要な場合があることを認めています。その場合は、機能を制限しつつも利用可能なエクスペリエンスを提供する必要があります。
- ペイウォールと Cookie ウォールの違い:CNIL は、有料の Cookie 不使用の代替手段を、Cookie を利用した無料の選択肢と併せて提供することは、一定の条件下で認められる可能性があると示しています(決定第 2022-003 号)。これは「支払いか同意か」モデルと呼ばれますが、現在も議論が続いています。
3. 6 か月ごとの同意の再取得(CNIL 決定 2020-091、第 2.3 項)
要件: 適切な間隔で同意を更新する必要があります。CNIL は、同意を再度求めるまでの期間を最長 6 か月とすることを推奨しています。
実装:
- 同意日を記録したファーストパーティ Cookie
cv_consent_timestampを設定します - 180 日後に、同意バナーを再表示します
- ユーザーが以前に拒否していた場合は、再度確認します(気が変わっている可能性があります)
- ユーザーが以前に受け入れていた場合も、再度確認します(引き続き同意するか確認する必要があります)
4. 必須 Cookie の適用除外(CNIL 決定 2020-091、第 3 項)
CNIL のガイダンスによると、以下のカテゴリーには同意が不要です。
| カテゴリー | 例 | 正当化の理由 |
|---|---|---|
| 認証 | セッション Cookie、CSRF トークン | セキュリティ上、厳密に必要 |
| 負荷分散 | サーバールーティング Cookie | サービスの提供に厳密に必要 |
| ユーザー設定 | 言語、表示設定 | 要求された機能に厳密に必要 |
| ショッピングカート | カートセッション Cookie | 要求されたサービスに厳密に必要 |
| ファーストパーティ分析(限定的) | 範囲を限定したオーディエンス測定 | ファーストパーティによる集計のみの分析に対する CNIL の適用除外(厳格な条件あり) |
ファーストパーティ分析の適用除外に関する CNIL の条件:
- データは集計統計分析のみに使用すること
- データを他の処理と照合しないこと
- Cookie を単一のサイトに限定すること
- IP アドレスを匿名化または切り詰めること
- Cookie の有効期間を 13 か月以内、データの保持期間を 25 か月以内とすること
- Cookie の使用と異議を申し立てる権利についてユーザーに通知すること
- サイト間で個人を追跡できるようにしないこと
5. 包括的な情報提供(CNIL 決定 2020-091、第 2.4 項)
同意を得る前に、ユーザーに以下の情報を提供する必要があります。
- Cookie を使用するすべての組織の身元(管理者およびサードパーティ)
- Cookie の各カテゴリーの具体的な目的
- 受け入れる場合と拒否する場合の結果
- 同意を撤回する方法
- Cookie の保持期間
CNIL の執行事例
| 対象 | 制裁金 | 日付 | 審議番号 | 主な違反 |
|---|---|---|---|---|
| Google LLC | EUR 150,000,000 | 2022年1月6日 | 2022-013 | 最初の画面に「すべて拒否」がない。拒否するには複数回クリックする必要がある |
| Meta Platforms | EUR 60,000,000 | 2022年1月6日 | 2022-014 | 最初の画面には「同意する」があり、「拒否する」は二次ページの奥に埋もれている |
| Microsoft Ireland | EUR 60,000,000 | 2022年12月22日 | 2022-023 | bing.com:「同意する」と同等に目立つ「拒否する」がない |
| TikTok | EUR 5,000,000 | 2022年12月29日 | 2022-025 | 同意するより拒否するほうが複雑。情報が不十分 |
| Voodoo(モバイルゲーム) | EUR 3,000,000 | 2023年1月 | 2023-004 | 同意なしに広告目的で Apple IDFA を使用 |
| Apple Distribution | EUR 8,000,000 | 2023年1月4日 | 2023-001 | 有効な同意なしに App Store でターゲティング広告を実施 |
実装チェックリスト
| # | 要件 | CNIL の参照先 | CloudVault の状況 |
|---|---|---|---|
| 1 | 最初の画面に「すべて拒否」ボタンを設置 | 審議 2020-091 第2.1節 | 実装済み |
| 2 | 同意と拒否の視覚的な目立ちやすさを同等にする | 審議 2020-091 第2.1節 | どちらも200x44px、同じ色 |
| 3 | クッキーウォールを設けない | 審議 2020-091 第2.2節 | クッキーなしで全面的にアクセス可能 |
| 4 | 最大6か月ごとに再同意を求める | 審議 2020-091 第2.3節 | 180日ごとの再同意サイクル |
| 5 | 必須クッキーを文書化し、適用除外とする | 審議 2020-091 第3節 | 4つの必須クッキーを記載 |
| 6 | 第三者を名称で特定する | 審議 2020-091 第2.4節 | すべての第三者を名称で記載 |
| 7 | クッキーの目的を説明する | 審議 2020-091 第2.4節 | カテゴリーごとに説明 |
| 8 | クッキーの保存期間を明示する | 審議 2020-091 第2.4節 | CNIL に従い最大13か月 |
| 9 | 同意の撤回を、同意の付与と同じくらい簡単にする | GDPR 第7条第3項 | すべてのページにフッターリンクを設置 |
| 10 | 同意記録を保管する | GDPR 第7条第1項 | 完全な監査証跡 |
主な規制関連の参照先
- CNIL 審議第2020-091号(2020年9月17日)— クッキーに関するガイドライン
- CNIL 審議第2022-013号 — Google への制裁金(EUR 150M)
- CNIL 審議第2022-014号 — Meta への制裁金(EUR 60M)
- CNIL 審議第2022-023号 — Microsoft への制裁金(EUR 60M)
- ePrivacy 指令第5条第3項 — デバイスへの保存に関する同意
- GDPR 第7条 — 同意の条件
- EDPB ガイドライン 05/2020 — 規則 2016/679 に基づく同意