安全和权限 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

安全和权限

当您从 Athena 或 查询数据时Amazon Redshift,查询的数据集会自动存储在您使用 Studio 的 AWS 区域的默认 SageMaker S3 存储桶中。此外,当您从 导出 Jupyter Notebook Amazon SageMaker Data Wrangler 并执行它时,您的数据流或 .flow 文件将保存到前缀 data_wrangler_flows 下的同一默认 存储桶中。

对于高级别安全需求,您可以配置存储桶策略,限制有权访问此默认 SageMaker S3 存储桶的 AWS 角色。使用以下部分将此类型的策略添加到 S3 存储桶。要按照此页面上的说明操作,请使用 AWS Command Line Interface (AWS CLI)。要了解如何操作,请参阅 中的配置 AWS IAM 用户指南CLI。

此外,您需要向使用 IAM 权限的每个Data Wrangler角色授予访问所需资源的权限。如果您不需要用于访问 IAM 的角色的精细权限Data Wrangler,则可以将IAM托管策略 AmazonSageMakerFullAccess 添加到用于创建 Studio 用户的 IAM 角色。此策略授予您使用 的完全权限Data Wrangler。如果您需要更精细的权限,请参阅部分授予 IAM 角色使用 的权限 Data Wrangler

添加存储桶策略以限制对导入到 的数据集的访问 Data Wrangler

您可以使用 存储桶策略向包含您的Data Wrangler资源的 S3 Amazon S3 存储桶添加策略。Data Wrangler 上传到您使用 Studio 的 AWS 区域中的默认 SageMaker S3 存储桶的资源包括:

  • 查询Amazon Redshift的结果。它们存储在 redshift/ 前缀下。

  • 查询Athena的结果。它们存储在 athena/ 前缀下。

  • 执行导出的 Jupyter Notebook Amazon S3 时,将Data Wrangler生成上传到 的 .flow 文件。它们存储在 data_wrangler_flows/ 前缀下。

使用以下过程创建 S3 存储桶策略,您可以添加该策略以限制IAM角色对该存储桶的访问。要了解如何将策略添加到 S3 存储桶,请参阅如何添加 S3 存储桶策略?。

要在存储 Data Wrangler 资源的 S3 存储桶上设置存储桶策略,请执行以下操作:

  1. 配置希望能够访问 的一个或多个 IAM 角色Data Wrangler。

  2. 打开命令提示符或 shell。对于您创建的每个角色,替换 role-name 使用角色名称运行以下命令:

    $ aws iam get-role --role-name role-name

    在响应中,您将看到一个以 开头的RoleId字符串AROA。复制此字符串。

  3. 将以下策略添加到您使用 的 AWS 区域中SageMaker的默认 存储桶。 Data WranglerReplace region 与存储桶所在的 AWS 区域,以及 account-id 替换为您的 AWS 账户 ID。替换以 userId开头的 AROAEXAMPLEID 替换为您要向其授予使用 的权限的 AWS 角色的 IDsData Wrangler。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::sagemaker-region-account-id/data_wrangler_flows/", "arn:aws:s3:::sagemaker-region-account-id/data_wrangler_flows/*", "arn:aws:s3:::sagemaker-region-account-id/athena", "arn:aws:s3:::sagemaker-region-account-id/athena/*", "arn:aws:s3:::sagemaker-region-account-id/redshift", "arn:aws:s3:::sagemaker-region-account-id/redshift/*" ], "Condition": { "StringNotLike": { "aws:userId": [ "AROAEXAMPLEID_1:*", "AROAEXAMPLEID_2:*" ] } } } ] }

授予 IAM 角色使用 的权限 Data Wrangler

您可以为 IAM 角色授予权限,以便Data Wrangler将其与常规 IAM 托管策略 AmazonSageMakerFullAccess 结合使用。这是一个常规策略,其中包含使用所有 服务所需的权限SageMaker。此策略向 IAM 角色授予对 的完全访问权限Data Wrangler。在使用 AmazonSageMakerFullAccess 授予对 的访问权限时,您应注意以下事项Data Wrangler:

  • 如果您从 导入数据Amazon Redshift,则数据库用户名必须具有前缀 sagemaker_access

  • 此托管策略仅授予访问名称中包含下列项之一的 存储桶的权限SageMaker:、Sagemakersagemakeraws-glue。如果要使用 从名称中没有这些短语的 S3 存储桶Data Wrangler导入,请参阅此页面上的最后一个部分,了解如何向 IAM 实体授予访问 S3 存储桶的权限。

如果您有高安全性需求,则可以将本节中的策略附加到 IAM 实体以授予使用 所需的权限Data Wrangler。

如果您在 中具有数据集Amazon Redshift或 Athena IAM 角色需要从 导入Data Wrangler,则必须向该实体添加策略才能访问这些资源。以下策略是限制性最强的策略,可用于向 IAM 角色授予从 Amazon Redshift 和 导入数据的权限Athena。

要了解如何将自定义策略附加到 IAM 角色,请参阅 中的管理 IAM 策略IAM 用户指南。

授予对 Athena 数据集导入的访问权限的策略示例

以下策略假定IAM该角色有权访问底层 S3 存储桶,其中数据存储通过单独的IAM策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:*:*:table/*/sagemaker_tmp_*", "arn:aws:glue:*:*:table/sagemaker_featurestore/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:*:*:table/*/sagemaker_tmp_*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetTable", "glue:GetTables" ], "Resource": [ "arn:aws:glue:*:*:table/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:database/sagemaker_processing", "arn:aws:glue:*:*:database/default", "arn:aws:glue:*:*:database/sagemaker_data_wrangler" ] } ] }

授予数据集Amazon Redshift导入访问权限的策略示例

以下策略授予权限以Amazon Redshift使用名称Data Wrangler中具有 前缀的数据库用户设置到 的 sagemaker_access 连接。要授予使用其他数据库用户进行连接的权限,请在以下策略"Resources"中的 下添加其他条目。以下策略假定该IAM角色有权访问底层 S3 存储桶,其中数据存储在单独的IAM策略(如果适用)中。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:DescribeStatement", "redshift-data:CancelStatement", "redshift-data:GetStatementResult", "redshift-data:ListSchemas", "redshift-data:ListTables" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:*:*:dbuser:*/sagemaker_access*", "arn:aws:redshift:*:*:dbname:*" ] } ] }

用于授予对 S3 存储桶的访问权限的策略

如果您的数据集存储在 中Amazon S3,您可以使用类似于以下内容的策略向 IAM 角色授予访问此存储桶的权限。此示例授予对名为 的存储桶的编程读写访问权限 test:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::test"] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::test/*"] } ] }

要从 Athena 和 导入数据Amazon Redshift,您必须授予 IAM 角色权限,以访问 AWS 区域中的默认 Amazon S3 存储桶中使用的以下前缀Data Wrangler:athena/redshift/。如果 AWS 区域中尚不存在默认Amazon S3存储桶,您还必须向IAM角色授予在此区域中创建存储桶的权限。

此外,如果您希望IAM角色能够使用 SageMaker Feature SageMaker Store、Pipeline 和Data Wrangler作业导出选项,则必须授予对此存储桶data_wrangler_flows/中前缀 的访问权限。

Data Wrangler 使用 athena/redshift/ 前缀来存储预览文件和导入的数据集。要了解更多信息,请参阅“导入的数据存储”。

Data Wrangler 当您运行从 导出的 Jupyter Notebook 时, 使用 data_wrangler_flows/ 前缀来存储 .flow 文件Data Wrangler。要了解更多信息,请参阅“Export”。

使用类似于以下内容的策略授予上述权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::sagemaker-region-account-id/data_wrangler_flows/", "arn:aws:s3:::sagemaker-region-account-id/data_wrangler_flows/*", "arn:aws:s3:::sagemaker-region-account-id/athena", "arn:aws:s3:::sagemaker-region-account-id/athena/*", "arn:aws:s3:::sagemaker-region-account-id/redshift", "arn:aws:s3:::sagemaker-region-account-id/redshift/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:ListBucket" ], "Resource": "arn:aws:s3:::sagemaker-region-account-id" }, { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "*" } ] }

授予使用 SageMaker Studio 的访问权限的策略示例

使用类似于以下内容的策略创建可用于设置 Studio 实例的IAM执行角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:DescribeUserProfile", "sagemaker:ListUserProfiles", "sagemaker:*App", "sagemaker:ListApps" ], "Resource": "*" } ] }