スキップしてコンテンツを表示

Amazon VPC または企業ネットワークから SageMaker AI ノートブックインスタンスへのアクセスに制限を適用する方法を教えてください。

所要時間3分
0

Amazon Virtual Private Cloud (Amazon VPC) または企業ネットワークから Amazon SageMaker AI ノートブックインスタンスへのアクセスに制限を適用したいと考えています。

解決策

Amazon VPC または企業ネットワークから SageMaker AI ノートブックインスタンスへのアクセスを制限するには、次のいずれかの手法を実施します。

IAM ポリシーにより、特定の ID によるノートブックインスタンスの起動を制限する

システムが SageMaker AI ノートブックインスタンスを起動する際、システムは CreatePresignedNotebookInstanceUrl API コールを実行します。特定の ID がノートブックインスタンスを起動できないよう制限するには、AWS Identity and Access Management (IAM) ポリシーを使用する必要があります。この API コールへのアクセスを制限するよう設定します。

次の手順を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [アクセス管理] を選択し、[ロール] を選択します。
  3. SageMaker AI ノートブックインスタンスで使用するロールを選択します。
  4. ロール詳細の [権限] セクションで [権限の追加] を選択し、[インラインポリシーの作成] を選択します。
  5. [JSON] を選択します。
  6. SageMaker API コールへのアクセスを拒否するには、次のポリシー例を使用します。
    {
    "Version": "2012-10-17",
        "Statement": [
    
            {
                "Effect": "Deny",
                "Action": "sagemaker:CreatePresignedNotebookInstanceUrl",
                "Resource": "*"
             }
        ]
    }
    注: このポリシーは、SageMaker AI Notebook インスタンスを起動するシステムアクセスを制限します。ロールが特定のリソース作成のみを拒否する必要がある場合は、* を適切な SageMaker AI ノートブックインスタンスの Amazon リソースネーム (ARN) に置き換えてください。

サービスコントロールポリシーを使用する

サービスコントロールポリシー (SCP) を使用して API コールへのアクセスを制限します。上記プロシージャのステップ 6 に記載されたポリシーに類似したポリシーを適用し、「組織ポリシーを AWS Organizations にアタッチする」の手順を実行します。

または、VPC エンドポイントポリシーを更新することで、ノートブックをロックダウンすることもできます。この設定では、ノートブックはインターネットと root アクセスオプションが無効な場合のみ利用できます。

VPC エンドポイントポリシーを使用する

VPC 構成により、ノートブックインスタンスのアクセスレベルを設定できます。

このシナリオ例では、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス経由でノートブックインスタンスへのアクセスを試みます。この Amazon EC2 インスタンスは、一般的には、企業環境のセキュリティ対策を維持する目的で VPC 内に作成するものです。このシナリオにおいて、次の手順を実行します。

  1. Amazon VPC コンソールを開きます。
  2. [PrivateLink と Lattice] を選択し、[エンドポイント] を選択します。
  3. 必要な制限を適用してノートブックにアクセスするために使用する VPC エンドポイントを選択します。
  4. VPC エンドポイントポリシーを編集するには、[アクション] を選択し、[アクセスの管理] を選択します。
  5. ノートブックインスタンスへの接続を許可する VPC エンドポイントポリシーを VPC エンドポイントに適用します。
    例:
    {
    "Statement": [
        {
            "Action": "sagemaker:CreatePresignedNotebookInstanceUrl",
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:us-west-2:123456789012:notebook-instance/myNotebookInstance",
            "Principal": "*"
        }
        ]
    }
    この設定では、次の VPC エンドポイント経由でのみ、このノートブックインスタンスに接続することができます: "arn:aws:sagemaker:us-west-2:123456789012:notebook-instance/myNotebookInstance"
  6. 次のコマンドを実行し、アクセス制限が適用されたノートブックインスタンスにアクセスします。VPC_Endpoint_ID を指定するとポリシーが動作し、リソースへのアクセスは、適用した要件に基づいて制限されます。
    aws sagemaker describe-notebook-instance \
                        --notebook-instance-name myNotebookInstance
    
    {
       "NotebookInstanceArn":
       "arn:aws:sagemaker:us-west-2:123456789023:notebook-instance/mynotebookinstance",
       "NotebookInstanceName": "myNotebookInstance",
       "NotebookInstanceStatus": "InService",
       "Url": "mynotebookinstance.notebook.us-west-2.sagemaker.aws",
       "InstanceType": "ml.m4.xlarge",
       "RoleArn":
       "arn:aws:iam::123456789023:role/service-role/AmazonSageMaker-ExecutionRole-12345678T123456",
       "LastModifiedTime": 1540334777.501,
       "CreationTime": 1523050674.078,
       "DirectInternetAccess": "Disabled"
    }
    

ノートブック実行ロールを使用する

アクセスを VPC 内部から行われた接続のみに制限するには、IAM ポリシーを作成し、アクセスを送信元が VPC 内である呼び出しに限定します。ノートブックインスタンスの作成時、サインインした IAM ユーザーは CreatePresignedNotebookInstanceUrl を呼び出します。この ID を次の権限セットで更新します。次の手順を実行します。

  1. IAM コンソールを開きます。
  2. [アクセス管理] を選択し、[ユーザー] を選択してから、IAM コンソールへのサインインに使用するユーザー名を入力します。
  3. ロール名で対応するロールを開きます。次に [権限] に移動し、[権限の追加] を選択し、[インラインポリシーの作成] を選択します。
  4. [ポリシーエディタ] ページの JSON エディタを使用し、次のポリシー例をアタッチします。
    {
    "Id": "notebook-example-1",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable Notebook Access",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedNotebookInstanceUrl",
                "sagemaker:DescribeNotebookInstance"
            ],
            "Resource": "*",
            "Condition": {
            "StringEquals": {
                "aws:SourceVpc": "vpc-111bbaaa"
                            }
                         }
        }
                ]
    }

このポリシー例では、ノートブックインスタンスにアクセスする API コールは、送信元が "vpc-111bbaaa" である場合のみ許可されます。それ以外の呼び出しは拒否されます。

注: 呼び出し元は、インターフェイスエンドポイント経由でノートブックに接続できるサブネット内である必要があります。

VPC ではなく、VPC インターフェイスエンドポイントによって接続を設定することも可能です。

例:

{
    "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 ユーザーに適用されます。ユーザーがこのロールを引き受けてノートブックへのアクセスを試行する際、インターフェイスエンドポイント "vpce-111bbccc" または "vpce-111bbddd" を使用した場合のみアクセスが許可されます。

IAM ポリシーの作成後、VPC エンドポイント経由でノートブックインスタンスにアクセスするには、次のコマンドを実行します。

aws sagemaker create-presigned-notebook-instance-url
    --notebook-instance-name myNotebookInstance --endpoint-url
    VPC_Endpoint_ID.api.sagemaker.Region.vpce.amazonaws.com

VPC エンドポイントまたは VPC の代替として、同様の VPC サブネット構成を使用してノートブックインスタンスへのアクセスを制限することも可能です。その場合は、条件ブロックで "sagemaker:VpcSubnets" タグを使用し、対応するサブネット ID を指定します。

プライベートネットワークを使用する

VPC 内に配置されたノートブックインスタンスに接続するには、次の手順を実行します。

  • VPC 内のサポート対象リソース経由で接続します。
  • AWS VPN または AWS Direct Connect を使用し、プライベートネットワークと VPC を接続します。

プライベートネットワークを使用してノートブックを設定する方法については、「プライベートネットワークと VPC を接続する」を参照してください。

リソースタグを使用する

リソースタグを含む IAM ポリシーを設定すると、アクセス制御を確立できます (別称: 属性ベースアクセス制御 (ABAC))。タグを使用し、アクセスを特定のユーザーグループのみに制限します。

シナリオ例: チーム 1 はプロジェクト A、チーム 2 はプロジェクト B を担当しています。機密性とセキュリティ上の事情から、企業管理者は、一方のチームが他方のチームのノートブックインスタンスにアクセスできないようにしたいと考えています。この状況に応じたインフラストラクチャを確立するには、次の手順を実行します。

  1. 次のキー/値ペアを含むタグを、チーム A が使用する SageMaker AI ノートブックインスタンスに追加します: {"Project":"A"}

  2. 次のキー/値ペアを含むタグを、チーム B が使用する SageMaker AI ノートブックインスタンスに追加します: {"Project":"B"}

  3. チーム 1 とチーム 2 には、SageMaker AI にアクセスするためのロールを別々に割り当てます。

  4. チーム A がノートブックインスタンスへのアクセスに使用するロールにおいて、次の IAM ポリシーを使用してプロジェクト B へのアクセスを制限します。

    {
          "Effect": "Deny",
          "Action": "sagemaker:CreatePresignedNotebookInstanceUrl",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "sagemaker:ResourceTag/Project": "B"
            }
          }
    }
  5. チーム B がノートブックインスタンスへのアクセスに使用するロールにおいて、次の IAM ポリシーを使用してプロジェクト A へのアクセスを制限します。

    {
          "Effect": "Deny",
          "Action": "sagemaker:CreatePresignedNotebookInstanceUrl",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "sagemaker:ResourceTag/Project": "A"
            }
          }
    }

    注: 別のユーザーに対し、ノートブックインスタンスへのアクセス制限を適用する場合は、そのユーザーに aws:username リソースタグを使用すると制限を設定できます。
    次のポリシー例は、特定のユーザーによるアクセスを拒否し、ノートブックの起動、停止、記述を行えないようにします。さらに、そのユーザーによる署名済み URL の生成が制限されます。詳細については、「タグを使用して SageMaker AI リソースへのアクセスを制御する」を参照してください。

    { "Version": "2012-10-17",
      "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Deny",
        "Action": [
                   "sagemaker:StartNotebookInstance",
                   "sagemaker:StopNotebookInstance",
                   "sagemaker:DescribeNotebookInstance",
                   "sagemaker:CreatePresignedNotebookInstanceUrl"
                   ],
        "Resource": "*",
        "Condition": {
                    "StringNotEquals": {
                    "sagemaker:ResourceTag/owner": "${aws:username}"
                     }
                     }
       } ]
    }

    IP アドレスに対する許可リストとプロキシ設定を使用する

    このシナリオ例では、接続が許可される IP アドレスを、プロキシを使用して企業ネットワークに設定します。複数のリソースにアクセスするノートブックに対し、allowlist を使用して IP アドレスを設定します。

    たとえば、172.31.0.0 ~ 172.31.0.16 の CIDR 範囲内にノートブックを作成する場合、プロキシではこの CIDR ブロックのみを許可します。

    ノートブックの IP アドレスは動的であり、ノートブックインスタンスにアタッチされたサブネットに基づいて割り当てられます。ノートブックの IP アドレスを確認するには、route-n コマンドを使用します。詳細については、「Amazon SageMaker ノートブックインスタンスのネットワーク設定と高度なルーティングオプションについて」を参照してください。

    注: このシナリオは、ノートブックにサブネットをアタッチする場合のみ有効です。

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ