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

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

安全性和访问控制

Amazon SageMaker 功能商店允许您创建两种类型的商店:在线商店或离线商店。在线商店用于低延迟实时推断用例,而离线商店则用于培训和批量推断使用案例。创建联机或离线使用的要素组时,可以提供Amazon Key Management Service客户托管密钥来加密您的所有静态数据。如果您没有提供Amazon KMS密钥,那么我们确保您的数据在服务器端使用Amazon拥有的Amazon KMS键或键Amazon托管Amazon KMS键。创建要素组时,您可以选择存储类型,也可以选择提供Amazon KMS密钥来加密数据,那么您可以调用各种 API 进行数据管理,例如PutRecordGetRecordDeleteRecord.

功能存储允许您在要素组级别向个人授予或拒绝访问权限,并启用对要素存储的跨账户访问权限。例如,您可以设置开发人员帐户以访问脱机商店,进行模型培训和探索,这些模型没有对生产帐户具有写入权限。您可以设置生产帐户以访问在线和离线商店。功能存储使用唯一客户Amazon KMS密钥,用于脱机和在线商店静态数据加密。访问控制通过 API 和Amazon KMS密钥访问权限。您还可以创建要素组级访问控制。

有关客户托管密钥的更多信息,请参阅客户托管密钥. 有关 Amazon KMS 的更多信息,请参阅 Amazon KMS

使用Amazon KMSAmazon SageMaker 功能商店的权限

静态加密可保护下的功能存储Amazon KMS客户托管密钥。默认情况下,它使用Amazon拥有的客户管理密钥和Amazon脱机托管客户托管密钥. 要素存储支持一个选项,以便在客户托管密钥. 您可以在创建在线或离线商店时为 “功能存储” 选择客户托管密钥,并且每个商店的密钥可能会有所不同。

要素存储仅支持对称客户托管密钥. 您无法使用非对称客户托管密钥对您的在线或离线商店中的数据进行加密。要获取确定客户托管密钥是对称还是非对称的帮助,请参阅识别对称客户托管密钥和非对称客户托管密钥.

使用客户托管密钥时,您可以利用以下功能:

您无需支付月费Amazon拥有的客户托管密钥。客户托管密钥将产生费用对于每个 API 调用,Amazon Key Management Service配额适用于每个客户管理的密钥。

授权在您的在线商店使用客户托管密钥

如果您使用的是客户托管密钥保护您的在线商店,则该客户托管密钥的策略必须向功能存储授予权限,才能代表您使用该客户托管密钥。您可以完全控制客户托管密钥的策略和授权。

要素存储无需额外授权即可使用默认的Amazon拥有的客户托管密钥来保护您的在线或离线商店Amazonaccount.

客户托管密钥策略

当您选择客户托管密钥为保护您的在线商店,功能商店必须具有代表做出选择的委托人使用客户托管密钥的权限。该委托人(用户或角色)必须具有功能存储所需的客户托管密钥权限。您可以在密钥策略,一个IAM 策略,或授予. 功能存储至少需要具备以下权限:

  • “KMS: 加密”、“KMS: 解密”、“KMS: 描述键”、“KMS: 创建授权”、“KMS: 停用”、“KMS: 重新加密自”、“KMS: 重新加密到”、“KMS: 生成数据密钥”、“KMS: 列表别名”、“KMS: KMS” 撤销资助”

例如,以下示例密钥策略仅提供所需的权限。该策略具有以下效果:

  • 允许功能存储在加密操作中使用客户托管密钥,并创建授权,但仅当它代表帐户中具备使用您的功能存储权限的委托人行事时才可如此。如果策略语句中指定的委托人无权使用您的要素存储,调用将失败,即使调用来自要素存储服务也是如此。

  • 这些区域有:kms:ViaService条件键仅当代表策略语句中所列委托人发出请求时,才允许权限。这些委托人不能直接调用这些操作。的值kms:ViaService应为sagemaker.*.amazonaws.com.

    注意

    这些区域有:kms:ViaService条件密钥只能用于在线商店客户管理Amazon KMS键,并且不能用于脱机存储。如果您将此特殊条件添加到您的客户管理密钥中,并使用相同的Amazon KMS键,那么它将失败CreateFeatureGroupAPI 操作。

  • 赋予客户托管密钥管理员对客户托管密钥的只读访问权限,以及撤销授权的权限,包括功能存储用于保护数据的授权。

  • 向要素存储提供对客户托管密钥的只读访问权限。在此情况下,要素存储可以直接调用这些操作。而不必代表账户委托人行事。

在使用示例密钥策略之前,请将示例委托人替换为 Amazon 账户中的实际委托人。

{"Id": "key-policy-feature-store", "Version":"2012-10-17", "Statement": [ {"Sid" : "Allow access through Amazon SageMaker Feature Store for all principals in the account that are authorized to use Amazon SageMaker Feature Store", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/featurestore-user"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:ListAliases", "kms:ListGrants" ], "Resource": "*", "Condition": {"StringLike": {"kms:ViaService" : "sagemaker.*.amazonaws.com" } } }, {"Sid": "Allow administrators to view the customer managed key and revoke grants", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/featurestore-admin" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" }, {"Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789:root" }, "Action": "kms:*", "Resource": "*" } ] }

使用授权来授权要素存储

除密钥策略之外,功能存储还使用授权来对客户托管密钥设置权限。要查看有关您的账户中客户托管密钥的授权,请使用ListGrantsoperation. 要素存储不需要授予或任何其他权限即可使用Amazon拥有的客户托管密钥来保护您的在线商店。

功能存储在执行后台系统维护和连续数据保护任务时使用授予权限。

每个授权特定于一个在线商店。如果帐户包含多个使用同一客户管理密钥加密的商店,则每个FeatureGroup使用相同的客户管理密钥。

密钥策略还可以允许账户撤销授予在客户托管密钥上。但是,如果您对某个活动加密在线商店撤销授权,则功能存储将无法保护和维护该应用商店。

监视要素存储与Amazon KMS

如果您使用的是客户托管密钥来保护您的在线或离线商店,您可以使用Amazon CloudTrail日志来跟踪要素存储发送到Amazon KMS代表您。

访问您的在线商店中的数据

这些区域有:调用者(IAM 用户或 IAM 角色)所有数据通道操作(放置,获取,删除记录)必须对客户管理的密钥具有以下权限:

"kms:Decrypt"

授权您的离线商店使用客户托管密钥

这些区域有:roleArn,作为参数传递给createFeatureGroup必须对脱机 KmsKeyId 具有以下权限:

"kms:GenerateDataKey"
注意

在线商店的密钥策略也适用于脱机商店,仅当kms:ViaService条件未指定。

重要

您可以指定一个Amazon KMS加密密钥,以便在创建要素组时对用于离线要 feature store 的 Amazon S3 位置进行加密。如果Amazon KMS未指定加密密钥,默认情况下我们使用Amazon KMS键。通过定义您的存储桶级别密钥对于 SSE,您可以减少Amazon KMS请求成本高达 99%。