Amazon Forecast 不再向新买家开放。Amazon Forecast 的现有客户可以继续照常使用该服务。了解更多
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Forecast 中的数据保护
AWS 分担责任模型分担责任模型适用于 Amazon Forecast 中的数据保护。如本模型所述 AWS ,负责保护运行所有内容的全球基础架构 AWS Cloud。您负责维护对托管在此基础架构上的内容的控制。您还负责您所使用的 AWS 服务
的安全配置和管理任务。有关数据隐私的更多信息,请参阅数据隐私FAQ。 有关欧洲数据保护的信息,请参阅责任AWS 共担模型和AWS安全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 踪。
-
使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
-
使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon S3 中的敏感数据。
-
如果您在 AWS 通过命令行界面或访问时需要 FIPS 140-3 经过验证的加密模块API,请使用端点。FIPS有关可用FIPS端点的更多信息,请参阅联邦信息处理标准 (FIPS) 140-3。
我们强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括您 AWS 服务 使用控制台、API、 AWS CLI或与 Forecast 或其他人合作时 AWS SDKs。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您URL向外部服务器提供,我们强烈建议您不要在中包含凭据信息,URL以验证您对该服务器的请求。
静态加密
在 Amazon Forecast 中,CreateDataset 和 CreatePredictor 操作期间会提供加密配置。如果操作中提供了加密配置,则 CreateDataset 操作中将使用您的CMK和IAM角色进行静态加密。CreateDatasetImportJob
例如,如果您在 CreateDataset 操作 EncryptionConfig 语句 RoleArn 中提供了密钥KMSKeyArn和,Forecast 将担任该角色并使用该密钥加密数据集。如果未提供任何配置,则 Forecast 将使用默认服务密钥进行加密。此外,如果您为操作提供 EncryptionConfig 信息,则所有后续 CreatePredictor 操作(例如 CreatePredictorExplanability CreatePredictorBacktestExportJob、 CreateForecast 和)都将使用相同的配置来执行静态加密。同样,如果您未提供加密配置,则 Forecast 将使用默认服务加密。
对于存储在您的 Amazon S3 存储桶中的任何数据,都使用默认 Amazon S3 密钥进行加密。您也可以使用自己的 AWS KMS 密钥对数据进行加密,并授予 Forecast 访问此密钥的权限。有关 Amazon S3 中数据加密的信息,请参阅使用加密保护数据。有关管理自己的 AWS KMS 密钥的信息,请参阅AWS Key Management Service 开发者指南中的管理密钥。
传输和处理中加密
Amazon Forecast TLS 使用 AWS 证书对发送到其他 AWS 服务的任何数据进行加密。与其他 AWS 服务的任何通信都是通过以下方式进行的HTTPS,Forecast 端点仅支持安全连接HTTPS。
Amazon Forecast 会将数据从您的账户中复制出来,并在内部 AWS 系统中进行处理。处理数据时,Forecast 会使用 Forecast AWS KMS 密钥或您提供的任何 AWS KMS 密钥对数据进行加密。
Amazon Forecast 如何使用补助金 AWS KMS
Amazon Forecast 需要授权才能使用客户托管密钥。
Forecast 使用在CreatePredictor或CreateDataset操作EncryptionConfig中传递的IAM角色创建授权。Forecast 会代入该角色并代表您执行创建授权操作。有关更多详细信息,请参阅安装IAM角色。
但是,当您创建使用客户托管密钥加密的预测变量时,Amazon Forecast 会通过向发送CreateGrant请求来 AWS KMS代表您创建授权。中的授权 AWS KMS 用于让 Amazon Forecast 访问客户账户中的 AWS KMS 密钥。
Amazon Forecast 需要拨款,这样它才能使用您的客户托管密钥向发送解密请求,以便读取加密的数据集项目。 AWS KMS Forecast 还使用拨款向发送 GenerateDataKey 请求,以便将训练项目加密回 Amazon S3。 AWS KMS
您可以随时撤销授予访问权限,或删除服务对客户托管密钥的访问权限。如果您这样做,Amazon Forecast 将无法访问由客户托管密钥加密的任何数据,这样会影响依赖于该数据的操作。例如,如果您尝试对 Amazon Forecast 无法访问的加密预测变量执行 CreateForecast 操作,则该操作将返回 AccessDeniedException 错误。
创建客户托管密钥
您可以使用 AWS Management Console 或创建对称的客户托管密钥。 AWS KMS API要创建对称客户托管密钥,请按照《AWS Key Management Service 开发人员指南》中的创建对称客户托管密钥步骤进行操作。
密钥策略控制对客户管理型密钥的访问。每个客户托管式密钥必须只有一个密钥政策,其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时,可以指定密钥政策。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的管理对客户托管密钥的访问。
要将您的客户托管密钥与 Amazon Forecast 资源一起使用,密钥政策中必须允许以下API操作:
Amazon Forecast 会对调用者的身份执行 kms:Decrypt
和 kms:GenerateDataKey
验证。如果来电者没有相关权限,您将收到一个 AccessDeniedException 。密钥策略还应与以下代码类似:
"Effect": "Allow",
"Principal": {
"AWS": “AWS Invoking Identity”
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey”
],
"Resource": "*"
}
有关更多详细信息,请参阅IAM政策。
以下是您可以为 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
"
}
]
有关策略中指定权限和密钥访问问题排查的更多信息,请参阅《AWS Key Management Service 开发人员指南》。
监控 Amazon Forecast 服务的加密密钥
当您将 AWS KMS 客户托管密钥与 Amazon Forecast 服务资源一起使用时,您可以使用AWS CloudTrail或 Amazon CloudWatch Logs 来跟踪 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"
}
}