

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 靜態加密
<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>

Amazon Managed Grafana 需要授予才能使用客戶受管金鑰。

當您建立使用客戶受管金鑰加密的 Amazon Managed Grafana 工作區時，Amazon Managed 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 ，以在不同的加密內容之間移動時重新加密資料。
+ 傳送[加密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)請求至 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 以產生加密的資料金鑰，而不傳回純文字版本。
+ 將 [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) 請求傳送至 AWS KMS 以淘汰不再需要的授與。

Amazon Managed Grafana 會建立金鑰的授予 AWS KMS ，允許 Amazon Managed Grafana 代表您使用金鑰。您可以透過變更金鑰政策、停用金鑰或撤銷授權來移除金鑰的存取權。在執行這些動作之前，應先充分了解這些動作的後果。您的工作區中可能會發生資料遺失。

如果您以任何方式移除任何授予的存取權，Amazon Managed Grafana 將無法存取客戶受管金鑰加密的任何資料，也無法存取傳送到工作區的新資料，這會影響依賴該資料的操作。無法存取工作區的新更新，且可能會永久遺失。

**警告**  
如果您停用金鑰，或移除金鑰政策中的 Amazon Managed Grafana 存取權，則無法再存取工作區資料。工作區將保持 `ACTIVE` 狀態，但功能上將無法使用。傳送至工作區的新更新將無法存取，且可能會永久遺失。您可以在 7 天內重新啟用金鑰或還原對金鑰的 Amazon Managed Grafana 存取權，以還原對工作區資料的存取權，並繼續接收新資料。在 7 天沒有存取權後，工作區將轉換為 `FAILED` 狀態。
如果您排程刪除金鑰 AWS KMS，金鑰會在強制的 7 天等待期間之後刪除。一旦刪除，就無法還原金鑰，且工作區資料將永久無法存取。
如果您*撤銷*授權，則無法重新建立該授權，且工作區中的資料會永久遺失。
由於 Amazon RDS 對資料儲存的相依性，Amazon Managed Grafana 會透過 Amazon 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)。

若要將客戶受管金鑰與 Amazon Managed 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)。這可讓 Amazon Managed Grafana 執行下列動作：
  + 呼叫 `GenerateDataKey` 以產生加密的資料金鑰並加以存放。
  + 呼叫 `Decrypt` 以使用儲存的加密資料金鑰來存取加密的資料。
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) – 提供客戶受管金鑰詳細資訊，以允許 Amazon Managed Grafana 驗證金鑰。

以下是您可以為 Amazon Managed 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 Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。
+ 如需對金鑰存取進行疑難排解的詳細資訊，請參閱 [AWS Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。

## 步驟 2：指定 Amazon Managed Grafana 的客戶受管金鑰
<a name="AMG-encryption-specify-key"></a>

建立工作區時，您可以輸入 KMS 金鑰 ARN 來指定客戶受管金鑰，Amazon Managed Grafana 會使用此金鑰來加密工作區存放的資料。

1. 開啟位於 https：//[https://console.aws.amazon.com/grafana/](https://console.aws.amazon.com/grafana/) 的 Amazon Managed 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"
```

## 監控 Amazon Managed Grafana 的加密金鑰
<a name="AMG-encryption-monitoring"></a>

當您搭配 Amazon Managed Grafana 工作區使用 AWS KMS 客戶受管金鑰時，您可以使用 AWS CloudTrail 或 Amazon CloudWatch Logs 來追蹤 Amazon Managed Grafana 傳送的請求 AWS KMS。

下列範例是 `CreateGrant`、`GenerateDataKey`、 `DescribeKey`和 AWS CloudTrail 的事件`Decrypt`，用於監控 Amazon Managed Grafana 呼叫的 KMS 操作，以存取客戶受管金鑰加密的資料：

當您使用 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/)。