在 SageMaker notebook 实例中打开 jupyter 是否需要 sagemaker:CreatePresignedDomainUrl?

Is sagemaker:CreatePresignedDomainUrl required to open jupyter in SageMaker notebook instance?

我试图避免使用托管策略 AmazonSageMakerReadOnlyAmazonSageMakerFullAccess 因为我只希望用户能够 start/stop 他们自己的笔记本实例并打开 jupyter在他们的例子中。

到目前为止,用户角色具有以下权限

...
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "sagemaker:StopNotebookInstance",
                "sagemaker:StartNotebookInstance",
                "sagemaker:CreatePresignedNotebookInstanceUrl"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/OwnerRole": "${aws:userid}"
                }
            }
        },
  

该策略 没有 sagemaker:CreatePresignedDomainUrl 但它有 sagemaker:CreatePresignedNotebookInstanceUrl,当具有此策略的用户在 AWS 中单击 Open Jupyter Sagemaker 控制台,它会打开 url https://xxxxxx.notebook.eu-north-1.sagemaker.aws/auth?authToken=xxxxx 但 url 将 return:

403 Forbidden. Access to xxxxxx.notebook.eu-north-1.sagemaker.aws was denied. You don't have authorisation to view this page. HTTP ERROR 403

我为资源 * 添加 sagemaker:CreatePresignedDomainUrl 后,403 错误 消失了,用户可以打开 jupyter notebook。

我的问题是为什么需要我应该放什么资源而不是*,文档提到arn:aws:sagemaker:regionXXX:account-idXXX:app/domain-id/userProfileNameXXXX/* 但我没有任何域或用户配置文件。

CreatePresignedDomainUrl 语句允许角色启动 SageMaker Studio 应用程序(因此 domain-id/user-profile ARN)。打开 SageMaker 笔记本实例不需要预签名域 url 权限。

您需要确保使用 OwnerRole 键标记笔记本,值 = userid(不是用户名)。此外,您需要使用 sagemaker:ResourceTag(而不是 aws:ResourceTag)。

有关操作和条件键的完整列表,请参阅 service authorization page