Amazon Web Services ブログ

[新しいブログシリーズのご紹介] 金融業界特集 : Amazon SageMaker ノートブックインスタンス

本投稿は AWSのソリューションアーキテクトである John Formento と Syed Shareef による寄稿を翻訳したものです。

3 週間にわたる re:Invent バーチャル カンファレンスをまとめるにあたって、金融業界特集の最初のブログの投稿をします。この連載は、金融業界のお客様に特定のサービスに関する 5 つの重要な考慮事項 を深く掘り下げ、世界規模の金融機関を支援した当社の経験に基づき、AWS サービス利用の承認を効率化することを目的としています。

  1. コンプライアンスの達成
  2. データ保護
  3. コンピューティング環境の隔離
  4. API による監査の自動化
  5. 運用上のアクセスとセキュリティ

これら 5 つの各領域には、特定のサービスに対するサービス利用の承認を効率化するのに役立つ具体的なガイダンスが含まれています。これは、特定のユースケースと環境に適応する必要がある場合があります。

金融業界のお客様の間で SageMaker の使用が増加したため、Amazon SageMaker ノートブックインスタンスでこの連載を始めます。

Fraud.net のような金融機関は、Amazon の機械学習サービス群を採用し、機械学習モデルを容易に構築してトレーニングし、オンライン決済詐欺を効果的に検出できるようにしています。
または、顧客により多くの価値を提供するレコメンデーションプラットフォームを構築し、データサイエンティストが、プロジェクトを設計から本番環境に迅速に動かします。これはNerdWalletが達成していることです。この組織では、 Amazon の機械学習サービス群を使用して 20 を超える機械学習モデルを提供しており、Amazon DynamoDB と AWS Lambda を使用して、サーバーのプロビジョニングや管理を行わずにコードを実行しています。

Amazon SageMaker ノートブックインスタンスは 、Jupyter ノートブックアプリケーションを実行する機械学習 (ML)EC2 インスタンスです。SageMaker は、インスタンスの作成や関連リソースを管理します。ノートブックインスタンスで Jupyter ノートブックを使用して、データの準備と処理、モデルのトレーニング、SageMaker ホスティングへのモデルのデプロイ、モデルのテストまたは検証を行います。Amazon SageMaker ノートブックインスタンスは、開発者やデータサイエンティストにクラス最高の Jupyter ノートブックエクスペリエンスを提供し、差別化につながらない面倒な作業を取り除きます。これらのノートブックインスタンスは、 S3 ストレージとの密接な統合、Amazon CloudWatch Logs による異常動作の検出、アラームの設定、SageMaker ノートブックをよりスムーズに実行するための洞察、および さまざまな CPU/GPU と共に インスタンスタイプの 選択というメリットがあります。

ここでは、前に説明した 5 つの重要な考慮事項について詳しく説明します。

SageMaker ノートブックインスタンスのセキュリティとコンプライアンス

セキュリティはAWSとお客様の間で共有される責任です。 AWS は、AWS クラウドにおいて、AWSの サービスが動作するインフラストラクチャを保護し、お客様が安全に使用できるサービスを提供する責任を担います。お客様の責任は、お使いの AWS サービスによって決定されます。責任共有モデルのお客様側では、まずネットワーク接続、暗号化、および他の AWS リソースへのアクセスのための要件を決定すべきです。これらのトピックについては、今後のセクションで詳しく説明します。

Amazon SageMaker は、AWS 側の責任共有モデルに関して、 以下のコンプライアンスプログラムの範囲 に含まれます。以降のセクションでは、責任共有モデルにおける、お客様側の責任に関するトピックを取り上げます。

  • SOC 1,2,3
  • PCI
  • IRAP Protected
  • ISO/IEC 27001:201327017:201527018:2019、ISO/IEC 9001:2015
  • OSPAR
  • MTCS(リージョン : 米国東部、米国西部、シンガポール、ソウル)
  • C5

SageMaker ノートブックインスタンスによるデータ保護

転送中と保管時の暗号化は、SageMaker ノートブックインスタンスで処理されるデータの機密性と整合性を確保するためのベストプラクティスです。金融業界のお客様は、通常 AWS でデータを暗号化し、機密データを不正アクセスから保護し、コンプライアンス / 規制要件を満たし、 クラウドセキュリティのベストプラクティスに準拠します。

AWS は、ネットワーク経由で SageMaker ノートブックインスタンスにアクセスするために、デフォルトで HTTPS を使用して署名付き URL を暗号化します。

暗号化を設定して、で SageMaker ノートブックインスタンスデータを保護できます。

  1. ノートブックインスタンスのストレージボリュームデータ(AWS Key Management Service(AWS KMS) キーを指定しない場合、 SageMaker は一時キーでストレージボリュームを暗号化 し、ストレージ EBS ボリュームを暗号化した直後に破棄します。ノートブックインスタンスの場合、KMS キーを指定しない場合、SageMaker は OS ボリュームと ML データボリュームの両方をシステム管理の KMS キーで暗号化します。
  2. Amazon Simple Storage Service(Amazon S3) バケットでの保管時
  3. Amazon S3 バケットポリシーで aws:SecureTransport 条件を使用して Amazon S3 の転送中。s3-bucket-ssl-requests-only マネージド型の AWS Config ルールを使用して、指定された S3 バケット内のすべてのオブジェクトに安全なトランスポートで確実にアクセスすることをお勧めします。
  4. コンテナ間トラフィック暗号化 を使用した転送中(分散トレーニングの実行時にインスタンス間で送信されるデータ)

企業全体での Amazon S3 セキュリティのベストプラクティスに加えて、SageMaker ノートブックインスタンス関連の S3 バケットをさらに保護することもできます。

  1. 最小権限の原則 とパブリックアクセスブロックを有効にしたバケットおよび IAM ポリシーを作成する
  2. アクセスに VPC エンドポイントを使用して、SageMaker が許可されている S3 バケットにのみアクセスできるようにする
  3. 地理的に分散した複数のアベイラビリティーゾーンを超える距離でデータをレプリケートする規制要件がある場合は、クロスリージョンレプリケーションを有効にします。
  4. Macie などの AWS サービスを使用して機密データを検出して保護し、 GuardDuty を使用してオブジェクトレベルの API オペレーションをモニタリングし、潜在的なセキュリティリスクを特定する。

次の IAM 条件を使用して、SageMaker ノートブックインスタンスを操作するときにデータ保護を適用できます。

IAM Condition Key 説明
sagemaker:VolumeKmsKey IAM プリンシパルを制限して、ノートブックインスタンスを作成または更新するときに、アタッチされたストレージボリュームを暗号化する AWS KMS キーを指定します。
sagemaker:RootAccess [Disabled] に設定されている場合、そのノートブックインスタンスにログインするユーザーにルートアクセスを制限します。デフォルトの動作では、ノートブックインスタンスにログインするユーザーがルートレベルのアクセス許可を持つように設定します。デフォルトでは、ノートブックインスタンスを作成すると、そのノートブックインスタンスにログインするユーザーにはルートレベルのアクセス許可が付与されます。これにより、さまざまなソフトウェアツールやパッケージをインストールできます。これにより、不正な不正なソフトウェアを使用してデータを漏洩する可能性があります。

SageMaker ノートブックインスタンスを使用したコンピューティング環境の分離

Amazon SageMaker は、Jupyter ノートブックといったマネージド型の EC2 ベースのサービスを提供しています。SageMaker は、お客様専用の EC2 リソースを使用して、これらのコンポーネントのインフラストラクチャを実行します。これらの EC2 リソースは、VPC 環境にネットワークインターフェイスを持つことができ、セキュリティグループなどのネットワークレベルのコントロールをノートブック、トレーニングジョブ、ホストされた ML モデルに適用できます。

Amazon SageMaker は、指定された VPC 内に Elastic Network Interface(ENI) を作成し、それを SageMaker マネージドインスタンスにアタッチすることでこれを実行します。このパターンを使用すると、Amazon SageMaker で実行するサービスのネットワークレベルアクセスを制御できます。

 

直接インターネットアクセスを無効にするには、AWS アカウントでインターネットにアクセスできないノートブックインスタンスの VPC を指定します。 sagemaker:DirectInternetAccess IAM 条件キーを設定するか、コンソールで Direct Internet Access フラグを設定することで、サービスアカウントでインターネットアクセスを制限できます。そうすることで、SageMaker がノートブックインスタンスへのインターネットアクセスを提供することを防ぐことができます。その結果、VPC にインターフェイスエンドポイント(PrivateLink)または NAT ゲートウェイをもつか、セキュリティグループでアウトバウンド接続を許可しない限り、ノートブックインスタンスはモデルをトレーニングまたはホストできません。

 

ネットワークの分離を有効にすると、Amazon S3 などの他の AWS サービスであっても、コンテナは外部ネットワークを呼び出すことができません。

インターネット経由で接続する代わりに、Virtual Private Cloud(VPC) の インターフェイスエンドポイント を介して VPC からノートブックインスタンスに接続できます。

SageMaker ノートブックインスタンスは、 AWS PrivateLinkを使用する Amazon Virtual Private Cloud (Amazon VPC) インターフェイスエンドポイントをサポートします。各 VPC エンドポイントは、VPC サブネット内のプライベート IP アドレスを持つ 1 つ以上の Elastic Network Interface で表されます。

SageMaker ノートブックインスタンスを使用した API による監査の自動化

特定の設定に準拠するために実装できる AWS Config ルールがいくつかあります。AWS Config はリソースの設定をモニタリングし、リソースが非準拠状態になったときにアラートを発する初期状態のルールを提供します。AWS Config には、SageMaker 固有のマネージド設定ルールが 3 つあります。1 つ目は、Amazon SageMaker ノートブックインスタンスに対して直接インターネットアクセスが無効になっているかどうかをチェックする sagemaker-notebook-no-direct-internet-accessです。2 つ目は、AWS KMS キーが Amazon SageMaker ノートブックインスタンスに対して設定されているかどうかをチェックする sagemaker-notebook-instance-kms-key-configuredです。最後に管理された設定ルールは、AWS KMS キーが Amazon SageMaker エンドポイント設定用に設定されているかどうかをチェックする sagemaker-endpoint-configuration-kms-key-configured です。これらの管理構成ルールの詳細については、こちらで確認できます。

SageMaker サービスに対して行われた API 呼び出しは、AWS CloudTrail に記録されます。CloudTrail は、160 を超える AWS サービスのリソースに対する AWS API 呼び出しと変更の集約されたリポジトリを提供します。SageMaker ノートブックインスタンスについては、承認されたノートブックのみが作成されたことを確認するためにモニタリングする必要がある主要な API がいくつかあります。SageMaker ノートブックインスタンスの場合 :

  • CreateNotebookInstance API を使用して、ノートブックを作成できます。
  • DeleteNotebookInstance API を使用して、既存のノートブックを削除できます。
  • CreatePresignedNotebookInstanceUrl API を使用して、ノートブックが作成されると、ノートブックインスタンスから Jupyter サーバーに接続するために使用できる URL を生成できます。 この API および返される URL へのアクセスを、指定した IP アドレスのリストに制限できます

ノートブックが作成されると、定義された標準から逸脱しないようにするための主要な API がいくつかあります。

  • StartNotebookInstance 、および StopNotebookInstance API コールは、既存のノートブックを開始および停止するために使用できます。開発者やデータサイエンティストの重要な作業が突然中断されないようにモニタリングする必要があります。
  • CreateNotebookInstanceLifecycleConfig API を使用して、ノートブックの作成時または開始時に実行されるシェルスクリプトのコレクションを設定できます。これらのスクリプトは、プライベートパッケージリポジトリとの統合、カスタムパッケージの事前インストール、プロキシサーバーへの接続、ノートブックの強化ロギングおよびモニタリングなどに使用できます。これにより、承認されたライフサイクル設定のみが作成され、実行が監視されますDeleteNotebookInstanceLifecycleConfig API は反対のオペレーションを実行します。
  • UpdateNotebookInstanceLifecycleConfig API をモニタリングして、既存のライフサイクル設定に対する意図しない変更がないことを検証し、設定された標準へのコンプライアンスを確保するための重要な点となります。
  • UpdateNotebookInstance API を使用して、インスタンスタイプの変更、ノートブックへのライフサイクル設定の関連付け / 関連付け解除など、既存のノートブックに変更を加えることができます。

これらの API はすべて、SageMaker ノートブックインスタンスに対して適切なアクションのみが行われ、CloudTrail を活用してこの目標を達成できるようにモニタリングする必要があります。

SageMaker ノートブックインスタンスに関連するだけでなく、SageMaker API の完全なリストについては、 Amazon SageMaker API リファレンスを参照してください。

CreateNotebookInstance API の CloudTrail ログの例を次に示します。


{
	"eventVersion": "1.05",
	"userIdentity": {
		"type": "AssumedRole",
		"principalId": "XXXXXXXXXXXXXXXXXXXXXX:NAME",
		"arn": "arn:aws:sts::xxx:assumed-role/admin/NAME",
		"accountId": "XXX",
		"accessKeyId": "XXX",
		"sessionContext": {
			"sessionIssuer": {
				"type": "Role",
				"principalId": " XXXXXXXXXXXXXXXXXXXXXX ",
				"arn": "arn:aws:iam::XXX:role/NAME",
				"accountId": "XXX",
				"userName": "NAME"
			},
			"webIdFederationData": {},
			"attributes": {
				"mfaAuthenticated": "false",
				"creationDate": "2020-10-29T12:40:04Z"
			}
		}
	},
	"eventTime": "2020-10-29T12:41:32Z",
	"eventSource": "sagemaker.amazonaws.com",
	"eventName": "CreateNotebookInstance",
	"awsRegion": "us-east-1",
	"sourceIPAddress": "72.21.198.65",
	"userAgent": "aws-internal/3 aws-sdk-java/1.11.864 Linux/4.9.217-0.3.ac.206.84.332.metal1.x86_64 OpenJDK_64-Bit_Server_VM/25.262-b10 java/1.8.0_262 vendor/Oracle_Corporation",
	"requestParameters": {
		"notebookInstanceName": "servicespotlight",
		"instanceType": "ml.t2.medium",
		"subnetId": "subnet-efd911ce",
		"securityGroupIds": [
			"sg-4XXXXX68"
		],
		"roleArn": "arn:aws:iam::XXX:role/service-role/AmazonSageMaker-ExecutionRole-20201029T084187",
		"directInternetAccess": "Enabled",
		"volumeSizeInGB": 5,
		"rootAccess": "Enabled"
	},
	"responseElements": {
		"notebookInstanceArn": "arn:aws:sagemaker:us-east-1:XXX:notebook-instance/servicespotlight"
	},
	"requestID": "8063007f-fc31-4d1b-ae28-53c8b144c85e",
	"eventID": "1c677e93-7742-48fd-a34c-4ce100aabf66",
	"eventType": "AwsApiCall",
	"recipientAccountId": "XXX"
}

SageMaker ノートブックインスタンスによる運用アクセスとセキュリティ

私たちは、お客様がプライバシーとデータセキュリティに深く関心を寄せていることを理解しています。そのため、AWS は、コンテンツの保存場所を決定し、転送中および保管中のコンテンツを保護し、ユーザーに対する AWS のサービスやリソースへのアクセスを管理できる、シンプルで強力なツールを通じて、お客様のコンテンツの所有権とコントロールを提供しています。また、お客様のコンテンツへの不正アクセスや公開を防ぐように設計された、責任ある高度な技術的および物理的統制も実施しています。

AWS は、グローバルなプライバシーとデータ保護のベストプラクティスを使用するセキュリティ保証プログラムを開発しました。このプログラムは、AWS 内で安全に運用し、AWS のセキュリティ統制環境を最大限に活用するのに役立ちます。これらのセキュリティ保護と統制プロセスは、複数のサードパーティによる独立した評価によって個別に検証されます。

お客様は、AWS Artifact の AWS SOC 2 Type II レポートでサードパーティー監査人レポートを確認できます。

SageMaker Jupyter ノートブックインスタンスへのアクセスは、AWS IAM によって管理されます。Jupyter ノートブックインスタンスを開くには、ユーザーは CreatePresignedNotebookInstanceUrl API コールにアクセスする必要があります。この API 呼び出しは、Jupyter ノートブックサーバーへのウェブ UI アクセスを取得するための署名付き URL を作成します。このインターフェイスを保護するには、IAM ポリシーステートメントを使用して、API の呼び出しに関する条件をラップします。たとえば、誰がどの IP アドレスから API を呼び出すことができるかなどです。


{
	"Id":"notebook-example-1",
	"Version":"2012-10-17",
	"Statement":[
		{
			"Sid":"Enable Notebook Access",
			"Effect":"Allow",
			"Action":[
				"sagemaker:CreatePresignedNotebookInstanceUrl",
				"sagemaker:DescribeNotebookInstance"
			],
			"Resource":"*",
			"Condition":{
				"ForAnyValue:StringEquals":{
					"aws:sourceVpce":[
						"vpce-111bbccc",
						"vpce-111bbddd"
					]
				}
			}
		}
	]
}

前述の IAM ポリシーでは、誰かがノートブックと通信できるのは、VPC 内から、特定の VPC エンドポイントを介して通信できる場合のみです。前述の例のようなメカニズムを使用すると、ノートブックサーバーとやり取りできるユーザーを明示的に制御できます。

また、SageMaker ノートブックインスタンスタイプを、 AWS Nitro Systemで構築されたインスタンスタイプに制限することもできます。Nitro System は、高パフォーマンス、高可用性、高セキュリティを実現する、AWS で構築されたハードウェアおよびソフトウェアコンポーネントのコレクションです。 Nitro System のセキュリティモデルはロックダウンされており、インタラクティブなアクセスは禁止されており、人為的なエラーや改ざんの可能性を低減します。Nitro System 上に構築された EC2 インスタンスのリストは こちらをご覧ください。

サービスコントロールポリシー (SCP) は、組織のアクセス許可を管理するために使用できる組織ポリシーの一種です。SCP は、組織内のすべてのアカウントで利用可能なアクセス許可の上限を一元的に制御できます。SCP は、お客様のアカウントを組織のアクセスコントロールガイドラインの範囲内に留めておくのに役立ちます。

Nitro システム上に構築しない場合、ノートブックインスタンスの作成を禁止するサンプル SCP を次の例に示します。この SCP は、SageMaker ノートブックインスタンスが作成される目的の組織単位またはアカウントに適用できます。


{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "RestrictSagemakerInstanceTypestoNitro",
			"Effect": "Deny",
			"Action": "sagemaker:CreateNotebookInstance",
			"Resource": [
				"arn:aws:sagemaker:*:*:notebook-instance/*"
			],
			"Condition": {
				"ForAnyValue:StringNotEquals": {
					"sagemaker:InstanceTypes": [
						"ml.c5.xlarge",
						"ml.c5.2xlarge",
						"ml.c5.4xlarge"
						"ml.c5.xlarge",
						"ml.c5.2xlarge",
						"ml.c5.4xlarge",
						"ml.c5.9xlarge",
						"ml.c5.18xlarge",
						"ml.c5d.xlarge",
						"ml.c5d.2xlarge",
						"ml.c5d.4xlarge",
						"ml.c5d.9xlarge",
						"ml.c5d.18xlarge"
					]
				}
			}
		}
	]
}

まとめ

この投稿では、SageMaker ノートブックインスタンスを確認し、金融業界のお客様が、コンプライアンスの達成、データ保護、コンピューティング環境の分離、API による監査の自動化、運用アクセスとセキュリティという 5 つのカテゴリ内でサービスの利用承認を加速するのに役立つ重要な情報を強調しました。一つのアプローチがすべてにフィットするとは言い切れませんが、このガイダンスは、みなさまの組織のセキュリティとコンプライアンス要件を満たすよう適応させることができるでしょう。また、SageMaker ノートブックインスタンスの主要な検討事項の一覧としても活用できます。

次回の記事が掲載されるまでの間、 AWS インダストリーブログチャネル にぜひアクセスしてみてください。また、今後の金融サービスのニュースやベストプラクティスの投稿を乞うご期待ください。

 

 

John Formento

John Formento

John は、Amazon Web Services のソリューションアーキテクトです。AWS クラウドで安全でスケーラブルなソリューションを設計することで、大企業における目標達成を支援しています。John は、AWS 認定ソリューションアーキテクト – プロフェッショナル、DevOps エンジニア – プロフェッショナルを含む 6 つの AWS 認定を保持しています。

Syed Shareef

Syed Shareef

Syed は、シャーロットに拠点を置くシニアセキュリティソリューションアーキテクトです。大規模な金融機関のお客様が、各々のリスク選好度に合わせてAWS におけるビジネス目標を達成できるよう支援しています。

 

翻訳はソリューションアーキテクトの 澤野 佳伸 が担当しました。原文はこちらです。