CloudWatch 調查的安全性 - Amazon CloudWatch

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

CloudWatch 調查的安全性

本節包含有關 CloudWatch 調查如何與 AWS 安全性和許可功能整合的主題。

使用者權限

AWS 已建立三個 受管 IAM 政策,可供即將進行 CloudWatch 調查的使用者使用。

  • AIOpsConsoleAdminPolicy – 授予管理員在帳戶中設定 CloudWatch 調查、存取 CloudWatch 調查動作、管理信任的身分傳播,以及管理與 IAM Identity Center 整合和組織存取的能力。

  • AIOpsOperatorAccess – 授予使用者調查動作的存取權,包括開始調查。它還授予存取調查事件所需的其他許可。

  • AIOpsReadOnlyAccess – 授予 CloudWatch 調查和其他相關服務的唯讀許可。

我們建議您使用三個 IAM 主體,授予其中一個 AIOpsConsoleAdminPolicy IAM 政策、授予另一個 AIOpsOperatorAccess 政策,以及授予第三個 AIOpsReadOnlyAccess 政策。這些委託人可以是 IAM 角色 (建議) 或 IAM 使用者。然後,使用 CloudWatch 調查的使用者將使用其中一個委託人登入。

如何在調查期間控制 CloudWatch 調查可存取哪些資料

當您啟用 CloudWatch 調查功能時,您可以指定 CloudWatch 調查在調查期間存取您的資源所擁有的許可。您可以透過將 IAM 角色指派給助理來執行此操作。

若要讓 CloudWatch 調查能夠存取資源,並能夠提出建議和假設,建議的方法是將 AIOpsAssistantPolicy 連接至助理的角色。這會授予助理在調查期間分析 AWS 資源的許可。如需此政策完整內容的資訊,請參閱 CloudWatch 調查的 IAM 政策 (AIOpsAssistantPolicy)

除了連接 AIOpsAssistantPolicy 之外,您也可以選擇將 AWS generalReadOnlyAccess 連接至助理的角色。這樣做的原因是,透過發行的新 AWS 服務和動作的許可,更頻繁地 AWS 更新 ReadOnlyAccess。新動作的 AIOpsAssistantPolicy 也會更新,但頻率不高。

如果您想要縮小授予 CloudWatch 調查的許可範圍,您可以將自訂 IAM 政策連接到助理的 IAM 角色,而不是連接 AIOpsAssistantPolicy 政策。若要這樣做,請使用 AIOpsAssistantPolicy 的內容啟動自訂政策,然後移除您不想授予 CloudWatch 調查的許可。這將阻止助理根據您未授予存取權 AWS 的服務或動作提出建議。

注意

CloudWatch 調查可以存取的任何內容都可以新增到調查中,並由您的調查運算子查看。我們建議您將 CloudWatch 調查許可與調查群組運算子擁有的許可保持一致。

允許 CloudWatch 調查在調查期間解密加密的資料

如果您使用 中的客戶受管金鑰加密下列任何服務中的資料 AWS KMS,並且希望 CloudWatch 調查能夠從這些服務解密資料並將其包含在調查中,則需要將一或多個額外的 IAM 政策連接到助理的 IAM 角色。

  • AWS Step Functions

政策陳述式應包含加密內容的內容金鑰,以協助縮小許可的範圍。例如,下列政策可讓 CloudWatch 調查解密 Step Functions 狀態機器的資料。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AIOPSKMSAccessForStepFunctions", "Effect": "Allow", "Principal": { "Service": "aiops.amazonaws.com" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.*.amazonaws.com", "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:region:accountId:stateMachine:*" } } } ] }

如需有關這些類型政策和使用這些內容金鑰的詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的 kms:ViaServicekms:EncryptionContext:context-key,以及《IAM 使用者指南》中的 aws:SourceArn

調查資料的加密

對於調查資料的加密, AWS 提供兩個選項:

  • AWS 擁有的金鑰 – 根據預設,CloudWatch 調查會使用 AWS 擁有的金鑰加密靜態調查資料。您無法檢視或管理 AWS 擁有的金鑰,也無法將其用於其他用途或稽核其用途。不過,您不需要採取任何動作或變更任何設定即可使用這些金鑰。如需 AWS 擁有金鑰的詳細資訊,請參閱 AWS 擁有的金鑰

  • 客戶受管金鑰 – 這些是您自行建立和管理的金鑰。您可以選擇使用客戶受管金鑰,而不是調查資料的 AWS 擁有金鑰。如需客戶受管金鑰的詳細資訊,請參閱客戶受管金鑰

注意

CloudWatch 調查會使用 AWS 擁有的金鑰自動啟用靜態加密,無需付費。如果您使用客戶受管金鑰,則需支付 AWS KMS 費用。如需定價的詳細資訊,請參閱 AWS Key Management Service 定價

如需 的詳細資訊 AWS KMS,請參閱 AWS Key Management Service

為您的調查群組使用客戶受管金鑰

您可以將調查群組與客戶受管金鑰建立關聯,然後在該群組中建立的所有調查都會使用客戶受管金鑰來加密您的靜態調查資料。

CloudWatch 調查客戶受管金鑰使用情形有下列條件:

  • CloudWatch 調查僅支援具有預設 AWS KMS 金鑰規格 和 的對稱加密金鑰SYMMETRIC_DEFAULT,其用量定義為 ENCRYPT_DECRYPT

  • 若要讓使用者使用客戶受管金鑰建立或更新調查群組,該使用者必須具有 kms:DescribeKeykms:GenerateDataKeykms:Decrypt許可。

  • 若要讓使用者在使用客戶受管金鑰的調查群組中建立或更新調查,該使用者必須具有 kms:GenerateDataKeykms:Decrypt許可。

  • 若要讓使用者在使用客戶受管金鑰的調查群組中檢視調查資料,該使用者必須具有 kms:Decrypt許可。

設定調查以使用 AWS KMS 客戶受管金鑰

首先,如果您還沒有要使用的對稱金鑰,請使用下列命令建立新的金鑰。

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:111122223333:key/6f815f63-e628-448c-8251-e4EXAMPLE", "AWSAccountId": "111122223333", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

設定金鑰的許可

接著,設定金鑰的許可。根據預設,所有 AWS KMS 金鑰都是私有的。只有資源擁有者可以使用它來加密和解密資料。然而,資源擁有者可以授予其他使用者和資源存取金鑰的許可。在此步驟中,您會授予 AI Operations 服務主體使用金鑰的許可。此服務主體必須位於存放 KMS 金鑰的相同 AWS 區域中。

根據最佳實務,建議您將 KMS 金鑰的使用限制為您指定的 AWS 帳戶或資源。

設定許可的第一步是將金鑰的預設政策儲存為 policy.json。使用以下命令執行此操作。將 key-id 取代為您的金鑰 ID。

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

在文字編輯器中開啟 policy.json 檔案,並將下列政策區段新增至該政策。使用逗號分隔現有陳述式與新區段。這些新區段使用Condition區段來增強 AWS KMS 金鑰的安全性。如需詳細資訊,請參閱AWS KMS 金鑰和加密內容

此政策提供 服務主體的許可,原因如下:

  • aiops 服務需要取得資料金鑰的GenerateDataKey許可,並使用該資料金鑰來加密靜態儲存的資料。從資料存放區讀取資料時,需要 Decrypt許可才能解密資料。當您使用 aiops APIs讀取資料或更新調查或調查事件時,就會發生解密。更新操作會在解密後擷取現有資料、更新資料,並在加密後將更新的資料存放在資料存放區中

  • CloudWatch 警示服務可以建立調查或調查事件。這些建立操作會驗證發起人是否有權存取為調查群組定義的 AWS KMS 金鑰。政策陳述式會將 GenerateDataKeyDecrypt許可授予 CloudWatch 警示服務,以代表您建立調查。

注意

下列政策假設您遵循使用三個 IAM 主體的建議,並授予其中一個 AIOpsConsoleAdminPolicy IAM 政策、授予另一個 AIOpsOperatorAccess 政策,以及授予第三個 AIOpsReadOnlyAccess 政策。這些委託人可以是 IAM 角色 (建議) 或 IAM 使用者。然後,使用 CloudWatch 調查的使用者將使用其中一個委託人登入。

針對下列政策,您將需要這三個委託人的 ARNs。

{ "Sid": "Enable AI Operations Admin for the DescribeKey permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/{AIOpsConsoleAdmin}" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "aiops.{region}.amazonaws.com" } } }, { "Sid": "Enable AI Operations Admin and Operator for the Decrypt and GenerateDataKey permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::{account-id}:role/{AIOpsConsoleAdmin}", "arn:aws:iam::{account-id}:role/{AIOpsOperator}" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "aiops.{region}.amazonaws.com" }, "ArnLike": { "kms:EncryptionContext:aws:aiops:investigation-group-arn": "arn:aws:aiops:{region}:{account-id}:investigation-group/*" } } }, { "Sid": "Enable AI Operations ReadOnly for the Decrypt permission", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/{AIOpsReadOnly}" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "aiops.{region}.amazonaws.com" }, "ArnLike": { "kms:EncryptionContext:aws:aiops:investigation-group-arn": "arn:aws:aiops:{region}:{account-id}:investigation-group/*" } } }, { "Sid": "Enable the AI Operations service to have the DescribeKey permission", "Effect": "Allow", "Principal": { "Service": "aiops.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "{account-id}" }, "StringLike": { "aws:SourceArn": "arn:aws:aiops:{region}:{account-id}:investigation-group/*" } } }, { "Sid": "Enable the AI Operations service to have the Decrypt and GenerateDataKey permissions", "Effect": "Allow", "Principal": { "Service": "aiops.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "{account-id}" }, "StringLike": { "aws:SourceArn": "arn:aws:aiops:{region}:{account-id}:investigation-group/*" }, "ArnLike": { "kms:EncryptionContext:aws:aiops:investigation-group-arn": "arn:aws:aiops:{region}:{account-id}:investigation-group/*" } } }, { "Sid": "Enable CloudWatch to have the Decrypt and GenerateDataKey permissions", "Effect": "Allow", "Principal": { "Service": "aiops.alarms.cloudwatch.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:aiops:investigation-group-arn": "arn:aws:aiops:{region}:{account-id}:investigation-group/*" }, "StringEquals": { "aws:SourceAccount": "{account-id}", "kms:ViaService": "aiops.{region}.amazonaws.com" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudwatch:{region}:{account-id}:alarm:*" } } }

更新政策後,請輸入下列命令將其指派給金鑰。

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

將金鑰與調查群組建立關聯

當您使用 CloudWatch 主控台建立調查群組時,您可以選擇將 AWS KMS 金鑰與調查群組建立關聯。如需詳細資訊,請參閱設定操作調查

您也可以將客戶受管金鑰與現有的調查群組建立關聯。

變更您的加密組態

您可以更新調查群組,以便在使用客戶受管金鑰或服務擁有的金鑰之間進行變更。您也可以從使用一個客戶受管金鑰變更為使用另一個。當您進行此類變更時,變更會套用至變更後建立的新調查。先前的調查仍然與舊的加密組態相關聯。目前進行中的調查也會繼續使用新資料的原始金鑰。

只要先前使用的金鑰處於作用中狀態,且 Amazon Q 可以存取該金鑰以進行調查,您就可以擷取使用該方法加密的較舊調查,以及目前調查中使用上一個金鑰加密的資料。如果您刪除先前使用的金鑰或撤銷其存取權,則無法擷取使用該金鑰加密的調查資料。

跨區域推論

CloudWatch 調查使用跨區域推論將流量分散到不同 AWS 區域。雖然資料只會存放在主要區域,但使用跨區域推論時,您的調查資料可能會移至主要區域之外。所有資料都會透過 Amazon 的安全網路進行加密傳輸。如需詳細資訊,請參閱 CloudWatch 調查使用者指南中的跨區域推論

如需每個區域發生跨區域推論分佈位置的詳細資訊,請參閱下表。

支援的 CloudWatch 調查地理位置 調查區域 可能的推論區域
美國 (US) 美國東部 (維吉尼亞北部) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
美國東部 (俄亥俄) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
美國西部 (奧勒岡) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
歐洲 (歐洲) 歐洲 (法蘭克福) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (巴黎)、歐洲 (斯德哥爾摩)
歐洲 (愛爾蘭) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (巴黎)、歐洲 (斯德哥爾摩)
歐洲 (西班牙) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (巴黎)、歐洲 (斯德哥爾摩)
歐洲 (斯德哥爾摩) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (巴黎)、歐洲 (斯德哥爾摩)
亞太區域 (亞太地區) 亞太區域 (香港) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
亞太區域 (孟買) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
亞太區域 (新加坡) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
亞太區域 (悉尼) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
亞太區域 (東京) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
亞太地區 (馬來西亞) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)
亞太區域 (泰國) 美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、美國西部 (奧勒岡)