【レポート】ML Security on AWS #AWSSummit
こんにちは、Mr.Moです。
2019年 6月 12日(水) 〜 14日(金) 幕張メッセにてAWSに関する情報交換やコラボレーション、学習を行うことができる日本最大級のカンファレンス AWS Summit Tokyo 2019が開催されています。
本記事では、セキュリティを考慮した機械学習の開発・運用プロセスについて語られるセッション『ML Security on AWS』についてレポートしたいと思います。
セッション概要
機械学習を活用するシステムが増えるにつれ、セキュリティを考慮した形で機械学習の開発・運用プロセスを回すかというのが、さまざまな組織で課題となってきつつあります。本セッションでは、機械学習でもちいるデータの権限管理、プライバシーを考慮したデータの持ち方、またデータのラベリング・学習・推論を AWS 上でセキュアに実施するための方法についてご紹介します。
スピーカー
アマゾン ウェブ サービス ジャパン株式会社
技術統括本部
ソリューションアーキテクト
志村 誠
セッションレポート
機械学習プロセスにおけるセキュリティのポイント
考慮すべき5個のセキュリティ。セキュリティの担保だけを考えるのではなく生産性もいかにあげられるかがポイント。
通信&保存のデータ暗号化
暗号化した形で通信を行うことはもちろん、データの置き場所に関してもそれぞれのサービス毎に多彩なセキュリティの仕組みを持っている。 実際の暗号化の際にはKMS(鍵管理サービス)による鍵管理が行われる。KMSでは外部から持ってきた鍵をインポートして管理することも可能。
保存のデータ暗号化でS3に関しては、SSE-KMSを使って鍵管理をするのがおすすめ。 暗号化の場所はクライアントサイド、サーバーサイトの2択あるが、サーバーサイドで管理しておけば大量のデータがあった際でもサーバーサイドで必要なデータのみ絞り込むことが可能。 鍵の管理方法は3種類、S3のビルトイン機能による鍵管理はセキュリティ的に少し弱いS3へのアクセスができてしまえば復号が可能なため、CSE-KMSやSSE-KMSであればS3のビルトイン機能と2段構えの鍵管理の構成を実現できていることに。CSE-KMSはKMSの基盤管理がユーザに発生するので負担は増える。
権限管理
データに対する最小権限の原則。やりたいことに対して必要最小限の権限をあたえる。あたらしく権限が必要なさいには最小限の追加を行う。さらに定期的な権限の適正チェックを実施する。
同じアカウント内で細かく権限を制御するのは管理者の負荷があがる問題がある。そもそもアカウントを分けることで管理者の負荷をあげずにすむ。その後は必要なデータにのみアクセスできる仕組みを導入すれば良い。
データを管理する際のもう1つの切り口として、データの中身に注目するというのがある。 リスクがあるデータとそうでないデータがあり、特にリスクが高いのはパーソナルデータ。そういった観点でデータを分類すると対応すべきデータと対応する必要のないデータが見えてくる。
閉域に閉じた環境
VPCでクローズドなネットワークを構築する。クローズドなネットワークからエンドポイント経由でアクセスできるようにできるので、この構成であればパブリックなインターネットを一切通らずにVPCとS3通信を実現できる。 ただしなんでもかんでも閉域網に閉じてしまうと運用コストはあがるのでトレードオフを考える必要はある。
ガバナンス
誰がいつどこで何をしたかの証跡と監査がちゃんとできているかという所でCloud Watch Logsなどのサービスが活用できる。 また、事故を防ぐためのプロセス標準化の仕組み作りなどもかなり重要な要素となってくる。
Amazon SageMaker で実現するセキュアな機械学習基盤
セキュアな Jupyter notebooks 環境構築
Jupyter notebooksの作成APIはVPCエンドポイント経由でクローズドなネットワークから実行することが可能。また全ての通信は暗号化されている。 なお、SageMakerは下記の3つのVPCエンドポイントを持っている。ポリシーの設定も可能なので非常にセキュアに使うことができる。
- sagemaker.api
- sagemaker.notebook
- sagemaker.runtime
Jupyter notebooks以外の必要なリソースに関してもVPCエンドポイント経由でS3のデータへのアクセスや学習用のコンテナイメージのPUSHを行える。
なお、通信だけでなく使用するS3やECRも暗号化に対応している。
ガバナンス: 環境構築プロセスの標準化
プロセスを標準化することで不要な事故を防ぐことができる。Jupyter notebooksのインスタンスは共通スクリプトを実行することでプロセスを標準化できる。
学習・推論用コンテナの標準化もあらかじめ必要なものを盛り込んだコンテナを用意しておくことで実現可能。
まとめ
セキュリティは強固にこしたことはないですが、そのトレードオフでコストがあがりすぎないようバランスは見なければならないですね。 SageMakerであれば、上記を意識しつつセキュリティも効率よくあげることが可能そうです。