Amazon SageMaker Studio アプリケーションのセキュリティアップデートの通知が来たので、SageMaker ドメインを削除する対応をした

2024.02.08

こんにちは、CX 事業本部製造ビジネステクノロジー部の若槻です。

使用している AWS アカウントの Health Dashboard に下記のような通知がありました。

お使いの Amazon SageMaker Studio アプリケーションには、CVE-2024-21626 [1] に対処するための重要なセキュリティ関連のアップデートが必要です。Amazon SageMaker は、2024 年 2 月 7 日から 2024 年 2 月 21 日までの間にこれらの Studio アプリケーションを更新する予定です。このシステムによって開始される更新 [2] では、Studio アプリケーションが実行されている基盤となるサービスソフトウェアに関連するアップグレードが実行されます。これらのアップデートは、2024 年 2 月 2 日以降に作成されるすべての Studio アプリケーションに含まれます。

この更新中、保存されていない作業はすべて失われ、進行中の操作はすべて終了します。影響を受ける可能性を避けるため、2024 年 2 月 7 日までに Studio アプリケーションを更新 [3] [4] してください。

影響を受けるStudioアプリケーションのリストは、[影響を受けるリソース] タブにあります。

脆弱性対応のため Amazon SageMaker Studio アプリケーションの更新を行うが、その際に保存されていない作業が失われてしまうとのことです。

下記によると CVE-2024-21626 は OSS のコンテナ管理システムに起因する、重大度 Important(4 段階中上から 2 番目)の脆弱性とのこと。

通知の Affected resources タブを見ると、影響を受ける Studio アプリケーションが 1 つあります。

リソースのリンクを開くと、SageMaker のドメインが 1 つ作成されていました。

以前 SageMaker のワークショップを実施した際のリソースが削除されずに残っていたようです。

リソースを引き続き残しておく必要性も無かったので、今回はこの SageMaker のドメイン(アプリケーション)を削除する対応をしてみました。

やってみた

削除手順は基本的に下記ドキュメントに従えば良いようです。

マネジメントコンソールから削除する方法と、AWS CLI から削除する方法がありますが、今回は AWS CLI で削除してみます。

ドメイン一覧の取得

まずは SageMaker のドメイン一覧を取得します。

$ aws sagemaker list-domains
{
    "Domains": [
        {
            "DomainArn": "arn:aws:sagemaker:ap-northeast-1:XXXXXXXXXXXX:domain/d-jjhgsursfe8q",
            "DomainId": "d-jjhgsursfe8q",
            "DomainName": "default-1662733123353",
            "Status": "InService",
            "CreationTime": "2022-09-09T23:18:46.294000+09:00",
            "LastModifiedTime": "2022-09-09T23:23:45.292000+09:00",
            "Url": "https://d-jjhgsursfe8q.studio.ap-northeast-1.sagemaker.aws"
        }
    ]
}

SageMaker のドメインは SageMaker Studio を使用するための環境で、Amazon EFS ボリューム、ユーザーリスト、アプリケーション、Amazon VPC の設定などが含まれています。

アプリケーション一覧の取得

削除したいドメインの ID を指定して、アプリケーション一覧を取得します。

domainId=d-jjhgsursfe8q

$ aws sagemaker list-apps \
  --domain-id-equals ${domainId}
{
    "Apps": [
        {
            "DomainId": "d-jjhgsursfe8q",
            "UserProfileName": "default-1662733047253",
            "AppType": "JupyterServer",
            "AppName": "default",
            "Status": "InService",
            "CreationTime": "2023-06-03T20:14:29.874000+09:00"
        }
    ]
}

SageMaker のアプリケーションは、SageMaker Studio で Jupyter ノートブックなどを実行する環境です。

アプリケーションの削除

先程取得したアプリケーションの情報を指定して、アプリケーションを削除します。

userProfileName=default-1662733047253
appName=default
appType=JupyterServer

aws sagemaker delete-app \
    --domain-id ${domainId} \
    --app-name ${appName} \
    --app-type ${appType} \
    --user-profile-name ${userProfileName}

ユーザープロファイル一覧の取得

ドメインに紐づくユーザープロファイル一覧を取得します。

$ aws sagemaker list-user-profiles \
    --domain-id-equals ${domainId}
{
    "UserProfiles": [
        {
            "DomainId": "d-jjhgsursfe8q",
            "UserProfileName": "default-1662733047253",
            "Status": "InService",
            "CreationTime": "2022-09-09T23:24:01.667000+09:00",
            "LastModifiedTime": "2022-09-09T23:24:03.850000+09:00"
        }
    ]
}

ユーザープロファイルの削除

先程取得したユーザープロファイルの情報を指定して、ユーザープロファイルを削除します。

aws sagemaker delete-user-profile \
    --domain-id ${domainId} \
    --user-profile-name ${userProfileName}

スペース一覧の取得

ドメインに紐づくスペース一覧を取得します。今回のドメインではスペースが存在していませんでした。

aws sagemaker list-spaces \
    --domain-id ${domainId}
{
    "Spaces": []
}

SageMaker のスペースを使用すると、メンバー間でリアルタイムなコラボレーションが可能になります。

ドメインの削除

最後にドメインを削除します。

$ aws sagemaker delete-domain \
    --domain-id ${domainId} \
    --retention-policy HomeEfsFileSystem=Delete

コマンド実行後にコンソールでドメインを確認すると、削除中ステータスとなっています。

少し待つと削除が完了し、ドメインが表示されなくなりました。

おわりに

Amazon SageMaker Studio アプリケーションのセキュリティアップデートの通知が来たので、SageMaker ドメインを削除する対応をしてみました。

同様の通知が来た人で、私と同じように不要なリソースが残っている場合は、参考にしてみてください。

参考

以上