靜態加密 - Amazon Managed Service for Prometheus

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

靜態加密

預設情況下,Prometheus 的 Amazon 受管服務會自動為您提供靜態加密,並使用 AWS 擁有的加密金鑰。

  • AWS 擁有的金鑰 — Prometheus 的 Amazon 受管服務會使用這些金鑰自動加密上傳至您工作區的資料。您無法檢視、管理或使用 AWS 擁有的密鑰,或審核其使用。不過,您不需要採取任何動作或變更任何程式,即可保護加密您資料的金鑰。如需詳細資訊,請參閱 AWS 中擁有的金鑰 AWS Key Management Service 開發人員指南

加密靜態資料有助於減少保護敏感客戶資料 (例如個人可識別資訊) 的營運成本並降低複雜性。這可讓您建立符合嚴格加密合規性或管制需求的安全應用程式。

您也可以在建立工作區時,選擇使用客戶受管金鑰:

  • 客戶受管金鑰:Amazon Managed Service for Prometheus 支援使用您建立、擁有並管理的對稱客戶受管金鑰來加密工作區中的資料。由於您可以完全控管此加密,因此能執行以下任務:

    • 建立和維護金鑰政策

    • 建立和維護IAM政策和補助金

    • 啟用和停用金鑰政策

    • 輪換金鑰密碼編譯資料

    • 新增標籤

    • 建立金鑰別名

    • 安排金鑰供刪除

    如需詳細資訊,請參閱中的客戶管理金鑰 AWS Key Management Service 開發人員指南。

選擇是否使用客戶管理的金鑰或 AWS 仔細擁有密鑰。使用客戶管理金鑰建立的工作區無法轉換為使用 AWS 稍後擁有密鑰(反之亦然)。

注意

適用於 Prometheus 的 Amazon 受管服務會自動啟用靜態加密 AWS 擁有的金鑰可免費保護您的資料。

然而, AWS KMS 使用客戶管理的金鑰需要支付費用。如需定價的詳細資訊,請參閱 AWS Key Management Service 定價

有關更多信息 AWS KMS,請參閱什麼是 AWS Key Management Service?

注意

以客戶受管金鑰建立的工作區無法使用 AWS 用於擷取的受管理收集器。

Amazon Prometheus 託管服務如何在 AWS KMS

Amazon Managed Service for Prometheus 需要三個授權才能使用您的客戶受管金鑰。

當您為使用客戶受管金鑰加密的 Prometheus 工作區建立 Amazon 受管服務時,Prometheus 的 Amazon 受管服務會將請求傳送至以下地址,代表您建立三個授權 CreateGrant AWS KMS。 中的補助金 AWS KMS 用於為 Prometheus 提供 Amazon 受管服務存取您帳戶中的KMS金鑰,即使沒有直接代表您呼叫 (例如,存放從 Amazon 叢集擷取的指標資料時)。EKS

Amazon Managed Service for Prometheus 需要授權才能使用您的客戶受管金鑰進行下列內部操作:

  • 傳送DescribeKey請求至 AWS KMS 以驗證創建工作區時給出的對稱客戶管理KMS密鑰是否有效。

  • 傳送GenerateDataKey請求至 AWS KMS 產生由您的客戶管理金鑰加密的資料金鑰。

  • 傳送解密請求至 AWS KMS 解密加密的數據密鑰,以便它們可以用來加密您的數據。

Amazon Prometheus 託管服務創建了三個贈款 AWS KMS 允許 Prometheus 的 Amazon 託管服務代表您使用密鑰的密鑰。您可以透過變更金鑰政策、停用金鑰或撤銷授權來移除金鑰的存取權。在執行這些動作之前,應先充分了解這些動作的後果。您的工作區中可能會發生資料遺失。

如果您以任何方式移除任何授權的存取權,Amazon Managed Service for Prometheus 將無法存取使用客戶受管金鑰加密的任何資料,也無法儲存傳送至工作區的資料,而這會影響與該資料相關的操作。傳送至工作區的新資料將無法供存取,而且可能永久遺失。

警告
  • 如果您停用金鑰,或在金鑰政策中移除 Amazon Managed Service for Prometheus 的存取權,則無法再存取工作區資料。傳送至工作區的新資料將無法供存取,而且可能永久遺失。

    透過還原 Amazon Managed Service for Prometheus 對金鑰的存取權,就可以再次存取工作區資料並開始接收新資料。

  • 如果您撤銷授權,則無法重新建立該授權,且工作區中的資料會永久遺失。

步驟 1:建立客戶受管金鑰

您可以使用 AWS Management Console,或 AWS KMS APIs。只要您透過政策提供正確的存取權,金鑰與 Amazon Managed Service for Prometheus 工作區就不需要在相同帳戶中,如下所述。

建立對稱客戶受管金鑰

遵循建立對稱客戶管理金鑰的步驟 AWS Key Management Service 開發人員指南

金鑰政策

金鑰政策會控制客戶受管金鑰的存取權限。每個客戶受管金鑰都必須只有一個金鑰政策,其中包含決定誰可以使用金鑰及其使用方式的陳述式。在建立客戶受管金鑰時,可以指定金鑰政策。如需詳細資訊,請參閱「管理客戶受管金鑰的存取」AWS Key Management Service 開發人員指南

若要將客戶受管金鑰與 Prometheus 工作區的 Amazon 受管服務搭配使用,金鑰政策必須允許下列API操作:

  • kms:CreateGrant:新增客戶受管金鑰的授權。授予對指定KMS金鑰的控制權限,以允許存取授與 Prometheus 所需之 Amazon 受管服務的作業。如需詳細資訊,請參閱〈使用授權AWS Key Management Service 開發人員指南

    這可讓 Amazon Managed Service for Prometheus 執行下列操作:

    • 呼叫 GenerateDataKey 以產生加密的資料金鑰並加以儲存,因為資料金鑰不會立即用來加密。

    • 呼叫 Decrypt 以使用儲存的加密資料金鑰來存取加密的資料。

  • kms:DescribeKey:提供客戶受管金鑰的詳細資訊,讓 Amazon Managed Service for Prometheus 能夠驗證金鑰。

以下是您可針對 Amazon Managed Service for Prometheus 新增的政策陳述式範例:

"Statement" : [ { "Sid" : "Allow access to Amazon Managed Service for Prometheus principal within your account", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "aps.region.amazonaws.com", "kms:CallerAccount" : "111122223333" } }, { "Sid": "Allow access for key administrators - not required for Amazon Managed Service for Prometheus", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:*" ], "Resource": "arn:aws:kms:region:111122223333:key/key_ID" }, <other statements needed for other non-Amazon Managed Service for Prometheus scenarios> ]

步驟 2:為 Prometheus 的 Amazon 受管服務指定客戶受管金鑰

建立工作區時,您可以透過輸入金鑰來指定客戶受管KMS金鑰 ARN,適用於 Prometheus 的 Amazon 受管服務用於加密工作區儲存的資料。

步驟 3:從其他服務(例如 Amazon 受管的 Grafana)訪問數據

此步驟為選擇性步驟,只有當您需要從其他服務存取 Prometheus 資料的 Amazon 受管服務時,才需要此步驟。

您的加密數據無法從其他服務訪問,除非他們也有權使用 AWS KMS 索引鍵。例如,如果您想要使用 Amazon 受管 Grafana 來建立資料儀表板或警示,您必須將金鑰的存取權授予 Amazon 受管 Grafana。

讓 Amazon 受管的 Grafana 存取您的客戶受管金鑰
  1. 在您的 Amazon 受管 Grafana 工作區清單中,選取您想要存取 Prometheus 之 Amazon 受管服務的工作區名稱。這會顯示有關 Amazon 受管的 Grafana 工作區的摘要資訊。

  2. 請記下工作區使用的IAM角色名稱。名稱的格式為AmazonGrafanaServiceRole-<unique-id>。主控台會顯示角色ARN的完整資訊。您將指定此名稱 AWS KMS 控制台在後面的步驟。

  3. 在您的 AWS KMS 客戶受管金鑰清單中,選擇您在建立適用於 Prometheus 的 Amazon 受管服務工作區期間使用的客戶受管金鑰。這會開啟金鑰組態詳細資料頁面。

  4. 選取 [金鑰使用者] 旁邊的 [新增] 按鈕。

  5. 從名稱清單中,選擇您在上面提到的 Amazon 受管IAM角色。為了更容易找到,您也可以按名稱進行搜索。

  6. 選擇 [增],將IAM角色新增至金鑰使用者清單。

您的 Amazon 受管 Grafana 工作區現在可以存取適用於 Prometheus 的 Amazon 受管服務工作區中的資料。您可以將其他使用者或角色新增至主要使用者,以便讓其他服務存取您的工作區。

Amazon Managed Service for Prometheus 加密內容

加密內容是一組選用的金鑰值對,包含資料的其他相關內容資訊。

AWS KMS 使用加密內容作為其他驗證資料,以支援已驗證的加密。當您在加密資料的要求中包含加密內容時, AWS KMS 將加密內容繫結至加密的資料。若要解密資料,您必須在請求中包含相同的加密內容。

Amazon Managed Service for Prometheus 加密內容

適用於 Prometheus 的 Amazon 受管服務使用相同的加密內容 AWS KMS 密碼編譯作業,其中金鑰所在aws:amp:arn,值為工作區的 Amazon 資源名稱 (ARN)。

"encryptionContext": { "aws:aps:arn": "arn:aws:aps:us-west-2:111122223333:workspace/ws-sample-1234-abcd-56ef-7890abcd12ef" }

使用加密內容進行監控

當您使用對稱的客戶受管金鑰加密工作區資料時,您也可以在稽核記錄和日誌中使用加密內容,以指出客戶受管金鑰的使用方式。加密內容也會出現在由 AWS CloudTrail 或 Amazon CloudWatch 日誌

使用加密內容控制對客戶受管金鑰的存取

您可以在金鑰政策和IAM政策中使用加密內容conditions來控制對稱客戶管理金鑰的存取。您也可以在授予中使用加密內容條件。

AmazonAmazon Managed Service for Prometheus 會在授權中,使用加密內容限制來控制對帳戶或區域中的客戶受管金鑰的存取權。授予條件會要求授予允許的操作使用指定的加密內容。

以下是授予特定加密內容之客戶受管金鑰存取權的金鑰政策陳述式範例。此政策陳述式中的條件會要求具有指定加密內容的加密內容條件。

{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable CreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:aps:arn": "arn:aws:aps:us-west-2:111122223333:workspace/ws-sample-1234-abcd-56ef-7890abcd12ef" } } }

監控 Amazon Managed Service for Prometheus 的加密金鑰

當您使用 AWS KMS 客戶受管金鑰搭配您的 Amazon 受管服務,適用於 Prometheus 工作區,您可以使用 AWS CloudTrailAmazon CloudWatch 日誌,用於跟踪 Amazon Prometheus 託管服務發送到的請求 AWS KMS.

下面的例子是 AWS CloudTrail 針對CreateGrantGenerateDataKeyDecrypt、和DescribeKey監控 Amazon 受管服務針對 Prometheus 呼叫的KMS操作,以存取由客戶管理金鑰加密的資料的事件:

CreateGrant

當您使用 AWS KMS 用於加密工作區的客戶受管金鑰,Prometheus 的 Amazon 受管服務會代表您傳送三個CreateGrant請求,以存取您指定的KMS金鑰。針對 Prometheus 的 Amazon 受管服務所建立的授權,特定於與 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": "aps.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": "aps.region.amazonaws.com", "operations": [ "GenerateDataKey", "Decrypt", "DescribeKey" ], "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "granteePrincipal": "aps.region.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" }
GenerateDataKey

當您啟用 AWS KMS Prometheus 的 Amazon 受管服務可為您的工作空間提供客戶受管金鑰,為您的工作區建立唯一的金鑰。它發送一個GenerateDataKey請求 AWS KMS 指定 AWS KMS客戶管理的資源密鑰。

下面的範例事件會記錄 GenerateDataKey 操作:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "aps.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": { "encryptionContext": { "aws:aps:arn": "arn:aws:aps:us-west-2:111122223333:workspace/ws-sample-1234-abcd-56ef-7890abcd12ef" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2: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:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "57f5dbee-16da-413e-979f-2c4c6663475e" }
Decrypt

當查詢在加密的工作區上產生時,Amazon Managed Service for Prometheus 會呼叫 Decrypt 操作以使用儲存的加密資料金鑰來存取加密的資料。

下面的範例事件會記錄 Decrypt 操作:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "aps.amazonaws.com" }, "eventTime": "2021-04-22T17:10:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:aps:arn": "arn:aws:aps:us-west-2:111122223333:workspace/ws-sample-1234-abcd-56ef-7890abcd12ef" }, "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "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", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }
DescribeKey

適用於 Prometheus 的 Amazon 託管服務使用該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": "aps.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" }

進一步了解

下列資源會提供有關靜態資料加密的詳細資訊。