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

安全性和访问控制

借助 Amazon SageMaker Feature Store 可以创建两种类型的存储:在线存储或离线存储。在线存储用于低延迟实时推理使用案例,离线存储用于训练和批量推理使用案例。创建供在线或离线使用的特征组时,您可以提供 Amazon Key Management Service 客户托管密钥来加密所有静态数据。如果您未提供 Amazon KMS 密钥,我们将确保在服务器端使用 Amazon 拥有的 Amazon KMS 密钥或 Amazon 托管的 Amazon KMS 密钥对您的数据进行加密。创建特征组时,您可以选择存储类型,并可选地提供用于加密数据的 Amazon KMS 密钥,然后可以调用各种 API 进行数据管理,例如 PutRecordGetRecordDeleteRecord

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

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

对 Amazon SageMaker Feature Store 使用 Amazon KMS 权限

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

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

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

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

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

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

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

客户托管密钥策略

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

  • “kms:Encrypt”、“kms:Decrypt”、“kms:DescribeKey”、“kms:CreateGrant”、“kms:RetireGrant”、“kms:ReEncryptFrom”、“kms:ReEncryptTo”、“kms:GenerateDataKey”、“kms:ListAliases”、“kms:ListGrants”、“kms:RevokeGrant”

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

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

  • 仅当 Feature Store 代表策略语句中所列主体发出请求时,kms:ViaService 条件键才会授予权限。这些主体不能直接调用这些操作。kms:ViaService 值应该为 sagemaker.*.amazonaws.com

    注意

    kms:ViaService 条件键只能用于在线存储客户托管 Amazon KMS 密钥,不能用于离线存储。如果将此特殊条件添加到您的客户托管密钥,并且对在线和离线存储使用相同的 Amazon KMS 密钥,则 CreateFeatureGroup API 操作将失败。

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

在使用示例密钥策略之前,请将示例主体替换为 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": "*" } ] }

使用授权为 Feature Store 授权

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

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

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

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

监控 Feature Store 与 Amazon KMS 的交互

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

访问在线存储中的数据

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

"kms:Decrypt"

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

作为参数传递给 createFeatureGrouproleArn 必须对 OfflineStore KmsKeyId 具有以下权限:

"kms:GenerateDataKey"
注意

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

重要

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