本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
OpenTelemetry 指標的靜態加密
什麼是 CloudWatch 資料集
您傳送至 Amazon CloudWatch 的 OpenTelemetry (OTel) 指標會儲存在稱為資料集的資源中。每個 在所有 OTel 指標所在的每個區域中 AWS 帳戶 都有default資料集。default 資料集是唯一支援的資料集 — 您無法建立其他資料集。
資料集可以像其他 AWS 資源一樣加密和標記。資料集 ARN 的格式如下:
arn:{partition}:cloudwatch:{region}:{account-id}:dataset/default
若要檢視資料集目前的加密組態,請使用 GetDataset API:
aws cloudwatch get-dataset \ --dataset-identifier default
如果客戶受管金鑰與資料集相關聯,則回應會包含金鑰 ARN。如果沒有相關聯的客戶受管金鑰,則會使用 擁有的 AWS 金鑰加密資料集。
靜態加密的選項
CloudWatch 一律加密靜態資料集資料。根據預設,CloudWatch 會使用 AWS 擁有的金鑰加密所有靜態資料。您不需要採取任何動作,即可使用 AWS 擁有的金鑰來保護資料。如需詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的 AWS 擁有的金鑰。
如果您想要管理用來加密資料集資料的金鑰,您可以在 AWS Key Management Service () 中使用客戶受管金鑰AWS KMS。如需詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的客戶受管金鑰。
當您使用客戶受管金鑰時,需支付 AWS KMS 費用。如需定價的詳細資訊,請參閱 AWS Key Management Service 定價
CloudWatch 如何使用客戶受管金鑰進行資料集加密
重要
客戶受管金鑰加密適用於default資料集。default 資料集是唯一支援的資料集 — 您無法建立其他資料集。
當您將客戶受管金鑰與default資料集建立關聯時,CloudWatch 會使用金鑰來加密存放在該資料集中的所有 OTel 指標資料。
CloudWatch 會直接使用具有金鑰政策許可的服務委託人 (cloudwatch.amazonaws.com)。CloudWatch 不會使用授予或 IAM 角色來存取您的 AWS KMS 金鑰。
CloudWatch 不會快取資料金鑰。不過,CloudWatch 會快取kms:Decrypt回應最多 15 分鐘。金鑰政策的變更最多可能需要 15 分鐘才會生效。
CloudWatch 對所有 AWS KMS 密碼編譯操作使用以下加密內容:
-
索引鍵:
aws:cloudwatch:arn -
值:
arn:{partition}:cloudwatch:{region}:{account-id}:dataset/default
設定資料集的客戶受管金鑰
搭配 CloudWatch 資料集使用的 AWS KMS 金鑰必須符合下列要求:
-
金鑰必須是使用金鑰 ENCRYPT_DECRYPT 的對稱加密金鑰 (SYMMETRIC_DEFAULT)。不支援非對稱金鑰。
-
不支援多區域金鑰。
-
金鑰必須與資料集位於相同的 AWS 區域 中。
-
您必須將金鑰指定為完整金鑰 ARN。不支援金鑰別名和金鑰 IDs。
設定金鑰政策許可
若要搭配 CloudWatch Dataset 使用客戶受管金鑰,金鑰政策必須授予 CloudWatch 使用金鑰的許可。下列範例金鑰政策會授予 CloudWatch 必要的許可,並包含混淆代理人保護。
關聯或使用資料集的發起人必須具有 kms:Decrypt許可,範圍限定於 CloudWatch ViaService和加密內容,如以下AllowCallerDecrypt陳述式所示。將 YourApplicationRole 取代為用於呼叫 CloudWatch 資料集 APIs IAM 角色。
範例 CloudWatch 資料集加密的金鑰政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudWatchDatasetDescribeKey", "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } }, { "Sid": "AllowCloudWatchDatasetEncryption", "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:region:account-id:dataset/default" }, "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } }, { "Sid": "AllowCallerDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/YourApplicationRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudwatch.region.amazonaws.com", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } } ] }
將 account-id 和 region 取代為您自己的值。
如需金鑰政策的詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的 中的金鑰政策 AWS KMS。
將客戶受管金鑰與資料集建立關聯
使用 AssociateDatasetKmsKey API 將客戶受管金鑰與資料集建立關聯。您必須指定 default做為資料集識別符。
若要使用 CLI AWS 建立客戶受管金鑰的關聯,請執行下列命令:
aws cloudwatch associate-dataset-kms-key \ --dataset-name default \ --kms-key-arn arn:aws:kms:region:account-id:key/key-id
變更或移除加密組態
您可以變更或移除加密資料集資料的客戶受管金鑰。
變更客戶受管金鑰
若要取代客戶受管金鑰,請使用新的金鑰 ARN AssociateDatasetKmsKey再次呼叫 。發起人必須同時擁有目前金鑰和新金鑰的kms:Decrypt許可。CloudWatch 會開始使用新金鑰進行後續加密操作。
移除客戶受管金鑰
若要移除客戶受管金鑰並還原為 AWS 擁有的金鑰加密,請呼叫 DisassociateDatasetKmsKey。發起人必須擁有目前相關聯金鑰的kms:Decrypt許可。
aws cloudwatch disassociate-dataset-kms-key \ --dataset-name default
重要
取消與客戶受管金鑰的關聯後,會有 3 小時的強制執行時段,在此期間 CloudWatch 仍需要先前關聯金鑰的kms:Decrypt許可。在此時段內,請勿停用或刪除金鑰。
如果您的金鑰處於停用狀態,您必須先重新啟用金鑰,才能將其與資料集取消關聯。
縮小金鑰政策存取範圍
您可以使用金鑰政策中的條件來限制對 AWS KMS 金鑰的存取。
- 加密內容條件
-
使用
kms:EncryptionContext:aws:cloudwatch:arn條件金鑰將金鑰用量限制為default資料集。"Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } - 混淆代理人保護
-
使用
aws:SourceArn和aws:SourceAccount條件來防止跨帳戶混淆代理人攻擊。"Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } } - kms:ViaService 條件
-
使用
kms:ViaService條件金鑰將金鑰用量限制為來自 CloudWatch 的請求。"Condition": { "StringEquals": { "kms:ViaService": "cloudwatch.region.amazonaws.com" } }
監控 CloudWatch 與 的互動 AWS KMS
您可以使用 AWS CloudTrail 來追蹤 CloudWatch AWS KMS 代表您傳送到 的請求。 AWS CloudTrail 日誌項目使用 服務主體cloudwatch.amazonaws.com和 ViaService的值cloudwatch.。{region}.amazonaws.com
下列 CloudTrail 事件名稱會出現在 CloudWatch Dataset 加密操作的日誌項目中:
GenerateDataKeyEncryptDecryptDescribeKeyReEncrypt
每個日誌項目都包含加密內容,您可以用來識別操作套用的特定資料集。
如需監控 AWS KMS 金鑰用量的詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的監控 AWS Key Management Service。