Amazon Web Services ブログ

AWS PrivateLink エンドポイントを使用することで、Amazon VPC から Amazon SageMaker ノートブックに直接アクセスする

Amazon SageMaker は、AWS PrivateLinkノートブックインスタンスに対してサポートするようになりました。 この記事では、Amazon SageMaker ノートブックへの接続を確保するために、AWS PrivateLink をセットアップする方法を示します。

HIPAA または PCI などの規制へのコンプライアンスを維持するために、情報がインターネットを経由しないようにすることが必要になることがあります。 さらに、公共インターネットへのデータの露出を防止することで、ブルートフォースや分散サービス拒否攻撃などの脅威ベクトルの可能性が減少します。

AWS PrivateLink は、公共インターネットへのデータの露出を排除することにより、クラウドベースのアプリケーションと共有するデータのセキュリティを簡素化します。複数の VPC、AWS サービス、オンプレミスアプリケーションの間のプライベート接続を可能にします。AWS PrivateLink により、プライベートネットワークで直接、ホストされる場合と同様に、お使いのサービスが機能します。

AWS PrivateLink を使用してAmazon SageMaker APIと予測呼び出しを保護するため、以前、API オペレーションとランタイムのための PrivateLink サポートを導入しました。 AWS PrivateLink を使用して、ノートブックインスタンスへの接続も同様に保護することができるようになります。

AWS PrivateLink を介して Amazon SageMaker ノートブックを使用するために、Amazon Virtual Private Cloud (VPC) エンドポイントをセットアップする必要があります。 AWS PrivateLink は、インターフェイス VPC エンドポイントを使用することで、スケール自在な方法で VPC からすべての Amazon SageMaker API オペレーションにプライベートにアクセスすることができます。VPC エンドポイント は、プライベート IP アドレスをもつサブセットの Elastic Network Interface です。それは、すべてのAmazon SageMaker API コールのエントリポイントとして機能します。

作成した VPC エンドポイントへのアクセスを制限するためには、AWS Identity and Access Management (IAM) ロールが VPC からのみのトラフィックを許可するように設定する必要があります。

: AWS マネジメントコンソールは公共インターネットを通じてアクセスされ、接続は AWS PrivateLink でインターネットを回避するため、CLI と API を通じてのみ Amazon SageMaker を使用する必要があることに留意してください。言い換えると、以下の設定で、AWS PrivateLinkをアクティブにしたあとでは、コンソールを通じて Amazon SageMaker を使用できなくなります。

VPC エンドポイントの設定

AWS マネジメントコンソールのステップを通じて、VPC エンドポイントを作成しますが、AWS コマンドラインインターフェイス (AWS CLI) のコマンドを使用して同じ操作を行うことができます。

ここでは、2 個の VPC エンドポイントを作成し、1 個を SageMaker API を使用してノートブックインスタンスを作成するために使い、もう 1 個を作成したノートブックインスタンス (CreatePresignedNotebookInstanceUrl) にアクセスするために使用します。コンソールから VPC エンドポイントを作成するためには、以下の図に示されるように、Amazon VPC コンソールを開き、新しいエンドポイントを作成します。

まず、ノートブックの VPC エンドポイントの作成を始めましょう。ここでは、3 つの属性を定義する必要があります。

  1. Amazon SageMaker API サービス名。サービスカテゴリーでは、AWS サービスを選択し、サービス名では、aws.sagemaker.us-west-2.notebook を選択します。 (リージョン情報 – URL の us-west-2- は、選択するリージョンによって異なります。)
  2. 使用する VPC およびアベイラビリティゾーン:
  3. インターフェイス VPC エンドポイントに関連付けられるセキュリティグループ: セキュリティグループを指定しない場合、VPC のデフォルトのセキュリティグループが関連付けられます。

ここでは、プライベートホステッドゾーンにより、ユーザーはプライベート IPv4 アドレスや AWS により提供されたプライベート DNS ホスト名の代わりに、example.com などの DNS ドメイン名を使用して VPC のリソースにアクセスすることができます。AWS CLI と Amazon SageMaker SDK が デフォルトで使用する Amazon SageMaker DNS ホスト名 (https://api.sagemaker.Region.amazonaws.com) が、VPC エンドポイントを解決します。

Amazon SageMaker API の 2 番目の VPC エンドポイントを作成するために、同じ手順を繰り返します。今回は、サービス名を選択する間に、com.amazonaws.us-west-2.sagemaker.api を選択します。ステータスが使用可能の時に、VPC エンドポイントの使用を開始できます。

VPC にプライベートネットワークを接続する

VPC エンドポイントを作成した後で、同じ VPC 内からノートブックインスタンスにアクセスしようとするか、Amazon Virtual Private Network (VPN) または AWS Direct Connectなどの設定を用意して、ノートブックに接続するのかを確認します。このことは、ほかの Amazon SageMaker API オペレーションには必要ありませんが、VPN は VPC を接続する間にインターネットゲートウェイを置換する必要があるため、VPC の外部からウェブブラウザー経由でノートブックにアクセスすることが重要です。ここでは、VPN を使用することで、VPC にプライベートネットワークを接続する間に参照できるチュートリアルを示します: https://aws.amazon.com/premiumsupport/knowledge-center/create-connection-vpc/

IAM ロールの設定

API サービスに VPC エンドポイントを作成したら、IAM ロールを Amazon SageMaker ノートブックにアクセスするすべてのユーザーまたはグループの条件付きのオペレーターポリシーで更新することが必要です。 IAM は、AWS のリソースへのアクセスを安全にコントロールするのに役立つウェブサービスです。ポリシーとは、アイデンティティまたはリソースにアタッチして、そのアクセス許可を定義するエンティティです。

使用した VPC エンドポイントに基づいて、Amazon SageMaker ノートブックへのアクセスを付与するか、制限するために、IAM ポリシーで aws:sourceVpce 条件を採用します。 IAM はデフォルトですべてのアクセス要求を拒否するため、条件付きの Allow ポリシーを遵守することは、必要な条件を満たす場合のみ要求が成功することを保証します。たとえば、以下のポリシーの例では、要求が指定された 2 個の VPC エンドポイントを通じてのみ送られてきた場合のみ、ユーザーが API オペレーションを実行することを許可します (プレースホルダー AWS アカウント ID を自分のアカウント ID に置き換え、プレースホルダー VPC エンドポイント ID を自分のエンドポイント ID に置き換えてください)。作成した両方の VPC エンドポイントを含めるのを忘れないでください。

: 以下のポリシーで取り上げたアクションは、ノートブックのアクセス事例を具体的に例示しています。取り上げたい他の Amazon SageMaker API の「アクション」のセクションを更新する必要があります。代わりに、「sagemaker:*」を使用して、ポリシーのすべての Amazon SageMaker API をカバーすることができます。

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

このポリシーは、StringEquals 条件をもつ Allow ステートメントを含むことで機能します。VPC エンドポイントを通じて Amazon SageMaker に要求するときに、エンドポイントの ID はポリシーで指定された aws:sourceVpce 値と比較されます。値が一致しない場合、要求は拒否されます。

ポリシーを設定するもう一つの方法は、aws:sourceVpc 条件を aws:sourceVpce 条件の代わりに使用することです。その違いは、その VPC 内の特定のエンドポイントの代わりに、一般的に、VPC 情報を使用することです。このことは特定のエンドポイントによるアクセスを制限したくない場合で、VPC 全体を制限したい場合は便利です。このようにして、VPC 情報を包括的に維持し、その VPC 内のエンドポイントを更新する場合に IAM ロールを更新する必要がなくなります。以下に例を示します。

{
    "Id": "notebook-example-with-sourcevpc",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable Notebook Access",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedNotebookInstanceUrl",
                "sagemaker:DescribeNotebookInstance"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpc": "vpc-111bbaaa"
                }
            }
        }
    ]
}

また、アカウントレベルの粒度で、ユーザー、グループ、組織のロールが行うことができるサービスやアクションについて、サービスコントロールポリシーを使用して制限を調整することも考えられます。

AWS PrivateLink を通じた Amazon SageMaker ノートブックの使用

設定済みの VPC エンドポイントを使用して VPC の内部からノートブックインスタンスをリストするために、以下の AWS CLI コマンド例を使用してください。

aws sagemaker list-notebook-instances --endpoint-url VPC_Endpoint_ID.api.sagemaker.Region.vpce.amazonaws.com

自分の VPC エンドポイントにプライベートの DNS ホスト名を使用可能にした場合は、エンドポイント URL を指定する必要はありません。

プライベートホステッドゾーンを有効にした場合、または 2018 年 8 月 13 日以前にリリースされた SDK を使用している場合、SDK または AWS CLI を使用するときにエンドポイントを指定する必要があります。以下に例を挙げます。

aws --endpoint https://VPC_Endpoint_ID.api.sagemaker.Region.vpce.amazonaws.com sagemaker create-presigned-notebook-instance-url --notebook-instance-name NotebookInstanceName

前の例の VPC エンドポイントの場合、これは次のようになります。

aws --endpoint https://vpce-08e906a63733a8aa1.api.sagemaker.us-west-2.vpce.amazonaws.com sagemaker create-presigned-notebook-instance-url --notebook-instance-name NotebookInstanceName

プライベートホステッドゾーンを有効にしていて、2018 年 8 月 13 日以前にリリースされた SDK を使用している場合、これは次のようになります。

aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name NotebookInstanceName

結論

AWS PrivateLink サポートは、Amazon SageMaker と AWS Private Link が使用できるすべてのリージョンで使用できます。Amazon SageMaker のセキュリティ機能の詳細は、Amazon SageMaker Developer Guide を参照してください。


著者について

Erkan Tas は、Amazon SageMaker のシニアテクニカルプロダクトマネージャーです。彼は、AWS プラットフォームを使用して、人工知能を簡単に、アクセス可能に、スケーラブルにするという役割を担っています。また、彼は船乗りであり、科学と自然を崇拝し、碁やストラトキャスターのプレイヤーでもあります。