ホーム » Google認定MLエンジニア » チーム間連携によるデータ・モデルの管理 » 【Google認定MLエンジニア】機械学習パイプラインにおける機密データの取り扱い

【Google認定MLエンジニア】機械学習パイプラインにおける機密データの取り扱い

概要

機械学習パイプラインで機密データ(PII:Personally Identifiable Information)を扱う際には、プライバシー保護とコンプライアンス遵守のために、適切な 匿名化(Anonymization)マスキング(Masking) の処理が必須です。本記事では、GCP認定MLエンジニア試験で問われる「Handling Sensitive Data」に関するベストプラクティスを、代表的な出題形式をもとに体系的に整理します。


1. 基本原則と必要な対応

対応項目概要
機密列の削除クレジットカード番号や氏名などは、不要であれば完全に削除するのが最も安全な対応。
ハッシュ化(Hashing)データを一方向に変換し、復元不能にする手法。クレジットカード番号やメールアドレスなどで使用。
マスキング(Masking)部分的に見せて、一部を伏せる。名前や電話番号などの一部可視が許容されるケースで使用。
フォーマット変更(日付など)生年月日は DATE_TRUNC() などで日単位→月単位に変換し、特定性を下げる。
暗号化(Encryption)一部のデータでは保存時の暗号化が要求されるが、マスキングやハッシュと併用することもある。

2. 出題パターンと対応例

📌 パターン1:SQLベースのデータ匿名化(BigQuery)

代表問題

SELECT
  name,
  address,
  credit_card_number,
  birthdate,
  hash(email) AS anonymized_email
FROM customer_data;

対応

  • credit_card_number の削除
  • credit_card_number のハッシュ化(両方OK。出題意図次第)
  • ⚠️ name, address はマスキング不要な場合もあり
  • DATE_TRUNC() だけでは不十分な場合あり

📌 パターン2:Apache Beam によるJavaコードのマスキング

代表コード抜粋

fields[2] = "*****"; // クレジットカード番号のマスキング

対応

  • ✅ より安全なマスキング手法に変更(例えば SHA256 + サルト)
  • ✅ 他の機密列(氏名など)もマスキング
  • ❌ この場面では暗号化は不要とされることが多い

📌 パターン3:Python(pandas)でのHIPAA対応

代表コード抜粋

df['name'] = 'REDACTED'
df['ssn'] = 'XXX-XX-XXXX'
df['birthdate'] = df['birthdate'].apply(lambda x: x.strftime('%Y-%m'))

対応

  • name カラムの削除
  • ✅ 全ての機密列が正しく匿名化されているか確認
  • ⚠️ birthdateの処理は緩やかな対応でも許容されることが多い

📌 パターン4:BigQueryでのPII処理とマスキング

代表コード抜粋

SELECT
  full_name,
  email,
  REGEXP_REPLACE(phone, r'\d', '*') AS masked_phone
FROM raw_data;

対応

  • full_name のマスキング
  • email のハッシュ化または部分マスキング
  • ❌ 暗号化はこの文脈では不要

3. 試験対策ポイント

✅ EXAM FOCUS

  • 機密情報(クレジットカード番号、氏名、住所、メール、電話番号)は削除 or ハッシュ化 or マスキング
  • SQL/Java/Python問わず データ処理ロジックを読める力 が必要
  • 暗号化やスキーマ検証は、問題文の文脈次第で「不要」とされるケースあり

⚠️ CAUTION ALERT

  • hash()REGEXP_REPLACE() のような関数処理が適切かを吟味
  • HIPAA, GDPR などの規制準拠かどうかに注意
  • 一部の出題では「暗号化は不要」「検証は仮定済み」とされることもある

まとめ

GCP MLエンジニア試験では、「実装の文脈」と「規制の目的」を両立して考える力が求められます。単なる暗号化・マスキングだけでなく、不要な列の削除や、処理の十分性判断も含めて対策しましょう。