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

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

安全和权限

当您查询来自 Athena 或 Amazon Redshift 的数据时,查询的数据集将自动存储在默认值中 SageMaker 用于Amazon您正在使用 Studio 的区域。此外,当您从亚马逊导出 Jupyter 笔记本时 SageMaker Data Wrangler 然后运行它,您的数据流或 .flow 文件将保存到前缀下的同一默认存储桶data_wrangler_flow.

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

此外,您需要授予每个使用 Data Wrangler 权限的 IAM 角色才能访问所需资源。如果您不需要用于访问 Data Wrangler 的 IAM 角色的粒度权限,则可以添加 IAM 托管策略,AmazonSageMakerFullAccess,转换为用于创建 Studio 用户的 IAM 角色。本政策授予您使用 Data Wrangler 的完全权限。如果您需要更精细的权限,请参阅以下部分:授予 IAM 角色使用 Data Wrangler 的权限.

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

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

  • 已查询 Amazon Redshift 结果。这些存储在redshift/prefix.

  • 已查询 Athena 的结果。这些存储在athena/prefix.

  • 运行导出的 Jupyter 笔记本数据 Wrangler 生成时上传到 Amazon S3 的 .flow 文件。这些存储在data_wrangler_flow/prefix.

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

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

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

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

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

    在回复中,你会看到RoleId以开头的字符串AROA. 复制此字符串。

  3. 将以下策略添加到 SageMaker 中的默认存储桶Amazon您正在使用数据 Wrangler 的区域。Replace领域使用Amazon以及存储桶所在的区域account-id和你的Amazon账户 ID。ReplaceuserIds 开始于AROA例PLEID用一个的 IDAmazon要授予使用数据 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 服务。此策略授予对数据 Wrangler 的 IAM 角色的完全访问权限。在使用时,您应了解以下事项AmazonSageMakerFullAccess要授予对数据 Wrangler 的访问权限:

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

  • 此托管策略仅授予访问名称中具有以下内容之一的存储桶的权限:SageMakerSageMakersagemaker,或者aws-glue. 如果想使用 Data Wrangler 从 S3 存储桶中导入名称中没有这些短语,请参阅本页的最后一节了解如何向 IAM 实体授予访问 S3 存储桶的权限。

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

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

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

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

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

{ "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 数据集导入权限的策略示例

以下策略授予使用具有前缀的数据库用户设置与 Data Wrangler 的 Amazon Redshift 连接的权限。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 角色访问此存储桶的权限。此示例授予对名为的存储桶的编程读写访问权限测试.

{ "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 角色权限,才能访问Amazon正在使用的区域数据 Wrangler:athena/redshift/. 如果在中尚不存在默认 Amazon S3 存储桶Amazon区域,您还必须向 IAM 角色授予在此区域创建存储桶的权限。

此外,如果您希望 IAM 角色能够使用亚马逊 SageMaker 特色商店, SageMaker 管道和 Data Wrangler 作业导出选项,您必须授予对前缀的访问权限data_wrangler_flows/在此存储桶中。

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

数据 Wrangler 使用data_wrangler_flows/在运行从 Data Wrangler 导出的 Jupyter 笔记本时存储 .flow 文件的前缀。要了解更多信息,请参阅 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": "*" } ] }

您还可以从另一个存储桶访问 Amazon S3 存储桶中的数据Amazon通过指定 Amazon S3 存储桶 URI 来执行账户。为此,授予对另一账户中 Amazon S3 存储桶的访问权限的 IAM 策略应使用类似于以下示例的策略,其中BucketFolder是用户存储桶中的特定目录UserBucket. 应将此策略添加到向另一个用户授予其存储桶访问权限的用户中。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::UserBucket/BucketFolder/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::UserBucket", "Condition": { "StringLike": { "s3:prefix": [ "BucketFolder/*" ] } } } ] }

访问存储桶的用户(而不是存储桶拥有者)必须向其用户添加类似以下示例的策略。请注意,AccountXTestUser下面分别指的是存储桶拥有者及其用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountX:user/TestUser" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::UserBucket/BucketFolder/*" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountX:user/TestUser" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::UserBucket" ] } ] }

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

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

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

雪花和数据牧马人

所有的权限Amazon资源通过附加到 Studio 实例的 IAM 角色进行管理。Snowflake 管理员管理 Snowflake 特定的权限,因为他们可以向每个 Snowflake 用户授予精细的权限和权限。这包括数据库、架构、仓库和存储集成对象。您必须确保在 Data Wrangler 之外设置了正确的权限。

请注意,雪花COPY INTO Amazon S3命令默认情况下,通过公共互联网将数据从 Snowflake 移动到 Amazon S3,但使用 SSL 保护传输中的数据。Amazon S3 中的静态数据使用默认值使用 SSE-KMS 进行加密Amazon KMS key.

关于 Snowflake 凭据存储,Data Wrangler 不存储客户凭据。作为最佳实践安全计划的一部分,Data Wrangler 使用 Secret Manager 将证书存储在密钥中,并轮换密钥。Snowflake 或 Studio 管理员需要确保向数据科学家的 Studio 执行角色授予执行权限GetSecretValue在存储凭据的秘密上。如果已附加到 Studio 执行角色,则AmazonSageMakerFullAccess策略具有读取 Data Wrangler 创建的密钥以及按照上述说明中的命名和标记约定创建的密钥的必要权限。必须单独授予不遵守约定的机密访问权限。我们建议使用 Secrets Manager 来防止通过不安全的渠道共享凭据;但请注意,登录用户可以通过在 Studio 中启动终端或 Python 笔记本电脑然后从 Secret Manager API 调用 API 调用来检索纯文本密码。

使用数据加密Amazon KMS

在 Data Wrangler 中,您可以解密加密的文件并将其添加到 Data Wrangler 流程中。您也可以使用默认值加密变换的输出Amazon KMS钥匙或者你提供的。

如果文件具有以下内容,则可以导入文件:

  • 服务器端加密

  • SSE-KMS 作为加密类型

要解密文件并导入数据 Wrangler 流程,您必须添加 SageMaker 作为关键用户使用的 Studio 用户。

以下屏幕截图显示作为关键用户添加的 Studio 用户角色。请参阅IAM 角色以访问左侧面板下的用户以进行此更改。

Amazon S3 客户管理的 Data Wrangler 导入数据存储的密钥设置

默认情况下,Data Wrangler 使用具有以下命名约定的 Amazon S3 存储桶:sagemaker-region-account number. 例如,如果您的账号是111122223333而且您在 us-east-1 中使用 Studio 时,导入的数据集将按照以下命名约定存储:sagemaker-us-east-1-111122223333.

以下说明说明如何为默认 Amazon S3 存储桶设置客户托管密钥。

  1. 要启用服务器端加密并为默认 S3 存储桶设置客户托管密钥,请参阅使用 KMS 加密.

  2. 在执行步骤 1 之后,导航到Amazon KMS在您的Amazon Web Services Management Console. 找到您在上一步的步骤 1 中选择的客户管理密钥,然后将 Studio 角色添加为关键用户。为此,请遵循中的说明允许密钥用户使用客户托管密钥.

加密您导出的数据

您可以使用以下方法之一加密导出的数据:

  • 指定您的 Amazon S3 存储桶具有对象使用 SSE-KMS 加密。

  • 指定Amazon KMS密钥用于加密您从 Data Wrangler 导出的数据。

在存储库的导出数据页面中,指定一个值Amazon KMS或 ARN 密钥.

有关使用的更多信息Amazon KMS钥匙,请参阅通过服务器端加密保护数据Amazon KMS存储在中的密钥AmazonAmazon Key Management Service(SSE-KMS).