安全性和访问控制 - 亚马逊 SageMaker AI

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

安全性和访问控制

Ama SageMaker zon Feature Store 允许您创建两种类型的商店:在线商店或线下商店。在线存储用于低延迟实时推理使用案例,离线存储用于训练和批量推理使用案例。在创建供在线或离线使用的功能组时,您可以提供 AWS Key Management Service 客户托管密钥来加密所有静态数据。如果您未提供 AWS KMS 密钥,我们将确保您的数据在服务器端使用 AWS 自有 AWS KMS 密钥或 AWS 托管 AWS KMS 密钥进行加密。创建功能组时,您可以选择存储类型并选择提供用于加密数据的 AWS KMS 密钥,然后可以调用各种 APIs 密钥进行数据管理PutRecord,例如、GetRecordDeleteRecord

Feature Store 允许您在特征组级别授予或拒绝个人访问权限,并允许跨账户访问 Feature Store。例如,您可以将开发人员账户设置为访问离线存储以进行模型训练和探索,而这些账户对生产账户没有写入权限。您可以设置生产账户以访问在线和离线存储。Feature Store 使用唯一的客户 AWS KMS 密钥进行离线和在线商店静态数据加密。通过 API 和 AWS KMS 密钥访问权限启用访问控制。您还可以创建特征组级别的访问控制。

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

使用 Amazon Feature St SageMaker ore 的 AWS KMS 权限

静态加密可保护 AWS KMS 客户托管密钥下的功能库。默认情况下,它使用客户AWS 自有的托管密钥 OnlineStore和 AWS 托管的客户托管密钥 OfflineStore。Feature Store 支持使用客户托管密钥对在线或离线存储进行加密的选项。创建在线或离线存储时,您可以为 Feature Store 选择客户托管密钥,并且每个存储的密钥可以不同。

Feature Store 仅支持对称客户托管密钥。不能使用非对称客户托管密钥来加密在线或离线存储中的数据。要获取确定客户托管密钥是对称还是非对称的帮助,请参阅识别对称和非对称客户托管密钥

使用客户托管密钥时,可以利用以下特征:

您无需为 AWS 拥有的客户托管密钥支付月费。客户托管密钥将为每个 API 调用收费,并且 AWS Key Management Service 配额适用于每个客户托管的密钥。

授权对在线存储使用客户托管密钥

如果您使用客户托管密钥来保护在线存储,则该客户托管密钥的策略必须赋予 Feature Store 代表您使用该密钥的权限。您可以全面控制客户托管密钥的策略和授权。

Feature Store 无需额外授权即可使用默认AWS 拥有的 KMS 密钥来保护您 AWS 账户中的在线或离线商店。

客户托管密钥策略

如果选择客户托管密钥来保护在线存储,则 Feature Store 必须有权代表做出选择的主体使用客户托管密钥。该主体(用户或角色)对于客户托管密钥必须具有 Feature Store 要求的权限。您可以在密钥策略IAM 策略授权中提供这些权限。Feature Store 要求对于客户托管密钥至少具有以下权限:

  • “kms: encrypt”、“kms: decrypt”、“kms:”、DescribeKey “kms:”、“kms:”、CreateGrant “kms:”、RetireGrant “kms:”、ReEncryptFrom “kms:”、“kms:”、ReEncryptTo “kms:”、GenerateDataKey “kms:”、ListAliases “kms:” ListGrants RevokeGrant

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

  • 允许 Feature Store 在加密操作中使用客户托管密钥并创建授权,但仅当它代表账户中具有 Feature Store 使用权限的主体行事时才可如此。如果策略语句中指定的主体无权使用您的 Feature Store,即使调用来自 Feature Store 服务也会失败。

  • 仅当请求来自 FeatureStore 策略声明中列出的委托人时,k ms: ViaService 条件密钥才允许权限。这些主体不能直接调用这些操作。kms:ViaService 值应该为 sagemaker.*.amazonaws.com

    注意

    kms:ViaService条件密钥只能用于在线商店客户托管 AWS KMS 密钥,不能用于线下商店。如果您将此特殊条件添加到您的客户托管密钥中,并且对线上和线下商店使用相同的 AWS KMS 密钥,那么 CreateFeatureGroup API 操作将失败。

  • 授予客户托管密钥管理员对客户托管密钥的只读访问权限和撤销授权的权限,包括 Feature Store 用来保护您数据的授权。

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

{"Id": "key-policy-feature-store", "Version":"2012-10-17", "Statement": [ {"Sid" : "Allow access through Amazon SageMaker AI Feature Store for all principals in the account that are authorized to use Amazon SageMaker AI 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": "*" } ] }

使用授权为 Feature Store 授权

除密钥策略之外,Feature Store 还使用授权来设置对于客户托管密钥的权限。要查看有关您账户中的客户托管密钥的授权,请使用 ListGrants 操作。Feature Store 无需授权或任何其他权限,即可使用 AWS 拥有的客户托管密钥来保护您的在线存储。

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

每项授权都特定于在线存储。如果账户包含使用同一客户托管密钥加密的多个存储,则每个使用相同客户托管密钥的 FeatureGroup 都将获得唯一授权。

该密钥策略还可以允许账户撤销对客户托管密钥的授权。但是,如果您撤销对某个活动加密在线存储的授权,Feature Store 将无法保护和维护该存储。

监控功能存储与的互动 AWS KMS

如果您使用客户托管密钥来保护您的在线或离线商店,则可以使用 AWS CloudTrail 日志来跟踪 Feature Store AWS KMS 代表您发送的请求。

访问在线存储中的数据

所有 DataPlane 操作(Put、Get、)的调用者(用户或角色 DeleteRecord)必须对客户托管密钥具有以下权限:

"kms:Decrypt"

授权将客户托管密钥用于您的离线存储

作为参数传递给的 roLearn createFeatureGroup 必须具有以下权限: OfflineStore KmsKeyId

"kms:GenerateDataKey"
注意

仅当未指定 kms:ViaService 条件时,在线存储的密钥策略也适用于离线存储。

重要

创建功能组时,您可以指定 AWS KMS 加密密钥来加密用于离线功能存储的 Amazon S3 位置。如果未指定 AWS KMS 加密密钥,则默认情况下,我们会使用密 AWS KMS 钥加密所有静态数据。通过为 SSE 定义存储桶级密钥,您可以将 AWS KMS 请求成本降低多达 99%。