本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 加密查詢結果 AWS Key Management Service
根據預設,CloudWatch Logs 會使用 CloudWatch Logs 伺服器端預設的加密方法,加密您 CloudWatch Logs Insights 查詢所儲存的結果。您可以選擇使用 AWS KMS 金鑰來加密這些結果。如果您將 AWS KMS 金鑰與加密結果建立關聯,CloudWatch Logs 會使用該金鑰來加密帳戶中所有查詢的儲存結果。
如果您之後取消金鑰與查詢結果的關聯,CloudWatch Logs 會在日後的查詢中重新使用預設的加密方法。不過,在金鑰仍有關聯時所執行的查詢,依然會使用該金鑰來加密。由於 CloudWatch Logs 仍可繼續參照該金鑰,因此依然可在 KMS 金鑰解除關聯後傳回那些結果。然而,若之後將金鑰停用,CloudWatch Logs 就無法讀取使用該金鑰加密的日誌。
重要
CloudWatch Logs 僅支援對稱 KMS 金鑰。切勿使用非對稱金鑰加密查詢結果。如需詳細資訊,請參閱使用對稱和非對稱金鑰。
限制
-
若要執行下列步驟,您必須擁有下列許可:
kms:CreateKey
、kms:GetKeyPolicy
和kms:PutKeyPolicy
。 -
建立或取消金鑰與查詢結果的關聯後,操作會在 5 分鐘內生效。
-
如果您撤銷 CloudWatch Logs 對已關聯金鑰的存取權,或刪除所關聯的 KMS 金鑰,您將無法再擷取 CloudWatch Logs 中的加密資料。
-
您無法使用 CloudWatch 主控台來關聯金鑰,您必須使用 AWS CLI 或 CloudWatch Logs API。
步驟 1:建立 AWS KMS key
若要建立 KMS 金鑰,請使用以下 create-key 命令:
aws kms create-key
輸出包含金鑰 ID 和金鑰的 Amazon Resource Name (ARN)。下列為範例輸出:
{
"KeyMetadata": {
"Origin": "AWS_KMS",
"KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
"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/6f815f63-e628-448c-8251-e40cb0d29f59",
"AWSAccountId": "123456789012",
"EncryptionAlgorithms": [
"SYMMETRIC_DEFAULT"
]
}
}
步驟 2:設定 KMS 金鑰許可
根據預設,所有 KMS 金鑰皆屬私有。只有資源擁有者可以使用它來加密和解密資料。然而,資源擁有者可以授予其他使用者和資源存取金鑰的許可。在此步驟中,您會給予 CloudWatch Logs 服務主體使用金鑰的許可。此服務主體必須位於存放金鑰的相同 AWS 區域中。
最佳實務是,建議您將金鑰的使用限制為您指定的 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 金鑰的用途,僅限用於指定帳戶的 CloudWatch Logs Insights 查詢結果。
{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account_ID
:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region
.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:logs:region
:account_ID
:query-result:*" }, "StringEquals": { "aws:SourceAccount": "Your_account_ID
" } } } ] }
最後,使用下列 put-key-policy 命令新增更新的政策:
aws kms put-key-policy --key-id
key-id
--policy-name default --policy file://policy.json
步驟 3:為 KMS 金鑰與您的查詢結果建立關聯
若要為 KMS 金鑰與帳戶中的查詢結果建立關聯
使用 disassociate-kms-key 命令,如下所示:
aws logs associate-kms-key --resource-identifier "arn:aws:logs:
region
:account-id
:query-result:*" --kms-key-id "key-arn
"
步驟 4:將金鑰與帳戶中的查詢結果取消關聯
若要取消 KMS 金鑰與查詢結果的關聯,請使用以下 disassociate-kms-key 命令:
aws logs disassociate-kms-key --resource-identifier "arn:aws:logs:
region
:account-id
:query-result:*"