Share
Embed
dbt+GCPで実現するPII管理と 一時権限付与の実装
https://www.meetup.com/ja-JP/tokyo-dbt-meetup/events/301497854/?isFirstPublish=true
こちらのdbt tokyo meetup #9の登壇資料です
okodoon
June 21, 2024
Transcript
38 slides
-
CopyRight © Timee,inc. 2023 - CONFIDENTIAL 自己紹介 大河戸裕一 バックエンドエンジニア ↓ データエンジニア
↓ アナリスト ↓ アナリティクスエンジニア okodoon ( @miburo_data ) 好き: 料理, DTM, SF 嫌い: サザエ 将来: お坊さん, カレー屋さん -
タイミーの実績 スキマ バイト No.1 ※1 ※2 [調査方法]インターネット調査 [調査期間]2024 年 2
月 9 日~11 日 [調査概要]スキマバイトアプリサービスの実態調査 [調査 委託先]株式会社マクロミル 利用率 ・リピート率 ※1 ※2 導入事業者数 98,000企業 ワーカー数 700万人 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL どんなもの作ったかざっくり紹介 Data Loss Prevention API
BigQuery BigQuery 実装 結果の確認 定期的にPIIに該当する データがないか確認 ポリシータグの付与 下流アウトプットへの伝搬 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL どんなもの作ったかざっくり紹介 Cloud Run IAM Slack
App 利用申請 確認 PII利用者 承認者 承認 request create binding PolicyTag BigQuery Cloud Scheduler Pub/Sub remove binding Cloud Run (リリース前調整中の機能です !) -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL 導入の背景 : PIIとは(ざっくり) 個人情報(PII)とは、社会保障番号、氏名、メール・アドレス、電話番号など、 特定の個人に関連し、その個人の身元を明らかにするために使用できる情
報です。 PIIには、直接識別子と間接識別子の2種類があります。 直接識別子は各 個人に固有のものであり、パスポート番号や運転免許証番号などが含まれ ます。 通常、1つの直接識別子でユーザーの身元を特定できます。 間接識別子は一意ではありません。 これらには、人種や出生地など、より 一般的な個人情報が含まれます。 単一の間接識別子では個人を識別でき ませんが、組み合わせることで個人を識別できます。 引用:個人情報(PII)とは -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII管理導入の背景 : これまでの体制 データ基盤 PIIに該当しないデータ
PIIに該当するデータ データソース Load 匿名化して Load Loadしない -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII管理導入の背景 : 既存の体制の課題点 データ基盤に取り込む前に PIIデータ
であると事前に判断する必要がある PIIに対するアクセス権限設定周りの 業務の作業漏れが怖い。 トイルは最小限にしたい この部署には見せていいけど、この 部署には見せてはいけない みたいなケースに対応できない -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII管理導入の背景 : 既存の体制の課題点 データ基盤に取り込む前に PIIデータ
であると事前に判断する必要がある PIIに対するアクセス権限設定周りの 業務の作業漏れが怖い。 トイルは最小限にしたい この部署には見せていいけど、この 部署には見せてはいけない みたいなケースに対応できない PIIを検出する仕組みの導入 ポリシータグによる柔軟かつ堅牢な データの秘匿 PIIへのアクセス承認フローを 自動化して、権限を期限付きにする -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL ポリシータグの設計:ドメインごとに分割 ワーカー PII taxonomy単位での付与を現時点で想定していないので、 監理のしやすさを優先してドメインでtaxonomyを分割
名前 電話番号 etc. 取引先PII 名前 電話番号 etc. 従業員PII 名前 電話番号 etc. -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL ポリシータグの設計:ポリシータグ単位で権限付与 ワーカー PII taxonomy 名前
電話番号 etc. 組織A 組織B 組織C -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL ポリシータグの設計:ポリシータグ単位で権限付与 gcloud data-catalog taxonomies policy-tags
add-iam-policy-binding \ $POLICY_TAG_ID \ --member="user:$MEMBER_EMAIL" \ --role="roles/datacatalog.categoryFineGrainedReader" -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL dbtを用いたPIIの設定方法: dbtのschema.yml dbt_project.yml vars: USER_NAME_PII_TAG:
{terraformで設定したユーザー名のポリシータグID} USER_ADDRESS_PII_TAG: {terraformで設定したユーザー住所のポリシータグID} USER_BIRTHDAY_PII_TAG: {terraformで設定したユーザー誕生日のポリシータグID} hogehoge.yml models: - name: hogehoge columns: - name: user_name data_type: STRING policy_tags: - '{{ var (“USER_NAME_PII_TAG" ) }}' -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL dbtを用いたPIIの設定方法: dbt-osmosisを用いた伝播 dbt-osmosisのyaml refactorで ポリシータグを下流に伝播させることが可能になりました!
https://github.com/z3z1ma/dbt-osmosis/pull/147 データレイク ステージング DWH データマート -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL DLPを用いたPIIの検出:DLPとは Data Loss Prevention API
データ検出 データ検査 データ匿名化 リスク評価 検出テンプレート 匿名化テンプレート -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL DLPを用いたPIIの検出:DLPの利点 なぜDLPが必要か Salesforceのコメントなど 自由入力されるため、どのような データが入るか想定しづらいような
プロパティに対するデータ検出 ポリシータグを設定した結果 セキュリティリスクがどう低減したの かを監視可能 引用:Cloud DLP API による機密データの厳重な管理 (今回はしていないが) dbtがカバーしきれないような 文章内の一部だけを匿名化する ようなことも可能 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL ポリシータグ網羅性のチェック: DLP結果とポリシータグを BQテーブル化 Data Loss
Prevention API BigQuery 検出結果を BQテーブル化 for dataset in datasets: tables = client.list_tables(dataset.dataset_id) for table in tables: table_ref = client.get_table(table) schema = table_ref.schema for field in schema: print("policy_tag: ", field.policy_tags) どのカラムにどのポリシータグが貼られているか出力 BigQuery 出力結果を BQテーブル化 リスクが高くポリシータグ が貼られていないカラム 群を一覧化 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL ポリシータグ網羅性のチェック: DLP結果とポリシータグを BQテーブル化 リスクが高くポリシータグ が貼られていないカラム
群を一覧化 DLPの検出による 偽陽性パターン 付与が漏れていたもの INFOTYPEが一致するが PIIではないパターン (ex. 社内メンバーのメール アドレス) ポリシータグ付与 作業の実施 一覧に表示されない ように調整 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII Granter:PII Granter導入背景 増え続けるデータ活用事例に対して 都度権限付与作業を実施するのは
困難 権限の剥がし忘れがセキュリティリ スク 適切な承認を得られた場合のデータ 活用に不必要なリードタイムを発生 させたくない -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII Granter:PII Granter導入背景 一時的にポリシータグへの権限付 与が可能な仕組みを構築する
参考事例: MoneyForward様のgranter 活用理由 + 利用したいPII種別 の入力をして 承認者の承認が得られた場合に 一時的なアクセス権限を獲得 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII Granter:PII Granter概要 Cloud Run
IAM Slack App 利用申請 確認 PII利用者 承認者 承認 request create binding PolicyTag BigQuery Cloud Scheduler Pub/Sub remove binding Cloud Run -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL PII Granter:下準備 BigQuery dbt exposure
による監視 PIIを持たないセマンティックレイ ヤー経由に統一 作成者の権限ではなく 閲覧者の権限でクエリが 実行されるように変更 -
CopyRight © Timee,inc. 2023 - CONFIDENTIAL まとめ PII Granterを用いた データ活用のスピード感を 落とさない権限申請フロー
ドメインごとに分割して PII種別ごとにポリシータグを作成 DLPの検出を用いた 漏れのないPII管理 dbt + dbt osmosisを用いた 簡便なポリシータグ付与