LESSON 30分

プライバシーとセキュリティ

田中VPoE「データ品質フレームワークが整った。次はデータのプライバシーとセキュリティだ。NetShop社はEC事業なので、顧客の個人情報を大量に扱っている。漏洩は致命的だ。」

あなた「個人情報保護法やGDPR対応も必要ですよね。技術的な対策と組織的な対策の両方が必要だと思います。」

田中VPoE「その通り。プライバシーバイデザインの考え方で、最初からセキュリティを設計に組み込もう。」

データ分類

機密レベルの定義

レベル名称定義
L1公開一般公開可能商品カタログ、FAQ
L2社内限定社内のみ閲覧可売上レポート、社内KPI
L3機密関係者のみ顧客名、メールアドレス
L4極秘特定権限者のみクレジットカード番号、パスワード

個人情報の特定

カテゴリデータ項目機密レベル
直接識別子氏名、メールアドレスL3
準識別子年齢、住所(市区町村)L3
機微情報健康情報、信条L4
決済情報クレジットカード番号L4
行動情報購入履歴、閲覧履歴L2-L3

アクセス制御

RBAC(Role-Based Access Control)

役割定義:
  data_admin:
    - 全テーブルの読み書き
    - ユーザー管理
  data_engineer:
    - staging/intermediate/martの読み書き
    - rawデータの読み取り
  data_analyst:
    - martテーブルの読み取り
    - ステージング以下はアクセス不可
  business_user:
    - ダッシュボードの閲覧のみ
    - 個人情報カラムはマスキング

カラムレベルのアクセス制御

-- Snowflakeの例: 動的データマスキング
CREATE MASKING POLICY email_mask AS (val STRING)
RETURNS STRING ->
    CASE
        WHEN CURRENT_ROLE() IN ('DATA_ADMIN', 'DATA_ENGINEER')
            THEN val
        ELSE REGEXP_REPLACE(val, '.+@', '***@')
    END;

ALTER TABLE customers
    MODIFY COLUMN email
    SET MASKING POLICY email_mask;

データ保護の技術的対策

対策手法ユースケース
暗号化(保存時)AES-256、KMSデータベース、S3
暗号化(転送時)TLS 1.3API通信、データ連携
マスキング部分マスキング個人情報のBIでの表示
仮名化ハッシュ化、トークナイゼーション分析用データセット
匿名化k-匿名性、差分プライバシー公開データセット

仮名化の実装例

import hashlib

def pseudonymize(value: str, salt: str = "netshop_2026") -> str:
    """仮名化: 元のデータに復元不可能なハッシュ値を生成"""
    return hashlib.sha256(f"{salt}:{value}".encode()).hexdigest()[:16]

def mask_email(email: str) -> str:
    """メールアドレスのマスキング"""
    local, domain = email.split("@")
    return f"{local[0]}***@{domain}"

def mask_phone(phone: str) -> str:
    """電話番号のマスキング"""
    return phone[:3] + "-****-" + phone[-4:]

監査ログ

# 監査ログの記録例
audit_log = {
    "timestamp": "2026-03-06T10:30:00Z",
    "user": "analyst_yamada",
    "action": "SELECT",
    "resource": "customers",
    "columns_accessed": ["customer_id", "email", "region"],
    "row_count": 1500,
    "source_ip": "10.0.1.100",
    "query_id": "q-20260306-001",
}
記録項目説明
誰がユーザーID、ロール
何をテーブル、カラム、行数
いつタイムスタンプ
どこからIPアドレス、アプリケーション
なぜクエリID、用途

まとめ

項目ポイント
データ分類L1(公開)〜L4(極秘)の4段階で機密レベルを定義
アクセス制御RBAC + カラムレベルマスキングで最小権限の原則を実現
データ保護暗号化、マスキング、仮名化、匿名化を使い分け
監査ログ誰が・何を・いつ・どこから・なぜを記録

チェックリスト

  • データの機密レベル分類を設計できる
  • RBACとカラムレベルアクセス制御を説明できる
  • マスキング、仮名化、匿名化の違いを説明できる
  • 監査ログの必要項目を理解している

次のステップへ

プライバシーとセキュリティの基礎を学びました。次はコンプライアンスについて学びましょう。


推定読了時間:30分