

 Amazon Forecast 不再向新买家开放。Amazon Forecast 的现有客户可以继续照常使用该服务。[了解更多](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

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

# Amazon Forecast 中的数据保护
<a name="data-protection"></a>

 AWS [分担责任模型分担责任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于 Amazon Forecast 中的数据保护。如本模型所述 AWS ，负责保护运行所有内容的全球基础架构 AWS 云。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅 *AWS Security Blog* 上的 [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 博客文章。

出于数据保护目的，我们建议您保护 AWS 账户 凭证并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息，请参阅《*AWS CloudTrail 用户指南》*中的[使用跟 CloudTrail 踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果您在 AWS 通过命令行界面或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括您 AWS 服务 使用控制台、API 或与 Forecast 或其他人合作时 AWS SDKs。 AWS CLI在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

## 静态加密
<a name="encryption-at-rest"></a>

在 Amazon Forecast 中，[CreateDataset](API_CreateDataset.md) 和 [CreatePredictor](API_CreatePredictor.md) 操作期间会提供加密配置。如果操作中提供了加密配置，则 CreateDataset 操作中将使用您的 CMK 和 IAM 角色进行静态加密。[CreateDatasetImportJob](API_CreateDatasetImportJob.md)

例如，如果您在 CreateDataset 操作 EncryptionConfig 声明 RoleArn 中提供了密钥的 KMSKey Arn 和 a，Forecast 将担任该角色并使用该密钥加密数据集。如果未提供任何配置，则 Forecast 将使用默认服务密钥进行加密。此外，如果您为操作提供 EncryptionConfig 信息，则所有后续 CreatePredictor 操作（例如 CreatePredictorExplanability CreatePredictorBacktestExportJob、 CreateForecast 和）都将使用相同的配置来执行静态加密。同样，如果您未提供加密配置，则 Forecast 将使用默认服务加密。

对于存储在您的 Amazon S3 存储桶中的任何数据，都使用默认 Amazon S3 密钥进行加密。您也可以使用自己的 AWS KMS 密钥对数据进行加密，并授予 Forecast 访问此密钥的权限。有关 Amazon S3 中数据加密的信息，请参阅[使用加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)。有关管理自己的 AWS KMS 密钥的信息，请参阅《*AWS Key Management Service 开发者指南》*中的[管理密钥](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

## 传输和处理中加密
<a name="encryption-in-transit"></a>

 Amazon Forecast 使用带有 AWS 证书的 TLS 来加密发送到其他 AWS 服务的任何数据。与其他 AWS 服务的任何通信都通过 HTTPS 进行，而 Forecast 端点仅支持通过 HTTPS 进行安全连接。

 Amazon Forecast 会将数据从您的账户中复制出来，并在内部 AWS 系统中进行处理。处理数据时，Forecast 会使用 Forecast AWS KMS 密钥或您提供的任何 AWS KMS 密钥对数据进行加密。

## Amazon Forecast 如何在 AWS KMS 中使用补助金
<a name="kms-grants"></a>

Amazon Forecast 需要[授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)才能使用客户托管密钥。

Forecast 使用在[CreatePredictor](https://docs.aws.amazon.com/forecast/latest/dg/API_CreatePredictor.html#forecast-CreatePredictor-request-EncryptionConfig)或[CreateDataset](https://docs.aws.amazon.com/forecast/latest/dg/API_CreateDataset.html#forecast-CreateDataset-request-EncryptionConfig)操作期间**EncryptionConfig**传递的 IAM 角色创建授权。Forecast 会代入该角色并代表您执行创建授权操作。有关更多详细信息，请参阅[设置 IAM 角色](https://docs.aws.amazon.com/forecast/latest/dg/aws-forecast-iam-roles.html)。

但是，当您创建使用客户托管密钥加密的预测变量时，Amazon Forecast 会通过向发送[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)请求来 AWS KMS代表您创建授权。中的授权 AWS KMS 用于让 Amazon Forecast 访问客户账户中的 AWS KMS 密钥。

Amazon Forecast 需要拨款，这样它才能使用您的客户托管密钥向发送解密请求，以便读取加密的数据集项目。 AWS KMS Forecast 还使用拨款向发送 GenerateDataKey 请求，以便将训练项目[加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)回 Amazon S3。 AWS KMS 

您可以随时撤销授予访问权限，或删除服务对客户托管密钥的访问权限。如果您这样做，Amazon Forecast 将无法访问由客户托管密钥加密的任何数据，这样会影响依赖于该数据的操作。例如，如果您尝试对 Amazon Forecast 无法访问的加密预测变量执行 CreateForecast 操作，则该操作将返回 AccessDeniedException 错误。

## 创建客户托管密钥
<a name="customer-managed-key"></a>

您可以使用 AWS 管理控制台 或 AWS KMS API 创建对称的客户托管密钥。要创建对称客户托管密钥，请按照《AWS Key Management Service 开发人员指南》**中的[创建对称客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)步骤进行操作。

密钥策略控制对客户管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[管理对客户托管密钥的访问](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)。

要将您的客户托管密钥与 Amazon Forecast 资源一起使用，密钥策略中必须允许以下 API 操作：
+ [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) — 提供客户托管的密钥详细信息，允许 Amazon Forecast 验证密钥。
+ [kms: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) — 向客户托管密钥添加授权。授予对指定 AWS KMS 密钥的控制权限，从而允许访问[授予 Amazon Forecast 所需的操作](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)。此操作允许 Amazon Forecast 调用 `GenerateDataKey` 生成加密数据密钥并将其存储，因为数据密钥不会立即用于加密。此外，该操作还允许 Amazon Forecast 调用 `Decrypt`，以便可以使用存储的加密数据密钥并访问加密数据。
+ [kms: RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)-操作完成后，停用`CreateGrant`操作期间提供的所有赠款。

**注意**  
Amazon Forecast 会对调用者的身份执行 `kms:Decrypt` 和 `kms:GenerateDataKey` 验证。如果来电者没有相关权限，您将收到一个 AccessDeniedException 。密钥策略还应与以下代码类似：  

```
"Effect": "Allow",
"Principal": {
    "AWS": “AWS Invoking Identity”
},
"Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey”
    ],
    "Resource": "*"
}
```

有关更多详细信息，请参阅 [IAM 策略](https://docs.aws.amazon.com/forecast/latest/dg/security_iam_id-based-policy-examples.html)。

以下是您可以为 Amazon Forecast 添加的策略语句示例。这些是所需的最低权限，也可以使用 IAM 策略进行添加。

```
  "Statement" : [ 
    {"Sid" : "Allow access to principals authorized to use Amazon Forecast",
      "Effect" : "Allow",
      "Principal" : {"AWS" : "arn:aws:iam::111122223333:role/ROLE_PASSED_TO_FORECAST"
      },
      "Action" : [ 
        "kms:DescribeKey", 
        "kms:CreateGrant",
        "kms:RetireGrant"
      ],
      "Resource" : "*",
      "Condition" : {"StringEquals" : {"kms:ViaService" : "forecast.region.amazonaws.com",
          "kms:CallerAccount" : "111122223333"
        }
    },
    {"Sid": "Allow access for key administrators",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:root"
       },
      "Action" : [ 
        "kms:*"
       ],
      "Resource": "arn:aws:kms:region:111122223333:key/key_ID"
    }
  ]
```

有关[策略中指定权限](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#overview-policy-elements)和[密钥访问问题排查](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam)的更多信息，请参阅《AWS Key Management Service 开发人员指南》**。

## 监控 Amazon Forecast 服务的加密密钥
<a name="monitoring-keys"></a>

当您将 AWS KMS 客户托管密钥与 Amazon Forecast 服务资源一起使用时，您可以使用[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)或 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 来跟踪 Forecast 发送到的请求 AWS KMS。以下示例是、和`DescribeKey`监控 AWS KMS 操作 AWS CloudTrail 的事件 `CreateGrant``RetireGrant`，这些操作由 Amazon Forecast 调用，以访问由您的客户托管密钥加密的数据。

------
#### [ DescribeKey ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2022-10-05T21:16:23Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2022-10-05T21:16:23Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "region",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "keyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.2",
        "cipherSuite": "ECDHE-RSA-AES256-GCM-SHA384",
        "clientProvidedHostHeader": "kms.region.amazonaws.com"
    }
}
```

------
#### [ CreateGrant ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2022-10-05T23:10:27Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2022-10-05T23:10:27Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "region",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "operations": [
            "Decrypt",
            "GenerateDataKey"
        ],
        "granteePrincipal": "AWS Internal",
        "keyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "responseElements": {
        "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.2",
        "cipherSuite": "ECDHE-RSA-AES256-GCM-SHA384",
        "clientProvidedHostHeader": "kms.region.amazonaws.com"
    }
}
```

------
#### [ RetireGrant ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2022-10-06T04:56:14Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2022-10-06T04:56:14Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "RetireGrant",
    "awsRegion": "region",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData": {
        "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.2",
        "cipherSuite": "ECDHE-RSA-AES256-GCM-SHA384",
        "clientProvidedHostHeader": "kms.region.amazonaws.com"
    }
}
```

------