

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

# 安全性和访问控制
<a name="feature-store-security"></a>

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

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

 有关客户托管密钥的更多信息，请参阅[客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#master_keys)。有关的更多信息 Amazon KMS，请参阅[Amazon KMS](https://www.amazonaws.cn/kms/)。

## 使用 Amazon Feature St SageMaker ore 的 Amazon KMS 权限
<a name="feature-store-kms-cmk-permissions"></a>

 静态加密可保护 Amazon KMS 客户托管密钥下的功能库。默认情况下，它使用[客户Amazon 自有的托管密钥 OnlineStore和 Amazon 托管的客户托管密钥 OfflineStore](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#aws-owned-cmk)。Feature Store 支持使用[客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)对在线或离线存储进行加密的选项。创建在线或离线存储时，您可以为 Feature Store 选择客户托管密钥，并且每个存储的密钥可以不同。

 Feature Store 仅支持[对称客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/symm-asymm-concepts.html#symmetric-cmks)。不能使用[非对称客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/symm-asymm-concepts.html#asymmetric-cmks)来加密在线或离线存储中的数据。要获取确定客户托管密钥是对称还是非对称的帮助，请参阅[识别对称和非对称客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/find-symm-asymm.html)。

使用客户托管密钥时，可以利用以下特征：
+  您可以创建和管理客户托管密钥，包括设置[密钥策略](https://docs.amazonaws.cn/kms/latest/developerguide/key-policies.html)、[IAM 策略](https://docs.amazonaws.cn/kms/latest/developerguide/iam-policies.html)和[授权](https://docs.amazonaws.cn/kms/latest/developerguide/grants.html)来控制对客户托管密钥的访问。您可以[启用和禁用](https://docs.amazonaws.cn/kms/latest/developerguide/enabling-keys.html)客户托管密钥、启用和禁用[自动密钥轮换](https://docs.amazonaws.cn/kms/latest/developerguide/rotate-keys.html)，以及当客户托管密钥不再使用时[删除客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/deleting-keys.html)。
+  您可以使用具有[导入的密钥材料](https://docs.amazonaws.cn/kms/latest/developerguide/importing-keys.html)的客户托管密钥，或者您拥有和管理的[自定义密钥存储](https://docs.amazonaws.cn/kms/latest/developerguide/custom-key-store-overview.html)中的客户托管密钥。
+  [您可以通过检查日志 Amazon KMS 中的Amazon CloudTrail API 调用来审核在线或离线商店的加密和解密情况。](https://docs.amazonaws.cn/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)

您无需为 Amazon 拥有的客户托管密钥支付月费。客户托管密钥将为每个 API 调用[收费](https://www.amazonaws.cn/kms/pricing/)，并且 Amazon Key Management Service 配额适用于每个客户托管的密钥。

## 授权对在线存储使用客户托管密钥
<a name="feature-store-authorizing-cmk-online-store"></a>

 如果您使用[客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)来保护在线存储，则该客户托管密钥的策略必须赋予 Feature Store 代表您使用该密钥的权限。您可以全面控制客户托管密钥的策略和授权。

 Feature Store 无需额外授权即可使用默认[Amazon 拥有的 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#master_keys)来保护您 Amazon 账户中的在线或离线商店。

### 客户托管密钥策略
<a name="feature-store-customer-managed-cmk-policy"></a>

 如果选择[客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)来保护在线存储，则 Feature Store 必须有权代表做出选择的主体使用客户托管密钥。该主体（用户或角色）对于客户托管密钥必须具有 Feature Store 要求的权限。您可以在[密钥策略](https://docs.amazonaws.cn/kms/latest/developerguide/key-policies.html)、[IAM 策略](https://docs.amazonaws.cn/kms/latest/developerguide/iam-policies.html)或[授权](https://docs.amazonaws.cn/kms/latest/developerguide/grants.html)中提供这些权限。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](https://docs.amazonaws.cn/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) 条件密钥才允许权限。这些主体不能直接调用这些操作。`kms:ViaService` 值应该为 `sagemaker.*.amazonaws.com`。
**注意**  
 `kms:ViaService`条件密钥只能用于在线商店客户托管 Amazon KMS 密钥，不能用于线下商店。如果您将此特殊条件添加到您的客户托管密钥中，并且对线上和线下商店使用相同的 Amazon KMS 密钥，那么 `CreateFeatureGroup` API 操作将失败。
+  授予客户托管密钥管理员对客户托管密钥的只读访问权限和撤销授权的权限，包括 Feature Store 用来保护您数据的授权。

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

------
#### [ JSON ]

****  

```
{"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:ListGrants"
       ],
       "Resource": "*",      
       "Condition": {"StringLike": {"kms:ViaService" : "sagemaker.*.amazonaws.com"
          }
       }
     },
     {"Sid" : "Allow listing aliases",
       "Effect": "Allow",
       "Principal": {"AWS": "arn:aws:iam::111122223333:user/featurestore-user"},
       "Action": "kms:ListAliases",
       "Resource": "*"
     },
     {"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::111122223333:root"
        },
        "Action": "kms:*",
        "Resource": "*"
     }
   ]
 }
```

------

## 使用授权为 Feature Store 授权
<a name="feature-store-using-grants-authorize"></a>

 除密钥策略之外，Feature Store 还使用授权来设置对于客户托管密钥的权限。要查看有关您账户中的客户托管密钥的授权，请使用 `[ListGrants](https://docs.amazonaws.cn/kms/latest/APIReference/API_ListGrants.html)` 操作。Feature Store 无需授权或任何其他权限，即可使用 [Amazon 拥有的客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#aws-owned-cmk)来保护您的在线存储。

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

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

 该密钥策略还可以允许账户[撤销对客户托管密钥的授权](https://docs.amazonaws.cn/kms/latest/APIReference/API_RevokeGrant.html)。但是，如果您撤销对某个活动加密在线存储的授权，Feature Store 将无法保护和维护该存储。

## 监控功能存储与的互动 Amazon KMS
<a name="feature-store-monitoring-kms-interaction"></a>

 如果您使用[客户托管密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)来保护您的在线或离线商店，则可以使用 Amazon CloudTrail 日志来跟踪 Feature Store Amazon KMS 代表您发送的请求。

## 访问在线存储中的数据
<a name="feature-store-accessing-data-online-store"></a>

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

```
"kms:Decrypt"
```

## 授权将客户托管密钥用于您的离线存储
<a name="feature-store-authorizing-use-cmk-offline-store"></a>

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

```
"kms:GenerateDataKey"
```

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

**重要**  
创建功能组时，您可以指定 Amazon KMS 加密密钥来加密用于离线功能存储的 Amazon S3 位置。如果未指定 Amazon KMS 加密密钥，则默认情况下，我们会使用密 Amazon KMS 钥加密所有静态数据。通过为 SSE 定义存储[桶级密钥](https://docs.amazonaws.cn/AmazonS3/latest/userguide/bucket-key.html)，您可以将 Amazon KMS 请求成本降低多达 99%。