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

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

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

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

重要

CloudWatch Logs 僅支援對稱 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 帳戶或異常偵測器。

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

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 APIs 建立 KMS 金鑰時,您可以將 KMS 金鑰與異常偵測器建立關聯。

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

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