eprivacy-essential-cookies について
eprivacy-essential-cookiesは、ePrivacy Directiveに基づくCookieの同意免除を評価するための分類ガイドです。ユーザーが明示的に求めたサービスと厳格な必要性を基準に、分類例や境界事例を示します。
主な機能
- 01厳格な必要性の二要件テスト
- 02免除対象カテゴリーの特定
- 03分析Cookieと広告Cookieの区別
- 04境界事例の評価
- 05免除理由の記録
活用シーン
- 01カートやログインCookieの免除判定
- 02永続的な設定Cookieの同意要否の確認
- 03Cookie免除の根拠の記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ privacy-data-protection-skills --skill eprivacy-essential-cookiesインストール後、Claude Code で/eprivacy-essential-cookiesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/template.mdreferences/standards.mdworkflows.mdscripts/process.py詳細
ePrivacy 指令第 5 条第 3 項における必須 Cookie の適用除外
概要
ePrivacy 指令(2002/58/EC、指令 2009/136/EC による改正)の第 5 条第 3 項では、ユーザーの端末機器(Cookie、LocalStorage、デバイスフィンガープリント)に情報を保存したり、そこから情報にアクセスしたりする前に、十分な情報に基づく同意を得ることが求められています。ただし、「加入者またはユーザーが明示的に要求した情報社会サービスを提供するために、厳密に必要な」保存については適用除外が認められています。この適用除外に該当する Cookie を正しく分類することは重要です。適用除外の対象を過度に広く解釈すると、組織が執行措置を受けるおそれがあり、一方、過度に狭く解釈すると、不要な同意の負担が生じます。Cookie 同意の適用除外に関する第 29 条作業部会の意見 04/2012(WP 194)は、引き続きこの適用除外を適用する際の権威あるガイダンスです。
適用除外の基準
2 つの条件による判定
Cookie が「厳密に必要」であることを理由に適用除外となるには、次の両方の条件を満たす必要があります。
条件 1 — Cookie が厳密に必要である Cookie は、ユーザーが能動的に要求した特定の機能に不可欠でなければなりません。「厳密に必要」とは、その Cookie がなければサービスが文字どおり機能しないことを意味します。サービスの機能が低下する、または利便性が損なわれるというだけでは該当しません。
条件 2 — ユーザーが明示的に要求したサービスのためである ユーザーは、Cookie によって可能になるサービスを能動的に要求していなければなりません。Cookie はウェブサイト運営者の目的ではなく、ユーザーの目的にかなうものでなければなりません。運営者のビジネスモデル(例:分析)に必要であっても、ユーザーが要求したサービス(例:商品の閲覧)に必要ではない Cookie は、適用除外の対象になりません。
第 29 条作業部会による適用除外のカテゴリ
WP 194(意見 04/2012)では、適用除外となり得る特定の Cookie カテゴリが示されています。
カテゴリ A — ユーザー入力 Cookie(セッションのみ)
| 基準 | 要件 |
|---|---|
| 目的 | 複数段階のプロセス(例:フォームへの入力、ショッピングカート)中にユーザーの入力を追跡すること |
| 有効期間 | セッションのみ(ブラウザーを閉じると削除)または短期間(数時間以内に限定) |
| 適用範囲 | ファーストパーティのみ |
| 例 | 閲覧セッション中のショッピングカートの内容 |
Pinnacle E-Commerce Ltd の例:
| Cookie | 目的 | 有効期間 | 適用除外 |
|---|---|---|---|
| cart_session | セッション中にショッピングカートへ追加された商品を保存します | セッション | はい |
| checkout_step | 複数ページにわたるチェックアウトの現在の段階を追跡します | セッション | はい |
| form_data_temp | チェックアウト中にページが再読み込みされた場合にフォーム入力を保持します | 30 分 | はい |
カテゴリ B — 認証 Cookie
| 基準 | 要件 |
|---|---|
| 目的 | 認証が必要なコンテンツ/サービスへのアクセスを提供するためにユーザーを認証すること |
| 有効期間 | セッション認証の場合はセッションのみ。「ログイン状態を保持する」をユーザーが明示的に選択した場合に限り、永続化できます |
| 適用範囲 | ファーストパーティのみ |
| 例 | ログイン後のセッショントークン |
Pinnacle E-Commerce Ltd の例:
| Cookie | 目的 | 有効期間 | 適用除外 |
|---|---|---|---|
| auth_token | ログイン中のユーザーを認証します | セッション | はい |
| refresh_token | (「ログイン状態を保持する」が選択されている場合に)ブラウザーを再起動した後も認証状態を維持します | 30 日 | はい — ユーザーが永続的なログインを明示的に要求しています |
| session_id | リクエストをサーバー側のセッションに関連付けます | セッション | はい |
カテゴリ C — ユーザーセキュリティ Cookie
| 基準 | 要件 |
|---|---|
| 目的 | ユーザーが明示的に要求したサービスのセキュリティを確保すること |
| 有効期間 | 必要な範囲に限定 |
| 適用範囲 | ファーストパーティのみ |
| 例 | CSRF 対策、ログイン失敗の繰り返しの検出 |
Pinnacle E-Commerce Ltd の例:
| Cookie | 目的 | 期間 | 適用除外 |
|---|---|---|---|
| csrf_token | クロスサイトリクエストフォージェリ攻撃を防止します | セッション | はい |
| login_attempts | 総当たり攻撃を防止するため、ログイン失敗回数を追跡します | 30 分 | はい |
| device_verified | 2FA の後、デバイスを認証済みとして示します | 30 日 | はい — 認証済みサービスのセキュリティのため |
カテゴリ D — マルチメディアプレーヤーのセッションクッキー
| 基準 | 要件 |
|---|---|
| 目的 | メディア再生に関する技術データ(画質設定、バッファリング)を保存します |
| 期間 | セッション中のみ |
| 適用範囲 | ファーストパーティのみ |
| 例 | 現在のセッションにおける動画プレーヤーの画質設定 |
カテゴリ E — ロードバランシングクッキー
| 基準 | 要件 |
|---|---|
| 目的 | 複数のサーバー間でウェブトラフィックを分散します |
| 期間 | セッション中のみ(閲覧セッション中のみ保持されます) |
| 適用範囲 | ファーストパーティのみ |
| 例 | ロードバランサーのセッションアフィニティクッキー |
Pinnacle E-Commerce Ltd の例:
| Cookie | 目的 | 期間 | 適用除外 |
|---|---|---|---|
| SERVERID | HAProxy サーバーアフィニティクッキー | セッション | はい |
| __cfduid (legacy) | Cloudflare のサーバー識別 | セッション | はい — セッション中のみの場合 |
| lb_route | 内部ロードバランサーのルーティング | セッション | はい |
カテゴリ F — UI カスタマイズクッキー(セッション中のみ)
| 基準 | 要件 |
|---|---|
| 目的 | セッション中にユーザーが明示的に設定したユーザーインターフェースの設定を保存します |
| 期間 | セッション中のみ(セッション中の初回訪問時)。永続的な保存には同意が必要です |
| 適用範囲 | ファーストパーティのみ |
| 例 | セッション中の言語選択 |
重要な違い: ユーザーが言語セレクターをクリックしたときに現在のセッション用に設定される言語設定クッキーは、適用除外となります。訪問をまたいで選択を記憶する永続的な言語設定クッキーには、通常、同意が必要です(セッションの範囲を超えるため)。
Pinnacle E-Commerce Ltd の例:
| Cookie | 目的 | 期間 | 適用除外 |
|---|---|---|---|
| locale_session | 現在のセッション中に選択された言語 | セッション | はい |
| locale | 永続的な言語設定 | 1 年 | いいえ — 同意が必要です |
| currency_session | 現在のセッション中に選択された通貨 | セッション | はい |
| currency | 永続的な通貨設定 | 1 年 | いいえ — 同意が必要です |
適用除外とならないクッキーのカテゴリ
以下の種類のクッキーは明示的に適用除外とならず、常に同意が必要です。
アナリティクスおよびパフォーマンスクッキー
| クッキーの種類 | 適用除外とならない理由 |
|---|---|
| Google Analytics (_ga, _gid) | ユーザーが要求したサービスではなく、運営者の分析目的に役立つため |
| Hotjar (_hj*) | セッション記録とヒートマップが運営者に役立つため |
| A/B テスト (optimizely_*) | 実験が運営者の最適化目標に役立つため |
| パフォーマンス監視 | サイトのパフォーマンス監視が運営者に利益をもたらすため |
注: CNIL はオーディエンス測定に対して別個の限定的な適用除外を設けています(analytics-cookie-consent スキルを参照)。ただし、これはフランス固有の解釈であり、ePrivacy 指令第 5 条第 3 項に基づく普遍的な適用除外ではありません。
広告およびターゲティングクッキー
| クッキーの種類 | 適用除外とならない理由 |
|---|---|
| Meta Pixel (_fbp, _fbc) | 広告トラッキングが広告主に役立つため |
| Google Ads (_gcl_au, IDE) | コンバージョントラッキングとリマーケティングが広告主に役立つため |
| リターゲティングクッキー | 広告のパーソナライズを目的としたクロスサイトトラッキングのため |
| 広告の表示頻度制限 | ユーザーではなく、広告配信システムに役立つため |
ソーシャルメディアプラグインの Cookie
| Cookie の種類 | 適用除外されない理由 |
|---|---|
| Facebook の「いいね!」ボタンの Cookie | ソーシャルウィジェットを介したサードパーティーによるトラッキング |
| Twitter の共有ウィジェットの Cookie | サードパーティーによるデータ収集 |
| YouTube の埋め込み動画の Cookie | 埋め込み動画を介した Google によるトラッキング |
| LinkedIn Insight Tag | ビジネス向けネットワークによるトラッキング |
例外: ユーザーがソーシャルログイン(例:「Google でログイン」)を明示的に求めた場合、その認証フローの Cookie はカテゴリー B に該当する可能性があります。ソーシャルプラットフォームのトラッキング Cookie は該当しません。
永続的な設定 Cookie
| Cookie の種類 | 適用除外されない理由 |
|---|---|
| 永続的な言語設定 | セッションの範囲を超える |
| テーマ/ダークモードの設定(永続的) | セッションの範囲を超える |
| 「今後表示しない」設定の Cookie | 利便性のためであり、厳密には必要ではない |
| 最近表示した商品 | 機能の向上であり、不可欠なサービスではない |
境界事例と規制当局の指針
同意 Cookie 自体
ユーザーが Cookie を受け入れたか拒否したかを保存する Cookie:
| データ保護当局の見解 | 適用除外? | 理由 |
|---|---|---|
| UK ICO | はい | ユーザーのプライバシーに関する選択を記憶するために厳密に必要 |
| CNIL | はい | 同意を実施するために技術的に必要 |
| Belgian DPA | はい | ページを表示するたびに再度同意を求めないために必要 |
| EDPB | はい(暗黙的) | 同意義務を果たすために必要 |
Pinnacle E-Commerce Ltd: consent_state Cookie は厳密に必要なものとして分類されています。
不正検出 Cookie
| シナリオ | 適用除外? | 理由 |
|---|---|---|
| フォーム送信時の CSRF トークン | はい | ユーザーが求めたサービス(フォームの送信)のセキュリティ確保 |
| ボット検出(CAPTCHA) | おそらくはい | サービスのセキュリティ確保。一部のデータ保護当局は通知を求めます |
| 不正検出のためのデバイスフィンガープリンティング | おそらくいいえ | 厳密に必要な範囲を超えます。同意または正当な利益に基づいて使用できる可能性があります |
| reCAPTCHA Cookie | 見解が分かれる | Google reCAPTCHA は Cookie を設定し、Google と通信します。一部のデータ保護当局は同意を求めます |
CDN とインフラストラクチャの Cookie
| シナリオ | 適用除外? | 理由 |
|---|---|---|
| Cloudflare __cf_bm(ボット管理) | 見解が分かれる | セキュリティに関係しますが、永続的な Cookie を設定します。DPO に確認してください |
| CDN のセッションルーティング | はい | 負荷分散(カテゴリー E) |
| 地理的ルーティング | セッション限定の場合は、はい | インフラストラクチャ上必要 |
| A/B テストのサーバールーティング | いいえ | 最適化であり、ユーザーが求めたサービスではない |
Pinnacle E-Commerce Ltd の分類プロセス
ステップ 1:すべての Cookie を一覧化する
cookie-audit スキルを使って、完全な Cookie 一覧を作成します。
ステップ 2:2 部構成のテストを適用する
各 Cookie について、次の質問に答えます。
- ウェブサイトが特定の機能を提供するうえで、この Cookie は厳密に必要ですか?
- ユーザーはその特定の機能を明示的に求めましたか?
ステップ 3:分類して記録する
| Cookie | ユーザーが求めたサービス | 厳密に必要 | 期間は適切 | 適用除外 |
|---|---|---|---|---|
| session_id | サイトの閲覧 | はい — セッション状態 | セッション | はい |
| auth_token | ログイン | はい — 認証 | セッション | はい |
| cart_session | 商品をカートに追加 | はい — カート機能 | セッション | はい |
| csrf_token | フォームの送信 | はい — フォームのセキュリティ | セッション | はい |
| _ga | なし(運営者の分析) | いいえ | 2 年 | いいえ |
| _fbp | なし(運営者の広告) | いいえ | 90 日 | いいえ |
| locale | 言語の変更 | 判断が分かれる | 1 年 | いいえ — 永続的なため、同意が必要 |
| consent_state | Cookie 設定の管理 | はい — 同意の管理 | 6 か月 | はい |
ステップ 4:根拠を記録する
適用除外する各 Cookie について、根拠を書面で記録します。
テンプレート:
Cookie: [name]
Classification: Strictly Necessary — Exempt from consent
User-Requested Service: [specific service]
Why Strictly Necessary: [explanation of why the service cannot function without this cookie]
Duration Justification: [why this duration is the minimum necessary]
WP 194 Category: [A/B/C/D/E/F]
Reviewed By: [DPO name]
Review Date: [date]
Next Review: [date + 12 months]
主要な法的参照資料
- ePrivacy 指令 2002/58/EC、第 5 条第 3 項 — 同意要件と厳密に必要な場合の適用除外
- 指令 2009/136/EC(市民の権利に関する指令) — 第 5 条第 3 項を改正し、十分な情報に基づく同意を義務付け
- 第 29 条作業部会の意見書 04/2012(WP 194) — Cookie 同意の適用除外カテゴリーに関する権威あるガイダンス
- CJEU 事件 C-673/17(Planet49) — 積極的な同意。適用除外は厳密に必要な Cookie にのみ適用
- 同意に関する EDPB ガイドライン 05/2020 — ePrivacy に基づく同意に適用される GDPR 上の同意
- Cookie に関する英国 ICO ガイダンス(2019 年、2023 年更新) — ePrivacy の適用除外に関する PECR の実施
- CNIL 審議第 2020-091 号(2020 年 9 月 17 日) — Cookie の適用除外に関するフランスでの実施
- 指令 2009/136/EC の前文第 66 項 — 「明示的に要求された情報社会サービスの提供に厳密に限定される」Cookie に対する適用除外