5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

データ分析基盤でPII(個人識別情報)を取り扱う場合、インターネットへの露出を最小限に抑える閉域設計が絶対条件となります。

本記事では、強固なセキュリティガバナンスを満たしつつ、開発者のアジリティを損なわないための「Serverless優先」と「多層防御」の実践的なアーキテクチャについて解説します。

Serverless Firstという決断

運用負荷を最小化しつつ、PII環境でのPoCや運用検証のサイクルを素早く回すため、Databricks Serverless ComputeとS3を標準構成として採用しました。

実はPoCの初期段階では、インフラ側からコストの予測可能性を重視し、EC2ベースの「Classic Compute」を想定・提案していました。しかし、開発エンジニア陣から 「サーバー管理やスパイク時の監視にリソースを割くとDatabricksの旨味を失う」 という強い要望があがりました。

「データ処理とAI開発に集中する」という本来の目的を最優先し、Serverless主軸へ舵を切ったのです。懸念となるコスト変動リスクに対しては、自動停止機能やAWS Budgetsを用いた予算監視(超過時のSlack通知等)で厳密に管理しています。

理想の裏にある「コスト可視化」の泥臭い現実

しかし、Serverless環境におけるコスト管理の実態は、決してスマートなものばかりではありませんでした。Databricksの請求はDBU(コンピュート単価)で計算されますが、VMやディスク、ネットワークといった基盤コストはAWS側で別途発生します。この二重のコスト構造をPO(プロダクトオーナー)向けに統合・可視化するため、私たちは自前でカスタムノートブック(cost_dashboard_pipeline.py)を構築し、Unity Catalogのテーブルに集計するパイプラインを開発する必要がありました。

さらに想定外だったのは、Serverless Computeのネットワーク制約により、AWS Cost ExplorerのAPIへ直接アクセスできなかったことです。結果として、コスト情報取得のジョブだけは例外的に既存のClassic Computeクラスターに処理を逃がすという、苦肉の迂回策をとることで解決しています。Serverlessの恩恵を最大限に受ける裏側では、こうしたインフラ側の泥臭い運用カバーが不可欠でした。

多層防御のアーキテクチャ

PII保護の要件を満たすため、単なるネットワークの閉域化にとどまらない多段の防御策を講じています。以下がその全体像です。

上記の構成図の通り、各層で以下の防御策を徹底しています。

  • エンドポイントの統制(DLP対策)
    ローカル端末へのPII持ち出しを回避しつつブラウザ作業を両立させるため、VPN + SSOを前提とした AWS WorkSpaces を標準アクセス経路として発行しています。
  • Control Planeの保護
    AWS PrivateLink (Interface VPCE + Private DNS) を利用し、コントロールプレーンへのアクセス経路を保護しています。
  • IP Access Listによる二重防御
    WorkspaceおよびAccountレベルでIP Access Listを有効化し、許可されたVPNやWorkSpacesの固定IP以外からのアクセスを弾く体制をとっています。
  • Data Planeの制御
    Databricksのネットワーク設定である NCC (Network Connectivity Configuration) と Private Endpoint Rule により、データプレーンからAWSリソース(S3やRDSなど)への通信を厳密に制御しています。

💡 Tips: PrivateLink環境下のDNS名前解決
PrivateLink DNS(Route 53 Resolver等)が未整備な期間は、アクセス遮断を防ぐための暫定措置として、WorkSpaces側の C:\Windows\System32\drivers\etc\hosts に Workspace FQDN と VPCEのプライベートIPをマッピングし、運用を回避する工夫も行いました。

閉域化とServerlessが引き起こすネットワークの「罠」

こうした多層防御の仕組みは強力ですが、構築と運用には多くの摩擦(痛み)を伴いました。

アクセスリスト運用での締め出し: IP Access Listを有効化した直後、設定漏れにより正規の開発メンバーの自宅IPがブロックされたり、VPN切断時にセッションが強制終了するなど、アジリティとセキュリティのバランス調整に苦労しました。

ServerlessとNCC仕様の落とし穴: データプレーンの制御(NCCとPrivate Endpoint Rule)において、RDSへのセキュアな経路(NLB + VPC Lattice)は構築できたものの、S3アクセスに関しては「NCCのファイアウォールルールがS3をサポートしていない」という仕様の壁にぶつかりました。Serverless ComputeからS3への読み書きは、Databricksが管理する同一リージョンのS3ゲートウェイエンドポイントを自動的に経由する仕様となっており、ドキュメントの隅々まで仕様を読み解く必要がありました。

閉域網ゆえのデバッグ困難: トラブルシューティングの際も、AWS CloudShellからVPC内のプライベートRDSに直接アクセスできないため、AWS Secrets Managerから認証情報を取得し、Databricksのノートブック上(Python)で手動でMySQLコマンドを叩いて状況を確認するといった手間が発生しました。

まとめ

PII保護という高いセキュリティ要件は、AWSとDatabricksのネットワーク機能やID管理を組み合わせた「多層防御」によってクリアできます。

同時に、思い切ってServerlessアーキテクチャを採用することで、インフラ管理のオーバーヘッドを排除し、データエンジニアが本来の価値創造に集中できる環境を実現しました。強固なガバナンスと運用負荷軽減は、設計次第で両立可能です。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?