概要
前回「特定の IAM ユーザにだけ SageMaker Studio のユーザを使えるようにする」からの続きで SageMaker Studio を使う IAM ユーザの権限についてです。
AmazonSageMakerFullAccess 権限があると SageMaker Studio の他のユーザの App を消すことができます。App は Jupyter ノートブックの Docker image のようなものなので、再度ノートブックを起動すれば App は戻ってきますが、途中の実行結果などメモリにあった情報は消えてしまいます。App が多すぎて消したい場合に、誤って他人の App を消してしまわないよう、DeleteApp を自ユーザの App に対してのみ実行できるようにします。
削除画面(deleteと入力して Deleteボタンポチーであっさり消えます)
DeletApp で削除する App をどのように指定するのか確認
SageMaker の以下の Doc をみると DeleteApp で指定できる内容が記載されています。
Amazon SageMaker で定義されるアクションの表から DeleteApp
を探します。App*というのを指定できるみたいですね。このリンクをクリックすると同ページの App の説明に飛べます。
飛んだ先はこちらですね。このように App の ARN を指定して削除するようです。
今回だと特定のStudio のユーザ(前回の記事では restricted-user)のみを消すようにしますので、東京リージョン、アカウントID 123456789012、ドメインが d-XXXXXXxxxxxx, ユーザープロファイルが restricted-user なら以下のようになります。ワイルドカードを入れて、restricted-user
以下のAppを指定します。
arn:aws:sagemaker:ap-northeast-1:123456789012:app/d-XXXXXXxxxxxx/restricted-user/*
IAMユーザにポリシーを追加
前回「特定の IAM ユーザにだけ SageMaker Studio のユーザを使えるようにする」と同様に IAM ユーザの画面からインラインポリシーを追加します。追加するのは restricted-user
以外のAppに対する DeleteApp を Deny するポリシーです。表現はややこしいですがポリシーは以下のとおりです。上記に従って、リージョンなどはいれてくださいね。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "sagemaker:DeleteApp",
"NotResource": "arn:aws:sagemaker:(region):(account_id):app/(domain_id)/(user_mame)/*"
}
]
}
こんな感じで追加しましょう。
試してみましょう
delete を押すと権限でエラーが出ました。DeleteApp が許可されていないことがわかりましたね。
さいごに
コンソールでアクセスさせる場合には、AmazonSageMakerFullAccess にしておいて、他人のユーザを使わせないのと、他人のAppを消させないようにしておけばいいかなと思います。ドメインの削除、ユーザの新規作成・削除はAmazonSageMakerFullAccessではできないので、指定したユーザのみを使用するだけにできると思います。