

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

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

默认情况下，Amazon Managed Grafana 会自动为您提供静态加密，并 AWS 使用自有的加密密钥来执行此操作。
+ **AWS 自有密钥** — Amazon Managed Grafana 使用这些密钥自动加密您的工作空间数据。您无法查看、管理或使用 AWS 自有密钥，也无法审核其使用情况。但是，无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息，请参阅《*AWS KMS 开发者指南》*中的[AWS自有密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

静态数据加密有助于减少保护敏感客户数据（例如个人身份信息）所需的运维开销和复杂性。其支持构建符合严格加密合规性和监管要求的安全应用程序。

您也可以选择在创建工作区时使用客户托管密钥：
+ **客户托管密钥** — Amazon Managed Grafana 支持使用由您创建、拥有和管理的对称客户托管密钥来加密工作空间中的数据。由于您可以完全控制此加密，因此可以执行以下任务：
  + 制定和维护关键策略
  + 建立和维护 IAM 策略和授权
  + 启用和禁用密钥策略
  + 轮换加密材料
  + 添加 标签
  + 创建密钥别名
  + 安排密钥删除

有关更多信息，请参阅《*AWS KMS 开发人员指南》*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)和[什么是 AWS KMS？](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)

谨慎选择是使用客户托管密钥还是 AWS 自有密钥。使用客户托管密钥创建的工作区以后不能转换为使用 AWS 自有密钥（反之亦然）。

**注意**  
Amazon Managed Grafana AWS 使用自有密钥自动启用静态加密，从而免费保护您的数据。
但是，使用客户管理的密钥需要 AWS KMS 付费。有关定价的更多信息，请参阅 [AWS KMS 定价](https://aws.amazon.com/kms/pricing/)。

**重要**  
如果您在密钥策略中禁用客户托管密钥或移除 Amazon Managed Grafana 访问权限，则您的工作空间将无法访问。工作区将保持`ACTIVE`状态，但功能不可用。您有 7 天的时间通过重新启用密钥或恢复密钥策略来恢复访问权限。7 天后，工作空间将变为`FAILED`状态，只能删除。
计划在中 AWS KMS 删除密钥至少需要等待 7 天才能删除密钥。密钥一旦被删除，就无法恢复，任何使用该密钥加密的工作空间都将永久失去对其数据的访问权限。
客户托管密钥加密仅在创建新工作空间时可用。现有工作空间无法转换为使用客户托管密钥。
创建工作空间后，您无法修改其客户托管密钥。

## Amazon Managed Grafana 如何使用补助金 AWS KMS
<a name="AMG-encryption-grants"></a>

亚马逊托管 Grafana 需要获得授权才能使用您的客户托管密钥。

当您创建使用客户托管密钥加密的亚马逊托管 Grafana 工作空间时，亚马逊托管 Grafana 会通过向发送请求来代表您创建授权。[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) AWS KMS中的授权 AWS KMS 用于让 Amazon Managed Grafana 访问您账户中的 KMS 密钥，即使不是直接以您的名义调用（例如，存储控制面板数据或用户配置时）。

Amazon Managed Grafana 需要获得授权才能使用您的客户托管密钥进行以下内部操作：
+ 向发送[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)请求 AWS KMS 以根据需要创建其他授权。
+ 向发送[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)请求， AWS KMS 以验证创建工作空间时给出的对称客户托管 KMS 密钥是否有效。
+ 在不同的加密环境之间移动时，向发送[ReEncryptTo 和 ReEncryptFrom](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)请求 AWS KMS 以重新加密数据。
+ 将 [E](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) ncrypt 请求发送 AWS KMS 到，直接使用您的客户托管密钥对数据进行加密。
+ 将 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 请求发送 AWS KMS 到以解密加密的数据密钥，以便它们可用于加密您的数据。
+ 向发送[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)请求 AWS KMS 以生成由您的客户托管密钥加密的数据密钥。
+ 向发送[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)请求 AWS KMS 以生成加密数据密钥，而无需返回纯文本版本。
+ 向发送取消 AWS KMS 不再需要的补助金的[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)请求。

亚马逊托管 Grafana 为密钥创建授权，允许亚马逊托管 Grafana 代表您使用密钥。 AWS KMS 您可以通过更改密钥策略、禁用密钥或撤消授权来删除对密钥的访问权限。在执行这些操作之前，您应该了解这些操作的后果。这可能会导致工作区中的数据丢失。

如果您以任何方式取消对任何授权的访问权限，Amazon Managed Grafana 将无法访问由客户托管密钥加密的任何数据，也无法存储发送到工作空间的新数据，这会影响依赖该数据的操作。工作区的新更新将无法访问，并且可能会永久丢失。

**警告**  
如果您禁用密钥或在密钥策略中移除 Amazon Managed Grafana 访问权限，则无法再访问工作空间数据。工作区将保持`ACTIVE`状态，但功能不可用。发送到工作区的新更新将无法访问，并且可能会永久丢失。您可以在 7 天内重新启用密钥或恢复 Amazon Managed Grafana 对密钥的访问权限，从而恢复对工作空间数据的访问权限并恢复接收新数据。7 天无法访问后，工作空间将变为`FAILED`状态。
如果您计划在中删除密钥 AWS KMS，则密钥将在强制的 7 天等待期之后被删除。删除后，密钥将无法恢复，工作空间数据将永久无法访问。
如果您*撤销* 授权，则无法重新创建该授权，并且工作区中的数据将永久丢失。
Amazon Managed Grafana 通过亚马逊 RDS 创建额外的儿童补助金，因为它依赖于 RDS 进行数据存储。撤销这些与 RDS 相关的授权将产生与撤销 Grafana 主授予相同的永久数据丢失效果。

## 步骤 1：创建客户托管式密钥
<a name="AMG-encryption-create-key"></a>

您可以使用管理控制台创建对称客户托管密钥，或者。 AWS AWS KMS APIs密钥必须与 Amazon Managed Grafana 工作空间位于同一区域，并且必须是具有密钥用法的对称密钥。`ENCRYPT_DECRYPT`

**创建对称的客户托管密钥**
+ 按照**《AWS KMS 开发人员指南》中[创建对称的客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)的步骤进行操作。

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

要在亚马逊托管 Grafana 工作空间中使用您的客户托管密钥，密钥政策中必须允许以下 API 操作：
+ [kms: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) — 向客户托管密钥添加授权。授予对指定 KMS 密钥的控制访问权限，从而允许访问[授权 Amazon Managed Grafana 所需的操作](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)。有关更多信息，请参阅 *AWS KMS 开发人员指南*中的[使用授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。这允许亚马逊 Managed Grafana 执行以下操作：
  + 调`GenerateDataKey`用生成加密的数据密钥并将其存储。
  + 调用 `Decrypt` 使用存储的加密数据密钥访问加密数据。
+ [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) — 提供客户托管密钥详细信息以允许 Amazon Managed Grafana 验证密钥。

以下是您可以为亚马逊托管 Grafana 添加的政策声明示例：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow IAM Users and Roles to validate KMS key",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/root"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": [
            "grafana.<region>.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "Allow IAM Users and Roles to create grant on KMS key",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/root"
      },
      "Action": "kms:CreateGrant",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": [
            "grafana.<region>.amazonaws.com"
          ],
          "kms:GrantConstraintType": "EncryptionContextSubset"
        },
        "ForAllValues:StringEquals": {
          "kms:GrantOperations": [
            "CreateGrant",
            "RetireGrant",
            "Decrypt",
            "Encrypt",
            "GenerateDataKey",
            "GenerateDataKeyWithoutPlaintext",
            "ReEncryptFrom",
            "ReEncryptTo"
          ]
        }
      }
    }
  ]
}
```
+ 有关在策略中指定权限的更多信息，请参阅[AWS 密钥管理服务开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。
+ 有关密钥访问疑难解答的更多信息，请参阅[AWS 密钥管理服务开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。

## 第 2 步：为亚马逊托管 Grafana 指定客户托管密钥
<a name="AMG-encryption-specify-key"></a>

创建工作空间时，您可以通过输入 KMS 密钥 ARN 来指定客户托管密钥，Amazon Managed Grafana 使用该密钥来加密工作空间存储的数据。

1. 打开 Amazon Managed Grafana 控制台，其位于 [https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/)。

1. 选择**创建工作区**。

1. 在 “**加密**” 部分中，选择**客户管理的密钥**。

1. 在 KMS 密钥 ARN 字段中输入您的客户托管密**钥的 ARN。**

1. 完成剩余的工作空间配置，然后选择**创建工作空间**。

在创建工作区时，您可以使用以下`--kms-key-id`参数指定客户托管密钥：

```
aws grafana create-workspace \
    --workspace-name "my-encrypted-workspace" \
    --workspace-description "Workspace with customer managed encryption" \
    --account-access-type "CURRENT_ACCOUNT" \
    --authentication-providers "AWS_SSO" \
    --permission-type "SERVICE_MANAGED" \
    --kms-key-id "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
```

## 监控您的亚马逊托管 Grafana 的加密密钥
<a name="AMG-encryption-monitoring"></a>

当您在亚马逊托管 Grafana 工作空间中使用 AWS KMS 客户托管密钥时，您可以使用 AWS CloudTrail 或 Amazon Logs 来跟踪 CloudWatch 亚马逊托管 Grafana 向其发送的请求。 AWS KMS

以下示例是`CreateGrant`、`DescribeKey``GenerateDataKey`、和监控 Amazon Manage `Decrypt` d Grafana 为访问由您的客户托管密钥加密的数据而调用的 KMS 操作 AWS CloudTrail 的事件：

当您使用 AWS KMS 客户托管密钥加密您的工作空间时，Amazon Managed Grafana `CreateGrant` 会代表您发送访问您指定的 KMS 密钥的请求。Amazon Managed Grafana 创建的补助金特定于与客户托管密钥关联 AWS KMS 的资源。

以下示例事件记录了 `CreateGrant` 操作：

```
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE-KEY-ID1",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2021-04-22T17:02:00Z"
}
},
"invokedBy": "grafana.amazonaws.com"
},
"eventTime": "2021-04-22T17:07:02Z",
"eventSource": "kms.amazonaws.com",
"eventName": "CreateGrant",
"awsRegion": "us-west-2",
"sourceIPAddress": "172.12.34.56",
"userAgent": "ExampleDesktop/1.0 (V1; OS)",
"requestParameters": {
"retiringPrincipal": "grafana.amazonaws.com",
"operations": [
"CreateGrant",
"DescribeKey",
"ReEncryptTo",
"ReEncryptFrom",
"Encrypt",
"Decrypt",
"GenerateDataKey",
"GenerateDataKeyWithoutPlaintext",
"RetireGrant"
],
"keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
"granteePrincipal": "grafana.amazonaws.com"
},
"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:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"eventCategory": "Management",
"recipientAccountId": "111122223333"
}
```

Amazon Managed Grafana 使用`DescribeKey`该操作来验证账户和 AWS KMS 区域中是否存在与您的工作空间关联的客户托管密钥。

以下示例事件记录了 `DescribeKey` 操作：

```
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE-KEY-ID1",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2021-04-22T17:02:00Z"
}
},
"invokedBy": "grafana.amazonaws.com"
},
"eventTime": "2021-04-22T17:07:02Z",
"eventSource": "kms.amazonaws.com",
"eventName": "DescribeKey",
"awsRegion": "us-west-2",
"sourceIPAddress": "172.12.34.56",
"userAgent": "ExampleDesktop/1.0 (V1; OS)",
"requestParameters": {
"keyId": "00dd0db0-0000-0000-ac00-b0c000SAMPLE"
},
"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:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"eventCategory": "Management",
"recipientAccountId": "111122223333"
}
```

Amazon Managed Grafana 使用`GenerateDataKey`该操作生成用于加密工作空间数据的数据密钥。

以下示例事件记录了 `GenerateDataKey` 操作：

```
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE-KEY-ID1",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2021-04-22T17:02:00Z"
}
},
"invokedBy": "grafana.amazonaws.com"
},
"eventTime": "2021-04-22T17:07:02Z",
"eventSource": "kms.amazonaws.com",
"eventName": "GenerateDataKey",
"awsRegion": "us-west-2",
"sourceIPAddress": "172.12.34.56",
"userAgent": "ExampleDesktop/1.0 (V1; OS)",
"requestParameters": {
"keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
"keySpec": "AES_256"
},
"responseElements": null,
"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:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"eventCategory": "Management",
"recipientAccountId": "111122223333"
}
```

Amazon Managed Grafana 使用`Decrypt`该操作来解密加密的数据密钥，以便这些密钥可用于解密工作空间数据。

以下示例事件记录了 `Decrypt` 操作：

```
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE-KEY-ID1",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "TESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"mfaAuthenticated": "false",
"creationDate": "2021-04-22T17:02:00Z"
}
},
"invokedBy": "grafana.amazonaws.com"
},
"eventTime": "2021-04-22T17:07:02Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "us-west-2",
"sourceIPAddress": "172.12.34.56",
"userAgent": "ExampleDesktop/1.0 (V1; OS)",
"requestParameters": {
"encryptionContext": {
"aws:grafana:workspace-id": "g-1234567890abcdef0"
}
},
"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:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"eventCategory": "Management",
"recipientAccountId": "111122223333"
}
```

## 了解详情
<a name="AMG-encryption-learn-more"></a>

以下资源提供有关静态数据加密的更多信息。
+ 有关 AWS KMS 基本概念的更多信息，请参阅《[AWS KMS 开发人员指南》](https://docs.aws.amazon.com/kms/latest/developerguide/)。
+ 有关安全最佳实践的更多信息 AWS KMS，请参阅《[AWS KMS 开发人员指南》](https://docs.aws.amazon.com/kms/latest/developerguide/)。