使用 加密異常偵測器及其結果 AWS KMS - Amazon CloudWatch Logs

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

使用 加密異常偵測器及其結果 AWS KMS

異常偵測器資料一律會在 CloudWatch 日誌中加密。根據預設, CloudWatch Logs 會針對靜態資料使用伺服器端加密。您也可以使用 AWS Key Management Service 進行此加密。如果您這樣做,則會使用 AWS KMS 金鑰完成加密。透過將KMS金鑰與異常偵測器建立關聯, AWS KMS 在異常偵測器層級啟用使用 加密。

重要

CloudWatch 日誌僅支援對稱KMS金鑰。請勿使用非對稱金鑰來加密日誌群組中的資料。如需詳細資訊,請參閱使用對稱和非對稱金鑰

限制

  • 若要執行下列步驟,您必須擁有下列許可:kms:CreateKeykms:GetKeyPolicykms:PutKeyPolicy

  • 將金鑰與異常偵測器建立關聯或取消關聯後,操作可能需要最多五分鐘才能生效。

  • 如果您撤銷 CloudWatch Logs 對關聯金鑰的存取權或刪除關聯KMS金鑰,則無法再擷取 CloudWatch Logs 中的加密資料。

步驟 1:建立 AWS KMS 金鑰

若要建立KMS金鑰,請使用下列 create-key 命令:

aws kms create-key

輸出包含金鑰的金鑰 ID 和金鑰的 Amazon Resource Name (ARN)。下列為範例輸出:

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "key-default-1", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/key-default-1", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

步驟 2:設定KMS金鑰的許可

根據預設,所有 AWS KMS 金鑰都是私有的。只有資源擁有者可以使用它來加密和解密資料。不過,資源擁有者可以將存取KMS金鑰的許可授予其他使用者和資源。透過此步驟,您可以授予 CloudWatch Logs 服務主體使用 金鑰的許可。此服務主體必須位於儲存KMS金鑰的相同 AWS 區域中。

最佳實務是,建議您將KMS金鑰的使用限制為您指定的 AWS 帳戶或異常偵測器。

首先,將KMS金鑰的預設政策儲存為policy.json使用下列get-key-policy命令:

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

在文字編輯器中開啟 policy.json 檔案,並從下列其中一個陳述式中加入區段 (以粗體顯示)。使用逗號從新陳述式中分隔現有陳述式。這些陳述式使用 Condition 區段來增強 AWS KMS 金鑰的安全性。如需詳細資訊,請參閱AWS KMS 金鑰和加密內容

此範例中的 Condition區段會將 AWS KMS 金鑰的使用限制為指定的帳戶,但可用於任何異常偵測器。

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Your_account_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.REGION.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:REGION:Your_account_ID:anomaly-detector:*" } } }, { "Effect": "Allow", "Principal": { "Service": "logs.REGION.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws-crypto-ec:aws:logs:arn": "arn:aws:logs:REGION:Your_account_ID:anomaly-detector:*" } } } ] }

最後,使用下列put-key-policy命令新增更新的政策:

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

步驟 3:將KMS金鑰與異常偵測器建立關聯

當您在主控台或使用 或 AWS CLI 建立KMS金鑰時,您可以將金鑰與異常偵測器建立關聯APIs。

步驟 4:取消金鑰與異常偵測器的關聯

金鑰與異常偵測器建立關聯後,您就無法更新金鑰。移除金鑰的唯一方法是刪除異常偵測器,然後重新建立它。