AWS のクラウド セキュリティは最優先事項です。 Amazon SageMakerスタジオ オファー さまざまなメカニズム などの AWS セキュリティ サービスとの統合を使用して、データとコードを保護します。 AWS IDおよびアクセス管理 (私は)、 AWSキー管理サービス (AWS KMS)、または アマゾン バーチャル プライベート クラウド (Amazon VPC)。
金融サービスなどの規制の厳しい業界のお客様は、 Studio を VPC のみにセットアップする ネットワーク分離を有効にし、Studio ノートブックからのインターネット アクセスを無効にするモード。 IAM と Studio の統合を使用して、Studio ノートブック、Studio IDE、または アマゾンセージメーカー トレーニングの仕事。
一般的な使用例は、 Studio IDE へのアクセスを制限する 指定されたネットワーク CIDR 範囲または指定された VPC 内のユーザーのみ。 実装することでこれを達成できます IAM ID ベースの SageMaker ポリシー それらのポリシーを、それらのアクセス許可を必要とする IAM ユーザーまたはグループにアタッチします。 ただし、SageMaker ドメインは以下で構成する必要があります IAM 認証モード、IAM アイデンティティベースのポリシーはサポートされていないため AWSシングルサインオン (SSO) 認証モード.
多くのお客様が AWS SSO を使用して、一元化された従業員 ID コントロールを有効にし、一貫したユーザー サインイン エクスペリエンスを提供しています。 この投稿では、AWS SSO 機能を維持して Studio にアクセスしながら、このユースケースを実装する方法を示します。
ソリューションの概要
VPC のみのモードで SageMaker ドメインをセットアップし、サブネットとセキュリティ グループを指定すると、SageMaker は エラスティックネットワークインターフェース (ENI) は、指定されたサブネット内のセキュリティ グループに関連付けられています。 ENI を使用すると、トレーニング コンテナーを VPC 内のリソースに接続できます。
このモードでは、ノートブックからの直接インターネット アクセスは完全に無効になり、すべてのトラフィックはプライベート VPC の ENI 経由でルーティングされます。 これには、Studio UI ウィジェットおよびインターフェース (実験管理、オートパイロット、モデルモニターなど) からそれぞれのバックエンド SageMaker API へのトラフィックも含まれます。 AWS では、VPC のみのモードを使用して、Studio のネットワーク アクセスをきめ細かく制御することをお勧めします。
最初の課題は、Studio がインターネット接続なしで展開されている場合でも、Studio IDE にどこからでもアクセスできることです。 AWSマネジメントコンソール Studio は IAM プリンシパルに付与されます。 Studio をパブリック ネットワークから完全に分離し、すべての通信を厳密に制御されたプライベート VPC 内に含める場合、この状況は受け入れられません。
この課題に対処し、指定された VPC または CIDR 範囲以外からの Studio IDE へのアクセスを無効にするには、 CreatePresignedDomainUrl SageMaker API. この API を呼び出すために使用される IAM ロールまたはユーザーは、Studio にアクセスする権限を定義します。 これで、IAM ID ベースのポリシーを使用して、目的のアクセス構成を実装できるようになりました。 たとえば、指定された VPC からのみアクセスを有効にするには、署名付きドメイン URL の生成に使用される IAM プリンシパルに関連付けられた IAM ポリシーに次の条件を追加します。
指定された VPC エンドポイントまたはエンドポイントからのみアクセスを有効にするには、次の条件を指定します。
指定された CIDR 範囲からのアクセスを制限するには、次の条件を使用します。
XNUMX つ目の課題は、SageMaker ドメインが IAM 認証モードで構成されている場合にのみ、IAM ベースのアクセス制御が機能することです。 SageMaker ドメインが AWS SSO モードでデプロイされている場合は使用できません。 次のセクションでは、これらの課題に対処し、Studio への AWS SSO アクセスを使用して IAM ベースのアクセス制御を実装する方法を示します。
アーキテクチャの概要
Studio は、特定の SageMaker Studio ユーザープロファイルに割り当てられる SAML アプリケーションとして公開されます。 次のスクリーンショットに示すように、ユーザーは AWS SSO ポータルから直接 Studio に簡単にアクセスできます。
このソリューションは、 カスタム SAML 2.0 アプリケーション Studio のユーザー認証をトリガーするメカニズムとして。 カスタム SAML アプリケーションが次のように構成されている必要があります。 アマゾンAPIゲートウェイ エンドポイント URL を Assertion Consumer Service (ACS) として使用し、AWS SSO ユーザー ID と SageMaker ドメイン ID を含むマッピング属性が必要です。
API Gateway エンドポイントは、 AWSラムダ SAML 応答を解析してドメイン ID とユーザー ID を抽出し、それらを使用して Studio 署名付き URL を生成する関数。 Lambda 関数は最終的に、HTTP 302 レスポンスを介してリダイレクトを実行し、Studio でユーザーをサインインさせます。
IAM ポリシーは、Studio ユーザーがログインできるネットワーク環境を制御します。これには、前のセクションで説明した制限条件が含まれます。 この IAM ポリシーは、Lambda 関数にアタッチされています。 IAM ポリシーには、 sagemaker:CreatePresignedDomainURL
特定のユーザー プロファイル専用の API:
次の図は、ソリューションアーキテクチャを示しています。
このソリューションは、SageMaker ドメインをプライベート VPC にデプロイし、 VPCエンドポイント インターネットゲートウェイを必要とせずに、プライベート接続を介して Studio、SageMaker ランタイム、および SageMaker API にアクセスできます。 VPC エンドポイントは、プライベート DNS を有効にして構成されます (PrivateDnsEnabled=True
) を関連付ける プライベートホストゾーン あなたのVPCで。 これにより、スタジオはデフォルトのパブリック DNS 名を使用して SageMaker API にアクセスできます api.sagemaker.<Region>.amazonaws.com
VPC エンドポイント URL を使用するのではなく、エンドポイントのプライベート IP アドレスに解決されます。
次のような他の AWS サービスにアクセスする場合は、VPC エンドポイントを VPC に追加する必要があります。 Amazon シンプル ストレージ サービス (Amazon S3)、 Amazon エラスティック コンテナ レジストリ (アマゾン ECR)、 AWSセキュリティトークンサービス (AWS STS)、 AWS CloudFormationまたは AWS コードコミット.
Lambda 関数実行ロールにアタッチされた IAM ポリシーを使用して、署名付き URL およびその他の API 呼び出しを生成するために使用されるアクセス許可を完全に制御したり、使用されている AWS サービスへのアクセスを制御したりできます。 VPCエンドポイントポリシー. IAM ポリシーを使用して Studio および SageMaker API へのアクセスを制御する例については、以下を参照してください。 ID ベースのポリシーを使用して SageMaker API へのアクセスを制御する.
このソリューションでは Studio ドメインを IAM モードでデプロイする必要がありますが、エンド ユーザーが Studio にログインするメカニズムとして AWS SSO を使用できます。
次のサブセクションでは、主要なソリューション コンポーネントについて詳しく説明します。
APIゲートウェイ
API Gateway エンドポイントは、カスタム SAML 2.0 アプリケーションで構成されたアプリケーション ACS URL のターゲットとして機能します。 エンドポイントは非公開で、というリソースがあります /saml
統合リクエストが Lambda プロキシとして設定された POST メソッド。 このソリューションは、構成された VPC エンドポイントを使用します。 com.amazonaws.<region>.execute-api
VPC 内からこの API エンドポイントを呼び出すための DNS 名。
AWS SSO
カスタム SAML 2.0 アプリケーションは、API Gateway エンドポイント URL で構成されます https:/{ restapi-id}.execute-api.amazonaws.com/saml
アプリケーション ACS URL として、次の要件を持つ属性マッピングを使用します。
- ユーザー識別子:
- アプリケーションのユーザー属性 – ユーザー名
- AWS SSO でユーザー属性をマッピングします –
${user:AD_GUID}
- SageMaker ドメイン ID 識別子:
- アプリケーションのユーザー属性 –
domain-id
- AWS SSO でユーザー属性をマッピングします – Studio インスタンスのドメイン ID
- アプリケーションのユーザー属性 –
アプリケーションは、AWS SSO ユーザー ID と同じ名前の Studio ユーザー プロファイルをプロビジョニングすることにより、AWS SSO ユーザーのアクセス制御を実装します。
ラムダ関数
このソリューションは、Lambda 関数を API Gateway の呼び出しポイントとして設定します /saml
資源。 関数は、 SAMLResponse
AWS SSO によって送信され、 domain-id
ユーザー名だけでなく、 createPresignedDomainUrl
Studio URL とトークンを取得し、HTTP 302 応答を使用してログインするようにユーザーをリダイレクトする SageMaker API。 Lambda 関数には、その実行ロールにアタッチされた特定の IAM ポリシーがあり、 sagemaker:createPresignedDomainUrl
を使用して特定のネットワーク CIDR 範囲から要求された場合にのみアクション VpcSourceIp
条件。
Lambda 関数には、署名をチェックするなど、SAML レスポンスを検証するロジックがありません。 ただし、ACS として機能する API Gateway エンドポイントはプライベートまたは内部のみであるため、この概念実証環境では必須ではありません。
ソリューションを展開する
GitHubリポジトリ エンド ツー エンド ソリューションの完全なソース コードを提供します。
ソリューションをデプロイするには、AWS アカウントに対する管理者 (またはパワー ユーザー) のアクセス許可が必要です。 AWSコマンドラインインターフェイス (AWS CLI)および AWS サム CLI と最小 Pythonの3.8.
このソリューションは、次の XNUMX つの AWS リージョンへのデプロイをサポートしています。 eu-west-1
, eu-central-1
, us-east-1
. これらのリージョンのいずれかをデプロイ用に選択してください。
ソリューションのテストを開始するには、ソリューションの次の展開手順を完了する必要があります。 GitHub README ファイル:
- 設定していない場合は、AWS SSO を設定します。
- SAM アプリケーションを使用してソリューションを展開します。
- 新しいカスタム SAML 2.0 アプリケーションを作成します。
展開手順を完了したら、ソリューション テストに進むことができます。
ソリューションをテストする
このソリューションは、XNUMX つのユースケースをシミュレートして、AWS SSO と SageMaker アイデンティティベースのポリシーの使用法を示します。
- ポジティブなユースケース – ユーザーは、指定された CIDR 範囲内から VPC エンドポイントを介して Studio にアクセスします
- ネガティブなユースケース – ユーザーがパブリック IP アドレスから Studio にアクセスする
これらのユース ケースをテストするために、このソリューションでは XNUMX つの アマゾン エラスティック コンピューティング クラウド (Amazon EC2) インスタンス:
- プライベート ホスト – Studio (オンプレミスの安全な環境) にアクセスできるプライベートサブネット内の EC2 Windows インスタンス
- 踏み台ホスト – プライベート ネットワーク上のプライベート ホストへの SSH トンネルを確立するために使用されるパブリック サブネット内の EC2 Linux インスタンス
- 公開ホスト – ユーザーが許可されていない IP アドレスから Studio にアクセスできないことを示すための、パブリックサブネット内の EC2 Windows インスタンス
承認済みネットワークからの Test Studio アクセス
テストを実行するには、次の手順に従います。
- プライベート ネットワーク上の EC2 Windows インスタンスにアクセスするには、SAM 出力キーの値として提供されるコマンドを実行します。
TunnelCommand
. パラメーターで指定された鍵ペアの秘密鍵が、SSH トンネル コマンドの実行元のディレクトリーにあることを確認してください。 このコマンドは、 SSHトンネル 上のローカル コンピューターからlocalhost:3389
プライベート ネットワーク上の EC2 Windows インスタンスに。 次のコード例を参照してください。 - ローカル デスクトップまたはノートブックで、新しい RDP 接続を開きます (たとえば、Microsoft リモート デスクトップを使用)。
localhost
ターゲットリモートホストとして。 この接続は、踏み台ホストを介してプライベート EC2 Windows インスタンスにトンネリングされます。 ユーザー名を使用するAdministrator
スタック出力からのパスワードSageMakerWindowsPassword
. - リモート デスクトップから Firefox Web ブラウザを開きます。
- として指定したユーザー名に関連付けられた認証情報を使用して、AWS SSO ポータルに移動してログインします。
ssoUserName
パラメータに一致する最初のデバイスのリモートコントロール URL を返します。 - 選択する SageMaker セキュアデモ AWS SSO ポータルからの AWS SSO アプリケーション。
新しいブラウザ ウィンドウで Studio IDE にリダイレクトされます。
承認されていないネットワークからのテスト スタジオへのアクセス
次の手順に従って、未承認のネットワークからのアクセスをシミュレートします。
- で提供された IP で新しい RDP 接続を開きます。
SageMakerWindowsPublicHost
SAML 出力。 - リモート デスクトップから Firefox Web ブラウザを開きます。
- として指定されたユーザー名に関連付けられた認証情報を使用して、AWS SSO ポータルに移動してログインします。
ssoUserName
パラメータに一致する最初のデバイスのリモートコントロール URL を返します。 - 選択する SageMaker セキュアデモ AWS SSO ポータルからの AWS SSO アプリケーション。
今度は不正アクセスのメッセージが表示されます。
クリーンアップ
料金が発生しないようにするには、ソリューションによってプロビジョニングされ、手動で作成されたすべてのリソースを AWS アカウントから削除する必要があります。 ソリューションの指示に従ってください READMEファイル.
まとめ
エンド ユーザーと Studio の間にミドルウェア認証レイヤーを導入することで、ユーザーが Studio にアクセスできる環境を制御し、他のすべての無許可の環境を明示的にブロックできることを実証しました。
セキュリティをさらに強化するために、IAM ポリシーをユーザー ロールに追加して、コンソールから Studio へのアクセスを防ぐことができます。 使用する場合 AWS組織、次を実装できます サービス制御ポリシー Studio へのアクセスが必要な組織部門またはアカウントの場合:
この記事で説明するソリューションでは API Gateway と Lambda を使用していますが、EC2 インスタンスと インスタンスの役割 説明したのと同じパーミッション検証ワークフローを使用するか、独立したシステムを使用して、ユーザーの認証と承認を処理し、スタジオの署名付き URL を生成します。
参考文献
Studio へのアクセスを保護することは活発な研究トピックであり、同様のアプローチに関する他の関連記事があります。 使用できるその他のサービスとアーキテクチャの詳細については、AWS Machine Learning ブログの次の投稿を参照してください。
著者について
ジェローム・バチェレ アマゾン ウェブ サービスのソリューション アーキテクトです。 彼は、顧客が AWS から最大限の価値を引き出してビジネス目標を達成できるよう支援することに力を注いでいます。 Jerome は、データ保護およびデータ セキュリティ ソリューションに 10 年以上携わってきました。 雲の中にいるだけでなく、Jerome はスイスのジュネーブ地域で妻と 2 人の娘と旅行や質の高い時間を楽しんでいます。
エフゲニー・イリン AWSのソリューションアーキテクトです。 彼は、ソフトウェア開発とソリューションアーキテクチャのすべてのレベルで20年以上の経験があり、COBOLやアセンブラーから.NET、Java、Pythonまでのプログラミング言語を使用してきました。 彼は、ビッグデータ、分析、およびデータエンジニアリングに重点を置いて、クラウドネイティブソリューションを開発およびコーディングしています。
- '
- "
- 100
- 7
- 9
- 私たちについて
- アクセス
- Action
- アクティブ
- 住所
- すべて
- Amazon
- Amazon EC2
- アマゾンセージメーカー
- Amazon Webサービス
- 分析論
- API
- API
- 申し込み
- 建築
- AREA
- 認証
- 承認
- オートパイロット
- AWS
- さ
- ビッグデータ
- ブログ
- ブラウザ
- ビジネス
- コール
- 例
- 挑戦する
- 課題
- 課金
- クラウド
- クラウドネイティブ
- コード
- コミュニケーション
- 計算
- 接続
- 接続性
- 領事
- consumer
- コンテナ
- コンテナ
- Credentials
- Customers
- データ
- データ保護
- データセキュリティ
- 開発
- DNS
- そうではありません
- 効果
- エンドポイント
- エンジニアリング
- 環境
- 例
- 実行
- 運動
- 体験
- 実験
- 抽出物
- 最後に
- ファイナンシャル
- 金融業務
- Firefoxの
- 名
- フォーカス
- フル
- function
- 生成する
- GIF
- 認定条件
- How To
- HTTPS
- IAM
- アイデンティティ
- 実装する
- 実装
- 産業
- 統合
- インターネット
- IP
- IPアドレス
- 分離
- IT
- Java
- Jobs > Create New Job
- 保管
- キー
- ESL, ビジネスESL <br> 中国語/フランス語、その他
- LEARN
- 学習
- LINE
- linuxの
- ローカル
- 機械学習
- 管理
- Microsoft
- net
- ネットワーク
- ネットワークアクセス
- ノートPC
- オファー
- 開いた
- その他
- パスワード
- ポリシー
- 方針
- 人気
- ポータル
- 投稿
- 電力
- 校長
- プライベート
- 秘密鍵
- プロフィール
- プログラミング
- プログラミング言語
- 証明
- 概念実証
- 守る
- 保護
- 提供します
- は、大阪で
- 代理
- 公共
- Python
- 品質
- 範囲
- リダイレクト
- 要件
- 研究
- リソースを追加する。
- リソース
- 応答
- ラン
- セージメーカー
- セキュリティ
- サービス
- サービング
- セッションに
- 同様の
- 簡単な拡張で
- ソフトウェア
- ソフトウェア開発
- ソリューション
- start
- ステートメント
- ストレージ利用料
- サポート
- サポート
- スイス
- ターゲット
- test
- テスト
- 介して
- 時間
- トークン
- トラフィック
- トレーニング
- ui
- users
- 値
- バーチャル
- ウェブ
- ウェブブラウザ
- Webサービス
- ウィンドウズ
- 以内
- 無し
- ワークフロー
- 労働人口
- 作品
- 年