🐿️

【AWS】 閉域内でAmazon SageMakerノートブックインスタンスを利用する際のデータ保護に関するTips

2023/06/30に公開


はじめに

ご覧いただきありがとうございます。阿河です。

Amazon SageMaker利用時に、機械学習に利用するデータは個人情報や機密情報に関わる可能性があるため、AWS環境内に閉じ込めた上で運用したいというケースもあると思います。

本記事はAmazon SageMakerノートブックインスタンス利用を前提としておりますが、起こり得る問題と解消策について参考にして頂けると幸いです。

対象者

  • 機械学習をセキュアな環境下で行いたい
  • AWSの利用を想定している

概要

  1. 想定している環境と問題点
  2. 解消策

1. 想定している環境と問題点

  • インターネットアクセスを禁じた環境下で機械学習を行いたい。
  • Amazon SageMakerノートブックインスタンスの利用を想定。特定VPCのプライベートサブネットに紐づけて、かつ(NAT Gatewayを通じた)インターネットへの直接アクセスを禁じる。
  • 個人情報はS3バケットに配置して、VPCエンドポイント経由でSageMakerノートブックインスタンスから取得を行う。

上記により、機械学習に用いるデータが外部に洩れないようにする想定でしたが、一点問題がありました。

Downloadボタンから、Jupyter上で利用しているデータをダウンロードできるという点です。
これによりローカルPCに、AWS内のファイルをダウンロードすることができます。

またダウンロードの履歴はデフォルトではログとして確認できず、「いつ・誰がファイルを外部に持ち出すか」分からない状況でした。

上記2点をどのように解決するかを、次のセクションで書いていきます。

2. 解消策

Amazon WorkSpacesを利用する。

ローカルPCが直接SageMakerとやり取りができてしまうことを避けたいと思いました。
一つの解消策としては、Amazon WorkSpacesを閉域環境内に置くことです。

まずAmazon WorkSpacesにログインを行い、さらにWorkSpacesから署名付きURLでSageMakerノートブックインスタンス(Jupyer画面)にアクセスします。
 
①Amazon WorkSpacesにはクライアントソフトでログインを行い、閉域環境内で操作可能です。

②SageMaker用のVPCエンドポイントを別途用意することで、WorkSpacesからSageMakerノートブックインスタンスに対して、閉域間のログインやAPI実行が可能です。

https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-presigned-notebook-instance-url.html

例えばAWS CLIインストール済のWorkSpacesをカスタムで用意して、WorkSpaces内のCUI(コマンドプロンプトなど)で署名付きURL発行コマンドを実行します。閉域内であってもWorkSpaces内のWebブラウザからSageMakerノートブックインスタンスにアクセスが可能です。

これにより、Jupyterサーバの画面でDownloadボタンを押した際にデータはWorkSpaces側にダウンロードされるため、AWS環境外に直接ファイルをダウンロードすることはできません。

CloudWatch Logsにダウンロードログを残す

ライフサイクル設定を利用して、SageMakerノートブックインスタンスが起動するたびに、下記処理を実行するようにします。

#!/bin/bash

set -e
echo "c.JupyterApp.log_level = 10" >> /home/ec2-user/.jupyter/jupyter_notebook_config.py
systemctl restart jupyter-server

結果的に「Download」を実行すると、CloudWatch Logsにログが残るようになります。

上記の対応により、AWS外部へのデータ流出を避けて、かつダウンロード動作の証跡を残すことができます。

おわりに

以上、簡単なTipsになりますが、参考になれば幸いです。
御覧いただき ありがとうございました。

MEGAZONE株式会社 Tech Blog

Discussion