はじめに
前回は、SageMaker Clarify を中心に、
モデルの Bias、Explainability、Feature Importance について整理しました。
今回は、AWS 上で機械学習ワークロードを安全に運用するために重要な
セキュリティ設計 について整理します。
機械学習では、モデルやアルゴリズムだけでなく、
扱うデータや実行環境のセキュリティも非常に重要です。
特に、以下のようなデータを扱う場合は注意が必要です。
- 顧客情報
- 個人情報
- 取引履歴
- 医療データ
- ログデータ
- 社内機密データ
- モデル成果物
AWS の ML ワークロードでは、SageMaker、S3、IAM、KMS、VPC、CloudTrail など、
複数のサービスを組み合わせてセキュリティを設計します。
本記事では、
- ML ワークロードで守るべきもの
- IAM Role と最小権限
- S3 encryption
- KMS
- VPC / Subnet / Security Group
- VPC Endpoint
- CloudTrail / CloudWatch Logs
- 実務や試験での見られ方
を、初心者にも分かりやすく整理します。
🎯 対象読者
- AWS 上の機械学習セキュリティを整理したい方
- IAM、KMS、VPC の役割を ML 文脈で理解したい方
- SageMaker を安全に使うための基本を知りたい方
- AWS の AI / ML 系資格を勉強している方
- 実務で ML ワークロードを運用する方
🧩 まず結論:ML セキュリティは「権限・暗号化・ネットワーク・監査」で考える
AWS 上の ML ワークロードのセキュリティは、まず以下の4つで整理すると分かりやすいです。
| 観点 | 目的 | 関連サービス |
|---|---|---|
| 権限管理 | 必要な人・サービスだけがアクセスできるようにする | IAM |
| 暗号化 | データやモデル成果物を保護する | KMS、S3 encryption |
| ネットワーク制御 | 外部公開や不要な通信を制限する | VPC、Subnet、Security Group、VPC Endpoint |
| 監査・ログ | 誰が何をしたか確認できるようにする | CloudTrail、CloudWatch Logs |
覚え方は以下です。
権限 = IAM
暗号化 = KMS
ネットワーク = VPC
監査 = CloudTrail
この4つを押さえるだけでも、ML セキュリティの全体像がかなり整理しやすくなります。
🔐 ML ワークロードで守るべきもの
機械学習のシステムでは、守るべき対象がいくつかあります。
| 対象 | 例 |
|---|---|
| 学習データ | 顧客情報、取引履歴、ログ、画像、文書 |
| 前処理済みデータ | 特徴量、加工済み dataset |
| モデル成果物 | 学習済みモデルファイル |
| 推論入力 | Endpoint に送られるリクエストデータ |
| 推論結果 | 予測スコア、分類結果、推薦結果 |
| ログ | 実行ログ、アクセスログ、監査ログ |
| 認証情報 | IAM Role、権限、API アクセス |
特に、学習データとモデル成果物は重要です。
モデル成果物は単なるファイルに見えるかもしれませんが、
場合によっては学習データの傾向や業務ロジックを含んでいるため、保護対象になります。
👤 IAM Role とは?
IAM Role は、
AWS サービスやユーザーに一時的な権限を与えるための仕組み です。
SageMaker では、Training Job や Endpoint が S3 などの他サービスにアクセスする必要があります。
たとえば、Training Job では以下のような操作が必要です。
S3 から訓練データを読み込む
↓
モデルを学習する
↓
学習済みモデルを S3 に保存する
このとき、SageMaker が S3 にアクセスするための権限が必要になります。
その権限を付与するために IAM Role を使います。
🧪 SageMaker 実行ロールのイメージ
SageMaker の Training Job には、実行ロールを指定します。
このロールにより、Training Job は必要な AWS リソースへアクセスできます。
SageMaker Training Job
↓
IAM Role を使う
↓
S3 の訓練データを読む
↓
S3 にモデル成果物を書き込む
↓
必要に応じて CloudWatch Logs にログを出す
つまり、IAM Role は SageMaker が他の AWS サービスを使うための「権限セット」と考えると分かりやすいです。
🛡 Least Privilege(最小権限)とは?
Least Privilege とは、
必要最小限の権限だけを付与する というセキュリティの基本原則です。
一言で言うと、以下です。
Least Privilege = 必要な操作だけ許可する
たとえば、Training Job が特定の S3 バケットからデータを読み、
特定の出力先にモデルを書き込むだけでよい場合、
すべての S3 バケットに対するフルアクセス権限は不要です。
悪い例:
s3:* をすべてのバケットに許可
良い例:
必要なバケットの必要なパスだけに read/write を許可
権限を広くしすぎると、誤操作や情報漏えいのリスクが高まります。
📌 IAM で意識したいポイント
ML ワークロードでは、IAM について以下を意識するとよいです。
| ポイント | 説明 |
|---|---|
| 実行ロールを分ける | Training、Endpoint、Pipeline など用途別に権限を分ける |
| 最小権限にする | 必要な操作・リソースだけ許可する |
| ワイルドカードを避ける |
* の利用は必要最小限にする |
| 本番と開発を分ける | 環境ごとに権限を分離する |
| 人の権限とサービス権限を分ける | ユーザー権限と実行ロールを混同しない |
試験でも実務でも、
「広い権限を付ければ動く」は正解になりにくいです。
🪣 S3 セキュリティ
SageMaker では、S3 が非常によく使われます。
S3 には、以下のようなデータが保存されます。
- 訓練データ
- 検証データ
- テストデータ
- 前処理済みデータ
- モデル成果物
- Batch Transform の入力
- Batch Transform の出力
- ログや中間ファイル
そのため、S3 のセキュリティは非常に重要です。
🔒 S3 で意識したい設定
S3 では、少なくとも以下を意識します。
| 項目 | 説明 |
|---|---|
| Block Public Access | 意図しない公開を防ぐ |
| Bucket Policy | バケット単位でアクセス制御する |
| IAM Policy | 誰がどの操作をできるか制御する |
| Encryption | 保存データを暗号化する |
| Versioning | 誤削除や上書きへの対策 |
| Access Logs | アクセス状況を確認する |
特に、機械学習データには個人情報や機密情報が含まれることがあるため、
S3 バケットを不用意に公開しないことが重要です。
🔑 KMS とは?
KMS は AWS Key Management Service の略で、
暗号化キーを作成・管理するためのサービスです。
一言で言うと、以下です。
KMS = 暗号化キーを管理するサービス
SageMaker や S3 では、データを暗号化する場面で KMS を使うことがあります。
たとえば、
- S3 に保存する訓練データ
- S3 に保存するモデル成果物
- SageMaker のストレージ
- EBS ボリューム
- ログや出力ファイル
などを暗号化する際に関係します。
🧭 Encryption at Rest と Encryption in Transit
暗号化には大きく2種類あります。
| 種類 | 意味 |
|---|---|
| Encryption at Rest | 保存されているデータの暗号化 |
| Encryption in Transit | 通信中のデータの暗号化 |
Encryption at Rest
S3 に保存されている訓練データやモデル成果物を暗号化することです。
S3 上のデータを暗号化
モデル成果物を暗号化
Encryption in Transit
通信中のデータを暗号化することです。
たとえば、API 通信で HTTPS を使うようなイメージです。
クライアントと Endpoint 間の通信を保護
サービス間通信を保護
試験では、この2つを区別して理解しておくとよいです。
🏢 VPC とは?
VPC は Virtual Private Cloud の略で、
AWS 上に作る仮想ネットワークです。
一言で言うと、以下です。
VPC = AWS 上の自分専用ネットワーク
SageMaker を VPC 内で実行することで、
ネットワーク経路を制御し、不要な外部通信を減らすことができます。
たとえば、機密性の高いデータを扱う場合、
インターネットを経由せずに S3 や他の AWS サービスへアクセスしたいことがあります。
🧱 Subnet と Security Group
VPC を理解するときは、Subnet と Security Group も押さえておくと分かりやすいです。
| 用語 | 説明 |
|---|---|
| Subnet | VPC の中を分けたネットワーク領域 |
| Private Subnet | インターネットから直接アクセスされない Subnet |
| Security Group | インスタンスやリソース単位の仮想ファイアウォール |
SageMaker を Private Subnet に配置し、
Security Group で通信先を制限することで、より安全な構成にできます。
🔌 VPC Endpoint とは?
VPC Endpoint は、
インターネットを経由せずに、VPC から AWS サービスへプライベートにアクセスするための仕組み です。
一言で言うと、以下です。
VPC Endpoint = AWS サービスへプライベートに接続する入口
たとえば、SageMaker の Training Job が S3 からデータを読む場合、
通常はネットワーク経路を意識する必要があります。
機密性の高い環境では、インターネットを経由せず、
VPC Endpoint を使って S3 にアクセスしたい場合があります。
✅ VPC Endpoint が向いている場面
| 場面 | 理由 |
|---|---|
| インターネット経由を避けたい | 通信経路をプライベートにしたい |
| 機密データを扱う | ネットワーク制御を強化したい |
| Private Subnet から S3 にアクセスしたい | NAT Gateway なしでアクセスできる場合がある |
| セキュリティ要件が厳しい | 通信経路を制限しやすい |
試験では、
SageMaker から S3 へプライベートにアクセスしたい
インターネット経由を避けたい
という文脈で VPC Endpoint が候補になります。
📜 CloudTrail とは?
CloudTrail は、
AWS アカウント内で誰が何をしたかを記録するサービス です。
一言で言うと、以下です。
CloudTrail = API 操作の監査ログ
たとえば、以下のような操作を確認できます。
- 誰が S3 バケットへアクセスしたか
- 誰が SageMaker Training Job を作成したか
- 誰が IAM Role を変更したか
- 誰が KMS key を使ったか
- 誰がモデルをデプロイしたか
セキュリティや監査の観点で非常に重要です。
📊 CloudWatch Logs とは?
CloudWatch Logs は、
アプリケーションや AWS サービスのログを収集・確認するためのサービス です。
SageMaker では、Training Job や Endpoint のログを CloudWatch Logs で確認できます。
たとえば、
- Training Job の実行ログ
- エラーメッセージ
- 学習中の出力
- Endpoint の推論ログ
- システムの動作状況
などを確認できます。
CloudTrail が「誰が何をしたか」を見るのに対して、
CloudWatch Logs は「実行中に何が起きたか」を見るイメージです。
🧭 CloudTrail と CloudWatch Logs の違い
CloudTrail と CloudWatch Logs は混同しやすいので、整理しておきます。
| サービス | 主な用途 | 見るもの |
|---|---|---|
| CloudTrail | 監査 | 誰がどの API 操作をしたか |
| CloudWatch Logs | 実行ログ | ジョブやアプリのログ、エラー |
覚え方は以下です。
CloudTrail = 操作履歴
CloudWatch Logs = 実行ログ
どちらも重要ですが、目的が違います。
🧪 具体例:安全な SageMaker Training 構成
たとえば、機密性の高い顧客データを使ってモデルを学習する場合を考えます。
安全な構成として、以下のような設計が考えられます。
訓練データを S3 に保存
↓
S3 バケットは public access をブロック
↓
S3 データを KMS で暗号化
↓
SageMaker Training Job に最小権限の IAM Role を付与
↓
Training Job を VPC 内で実行
↓
VPC Endpoint 経由で S3 にアクセス
↓
Training Log を CloudWatch Logs に出力
↓
操作履歴を CloudTrail で監査
このように、複数のサービスを組み合わせてセキュリティを確保します。
☁️ AWS 試験での見られ方
AWS の AI / ML 系試験では、セキュリティは非常に重要です。
特に、以下のようなキーワードが出たら意識するとよいです。
「最小権限でアクセスさせたい」
この場合は IAM Role と least privilege を考えます。
必要な S3 バケットだけにアクセス
必要な API だけを許可
「保存データを暗号化したい」
この場合は S3 encryption や KMS を考えます。
Encryption at rest
KMS key
S3 server-side encryption
「通信中のデータを保護したい」
この場合は encryption in transit を考えます。
HTTPS
TLS
「インターネットを経由せずに S3 へアクセスしたい」
この場合は VPC Endpoint を考えます。
Private access
VPC Endpoint
S3 Gateway Endpoint
「誰が何をしたか監査したい」
この場合は CloudTrail を考えます。
API call history
Audit log
「Training Job のエラーを確認したい」
この場合は CloudWatch Logs を考えます。
Execution logs
Error logs
Training logs
👨💻 実務目線で見ると
実務では、ML ワークロードのセキュリティは後付けにすると大変です。
最初から以下を意識して設計することが重要です。
- データはどこに保存されるか
- 誰がアクセスできるか
- どのサービスがどの権限でアクセスするか
- データは暗号化されているか
- インターネット経由の通信が必要か
- 操作履歴は残っているか
- ログから問題を追跡できるか
- 本番と開発環境が分かれているか
特に、SageMaker は S3、IAM、KMS、VPC、CloudWatch などと連携して使うため、
単体サービスとしてではなく、全体構成としてセキュリティを考える必要があります。
🧠 ここは特に覚えたいポイント
覚え方 1
ML セキュリティ = 権限・暗号化・ネットワーク・監査
覚え方 2
IAM Role = SageMaker が他サービスへアクセスするための権限
覚え方 3
Least Privilege = 必要最小限の権限だけ付与する
覚え方 4
KMS = 暗号化キーを管理するサービス
覚え方 5
VPC Endpoint = インターネットを経由せず AWS サービスへアクセスする仕組み
覚え方 6
CloudTrail = 操作履歴
CloudWatch Logs = 実行ログ
✅ まとめ
今回は、ML ワークロードのセキュリティについて整理しました。
重要なポイントは以下です。
- ML セキュリティは、権限管理、暗号化、ネットワーク制御、監査で考えると分かりやすい
- SageMaker は IAM Role を使って S3 や CloudWatch などにアクセスする
- IAM では least privilege を意識し、必要最小限の権限だけを付与する
- S3 には訓練データ、モデル成果物、推論結果など重要なデータが保存される
- KMS は暗号化キーを管理するサービス
- Encryption at rest と encryption in transit を区別して理解する
- VPC や Security Group によりネットワークを制御できる
- VPC Endpoint を使うと、インターネットを経由せず AWS サービスへアクセスできる
- CloudTrail は操作履歴、CloudWatch Logs は実行ログを確認するために使う
AWS 上で機械学習を運用する場合、
モデル精度だけでなく、
データとモデルを安全に扱える設計 が非常に重要です。
📌 次回予告
次回は、このシリーズの最後として
- SageMaker のコスト最適化
- Training コスト
- Endpoint コスト
- Serverless Endpoint
- Batch Transform
- Spot Training
- Auto Scaling
について整理します。
ML ワークロードでは、精度だけでなくコストも重要な設計要素になります。