Amazon Web Services ブログ

Amazon SageMaker ノートブックと AWS Service Catalog を使用して、セルフサービスで安全なデータサイエンスを実現する

Sanjay Garje と Vebhhav (Veb) Singh の共著あらゆる規模の企業が AWS クラウドに移行しています。エンタープライズチームのリーダーシップから、コストを抑えながら Amazon SageMaker に簡単にアクセスできる方法を模索しているという話を耳にします。これにより、データサイエンスを使った実験を促進し、新しいビジネスチャンスを開拓して現状を打破しています。このブログ記事では、 Amazon SageMakerAWS Service Catalog、および AWS Key Management Service (KMS) を使用してセルフサービスの安全なデータサイエンスを簡単に使えるようにする方法を紹介します。

このブログ記事では、AWS Service Catalog が事前設定された AWS KMS キーを使用して、複雑で不要な詳細をデータサイエンティストに公開することなく、ノートブックインスタンスにアタッチされている機械学習 (ML) ストレージボリュームで保存されているデータを暗号化する方法を説明します。ML ストレージボリュームの暗号化は、一元化されたセキュリティチームやインフラストラクチャチームが事前設定および調整した AWS Service Catalog 製品で行われます。Amazon SageMaker ノートブックインスタンス、トレーニングジョブ、またはエンドポイントを作成するときに、AWS KMS キー ID を指定できます。そのキーが、アタッチされた ML ストレージボリュームを暗号化します。トレーニングジョブ用の出力 Amazon S3 バケットを指定できます。トレーニングジョブも、AWS KMS で管理されるキーで暗号化されます。モデルのアーティファクトをその出力 Amazon S3 バケットに格納するための KMS キー ID を渡すことができます。

AWS Service Catalog の起動制約機能により、開発者とデータサイエンティストに、基盤となる AWS のサービスへの IAM アクセス許可を最小限またはまったく与えずに、AWS リソースをプロビジョニングできます。AWS Service Catalog による管理されたアクセスにより、セキュリティ体制が向上し、影響範囲が制限されます。AWS Service Catalog を使用すると、中央のインフラストラクチャチームが AWS のサービス全体に設定標準を適用できると同時に、起動時にパラメータを使用して AWS リソースをカスタマイズする柔軟性を開発チームに付与できます。

次の図は、AWS Service Catalog により、Amazon SageMaker を使用するクラウドシステム管理者とデータサイエンティストまたは開発者向けに 2 つの異なるワークフローがあるようにする方法を示しています。

ロールに応じて、以下のようにワークフローでさまざまなタスクを実行します。

  1. 管理者: Amazon SageMaker ノートブックインスタンスをデプロイする AWS CloudFormation テンプレートを作成します。
  2. 管理者: AWS Service Catalog で製品ポートフォリオと製品 (Amazon SageMaker ノートブックインスタンス) を作成します。
  3. 開発者/データサイエンティスト: Amazon SageMaker ノートブックインスタンスを検出して起動します。
  4. (オプション) 管理者: Amazon CloudWatch および AWS CloudTrail ログを使用して、ノートブックが暗号化されていることを確認します。

ステップ 1.AWS CloudFormation テンプレートを作成する

テキストエディタまたはお気に入りのコードエディタを開き、次の CloudFormation テンプレートをコピーして、新しいファイルに貼り付けます。
ノートブックインスタンスにアタッチされている ML ストレージボリューム上に保存中のデータを暗号化するために使用されている AWS KMS キー ID にご注意ください。この値を、特定の AWS リージョン用にプロビジョニングした独自の AWS KMS キーに置き換えます。

AWSTemplateFormatVersion: '2010-09-09'
Metadata: 
  License: Apache-2.0
Description: '@Author: Sanjay Garje.AWS CloudFormation Sample Template SageMaker NotebookInstance: This template demonstrates
  the creation of a SageMaker NotebookInstance with encryption.You will be billed for the AWS resources used if you create a stack from
  this template.'
Parameters:
  NotebookInstanceName:
    AllowedPattern: '[A-Za-z0-9-]{1,63}'
    ConstraintDescription: Maximum of 63 alphanumeric characters.Can include hyphens
      (-), but not spaces.Must be unique within your account in an AWS Region.
    Description: SageMaker Notebook instance name
    MaxLength: '63'
    MinLength: '1'
    Type: String
    Default: 'myNotebook'
  NotebookInstanceType:
    AllowedValues:
      - ml.t2.medium
    ConstraintDescription: Must select a valid notebook instance type.
    Default: ml.t2.medium
    Description: Select Instance type for the SageMaker Notebook
    Type: String
  KMSKeyId:
    Description: AWS KMS key ID used to encrypt data at rest on the ML storage volume attached to notebook instance.
    Type: String
    Default: 'Replace it with your KMSKeyId'
Resources:
  SageMakerRole: 
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - "sagemaker.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess"
        - "arn:aws:iam::aws:policy/AmazonS3FullAccess"
        - "arn:aws:iam::aws:policy/IAMReadOnlyAccess"
  SageMakerNotebookInstance:
    Type: "AWS::SageMaker::NotebookInstance"
    Properties:
      KmsKeyId: !Ref KMSKeyId
      NotebookInstanceName: !Ref NotebookInstanceName
      InstanceType: !Ref NotebookInstanceType 
      RoleArn: !GetAtt SageMakerRole.Arn
Outputs:
  SageMakerNoteBookURL:
    Description: "URL for the newly created SageMaker Notebook Instance"
    Value: !Sub 'https://${AWS::Region}.console.aws.amazon.com/sagemaker/home?region=${AWS::Region}#/notebook-instances/openNotebook/${NotebookInstanceName}'
  SageMakerNoteBookTerminalURL:
    Description: "Terminal access URL for the newly created SageMaker Notebook Instance"
    Value: !Sub 'https://${NotebookInstanceName}.notebook.${AWS::Region}.sagemaker.aws/terminals/1'
  SageMakerNotebookInstanceARN:
    Description: "ARN for the newly created SageMaker Notebook Instance"
    Value: !Ref SageMakerNotebookInstance

ステップ 2.Amazon SageMaker ノートブックを AWS Service Catalog にインスタンス化するための製品ポートフォリオと製品を作成する

ユーザーに製品を提供するには、まずそれらの製品のポートフォリオを作成します。ポートフォリオを作成するには、AWS Service Catalog のドキュメントの詳細な手順に従ってください。
AWS Service Catalog コンソールの [ポートフォリオの作成] ページで、次の値を使用してポートフォリオを作成します。

  • ポートフォリオ名 – ML ポートフォリオ
  • 説明 – Machine Learning ポートフォリオ
  • 所有者 – IT

タグを義務付けるために TagOptions の詳細を提供します。

AWS Service Catalog は、ポートフォリオ製品のいずれかが起動されると、必須のタグの使用を強制します。詳細については、「タグオプションの管理」リンクに従ってください。

AWS Service Catalog のドキュメントの詳細な手順に従い、新しい製品を作成します。AWS Service Catalog コンソールの [新しい製品のアップロード] ページで、次の値を使用して製品を作成します。

  • 製品名 – SageMaker ノートブック
  • 説明 – データサイエンティスト向けのノートブック
  • 提供元 – IT
  • ベンダー (オプション) – アマゾン ウェブ サービス

[サポート詳細の入力] ページで次のように入力し、[次へ] を選択します。

  • E メール連絡先 – 有効な E メールアドレス
  • サポートリンク – http://it.org/support
  • サポートの説明 – SageMaker Notebooks のサポートの詳細

[バージョンの詳細] ページで、[テンプレートファイルのアップロード] を選択して [ファイルの選択] をクリックし、CloudFormation テンプレートをセットアップしたときに保存した deploy-sagemaker-notebook.template ファイルを見つけたら、[次へ] をクリックします。

  • バージョンタイトル – 1.0
  • 説明 – これは SageMaker ノートブックを有効にする最初のバージョンです

[レビュー] ページで、[作成] を選択します。

「SageMaker Notebooks」製品を既存の製品ポートフォリオに追加してみましょう。[製品の追加] を選択します。

SageMaker Notebooks を選択し、[製品の追加] をクリックします。

こちらの手順に従って、この製品ポートフォリオにアクセスする必要があるエンドユーザーを追加します。

ステップ 3.データサイエンティストまたは開発者としてログインして、製品を起動する

データサイエンティストのエンドユーザーとしてログインし、[製品リスト] を選択します。

[製品の起動] を選択します。

必須タグのコストセンターは、AWS Service Catalog によって自動的に入力されます。

タグは、コストを最適化するためにさらに使用できる非常に強力な機能です。たとえば、「dev」というタグが付けられたすべての Amazon SageMaker ノートブックインスタンスを午後 6 時に停止し、毎日午前 8 時にそれらを再開できる AWS Lambda 関数を作成できます。そして、週末の間それらを停止し続ける Lambda 関数を書くことができます。それがコストの最適化です! こちらにサンプルがございます。

すべてのパラメータを確認し、[起動] をクリックします。

製品が起動され、そのステータスは「進行中」です。ステータスが「成功」に変わった後に SageMaker Notebooks に移動すると、新しくプロビジョニングされたノートブックが表示されます。

詳細を表示するには、ノートブック名を選択してください。

ステップ 4.AWS CloudTrail コンソールを使用して検証し、ノートブックインスタンスの作成中に AWS KMS キーが使用されていることを確認する

 

まとめ

あらゆる規模の企業のお客様が、適切なレベルのガバナンスを備えた、データサイエンティスト向けの機械学習環境をセルフサービスで有効にすることを求めています。このブログ記事では、AWS Service Catalog が Amazon SageMaker ノートブックをプロビジョニングするためのガバナンスとセキュリティを強化する簡単な方法を紹介しました。AWS Service Catalog を活用することで、クラウド管理者は適切なレベルの制御を定義し、さまざまなグループが使用する AWS のサービスに対して一元管理するタグとともにデータ暗号化を実施できます。同時に、データサイエンティストは、AWS Service Catalog から Amazon SageMaker ノートブックインスタンスを起動するだけで、セルフサービスとより優れたセキュリティ体制を実現できます。

著者について

Vebhhav (Veb) Singh は、サンフランシスコを拠点とする、AWS のシニアソリューションアーキテクトです。Veb は、戦略上重要な大手の AWS のお客様と協力しています。彼はテクノロジーをいじって、複雑な問題の簡単な糸口を見つけるのが大好きです。Veb は水耕栽培に情熱を注いでいます。AWS IoT、サーバーレス、機械学習を使用して、20 以上のマイクロコントローラーを備えた完全に自動化された温室を構築しました。生い茂ったレタスとイチゴは、温室で一年中収穫できます。家族と一緒に毎年新しい旅行先に出かけるのが大好きです。

 

 

Sanjay Garje の写真 Sanjay Garje は、米国西部リージョンにおいて、AWS Service Catalog および AWS Control Tower の技術ビジネス開発をリードしています。Sanjay は熱心なテクノロジーリーダーで、ビジネスとテクノロジーの成果を変革する方法を示してお客様の AWS クラウドジャーニーを支援することに誇りを持っています。余暇には、ランニング、新しい物事の勉強、SJSU でクラウドとビッグデータテクノロジーの手ほどき、行ったことのない場所への家族旅行を楽しんでいます。