Amazon OpenSearch 無伺服器中的加密 - Amazon OpenSearch 服務

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

Amazon OpenSearch 無伺服器中的加密

靜態加密

您建立的每個 Amazon OpenSearch 無伺服器集合都會受到靜態資料加密的保護,這項安全功能可協助防止未經授權存取您的資料。靜態加密使用 AWS Key Management Service (AWS KMS) 來儲存和管理您的加密金鑰。其會使用 256 位元金鑰的進階加密標準演算法 (AES-256) 來執行加密。

加密政策

您可以使用加密政策,透過自動將加密金鑰指派給符合特定名稱或模式的新建集合,大規模管理許多集合。

建立加密政策時,您可以指定字首,這是以萬用字元為基礎的比對規則 (例如 MyCollection*),或輸入單一集合名稱。然後,當您建立符合該名稱或字首模式的集合時,系統會將該政策和對應的 KMS 金鑰自動指派給該集合。

加密政策包含下列元素:

  • Rules:一個或多個集合比對規則,每個規則都包含下列子元素:

    • ResourceType:目前唯一的選項是「集合」。加密政策僅套用至集合資源。

    • Resource:政策套用至的一個或多個集合名稱或模式 (格式為 collection/<collection name|pattern>)。

  • AWSOwnedKey:是否要使用 AWS 擁有的金鑰。

  • KmsARN:如果您將 AWSOwnedKey 設定為 false,請指定用於加密關聯集合之 KMS 金鑰的 Amazon Resource Name (ARN)。如果包括此參數, OpenSearch 無伺服器會忽略該AWSOwnedKey參數。

下列範例政策會將客戶受管金鑰指派給任何名為 autopartsinventory 的未來集合,以及以「銷售」一詞開頭的集合:

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":false, "KmsARN":"arn:aws:encryption:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36" }

即使政策符合集合名稱,如果資源模式包含萬用字元 (*),您也可以選擇在集合建立期間覆寫此自動指派。如果您選擇覆寫自動金鑰指派, OpenSearch Serverless 會為您建立名為 auto < 集合名稱 > 的加密原則,並將其附加至集合。該政策最初只適用於單一集合,但您可以加以修改以包含其他集合。

如果您將政策規則修改為不再符合某個集合,則系統不會將關聯的 KMS 金鑰從該集合取消指派。集合一律會使用其初始加密金鑰保持加密的狀態。如果您想要變更集合的加密金鑰,您必須重新建立集合。

如果來自多個政策的規則符合集合,則會使用更明確的規則。例如,如果某個政策包含的規則適用於 collection/log*,而另一個適用於 collection/logSpecial,則會使用第二個政策的加密金鑰,因為該金鑰更加明確。

如果策略中已有名稱或前置詞存在於另一個策略中,則無法在策略中使用該名稱或前綴。 OpenSearch 如果您嘗試在不同的加密策略中設定相同的資源模式,無伺服器會顯示錯誤。

考量事項

設定集合的加密時應考慮以下事項:

  • 所有無伺服器集合都需要靜態加密。

  • 您可以選擇使用客戶受管金鑰或 AWS 擁有的金鑰。如果您選擇客戶受管金鑰,建議您啟用自動金鑰輪換

  • 建立集合之後,便無法變更集合的加密金鑰。在您第一次設定商品系列時,請仔細選擇 AWS KMS 要使用的項目。

  • 集合只能符合單一加密政策。

  • 具有唯一 KMS 金鑰的集合無法與其他集合共用 OpenSearch 運算單位 (OCU)。每個具有唯一金鑰的集合都需要專屬的 4 個 OCU。

  • 如果您更新加密政策中的 KMS 金鑰,則變更不會影響已指派 KMS 金鑰的現有相符集合。

  • OpenSearch 無伺服器不會明確檢查客戶受管金鑰的使用者權限。如果使用者有權透過資料存取政策存取集合,他們就能夠擷取和查詢透過關聯金鑰加密的資料。

必要許可

OpenSearch 無伺服器的靜態加密使用下列 AWS Identity and Access Management (IAM) 許可。您可以指定 IAM 條件,將使用者限制在特定集合內。

  • aoss:CreateSecurityPolicy:建立加密政策。

  • aoss:ListSecurityPolicies:列出連接的所有加密政策和集合。

  • aoss:GetSecurityPolicy:查看特定加密政策的詳細資訊。

  • aoss:UpdateSecurityPolicy:修改加密政策。

  • aoss:DeleteSecurityPolicy:刪除加密政策。

下列身分型存取政策範例提供使用者透過資源模式 collection/application-logs 管理加密政策所需的最低許可。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "aoss:CreateSecurityPolicy", "aoss:UpdateSecurityPolicy", "aoss:DeleteSecurityPolicy", "aoss:GetSecurityPolicy" ], "Resource":"*", "Condition":{ "StringEquals":{ "aoss:collection":"application-logs" } } }, { "Effect":"Allow", "Action":[ "aoss:ListSecurityPolicies" ], "Resource":"*" } ] }

客戶受管金鑰的金鑰政策

如果您選取客戶管理的金鑰來保護集合,則 OpenSearch 無伺服器會取得代表進行選取的主體使用 KMS 金鑰的權限。該主體 (使用者或角色) 必須具有 OpenSearch 無伺服器所需之 KMS 金鑰的權限。您可以在金鑰政策IAM 政策中提供這些許可。

OpenSearch 無伺服器至少需要客戶管理金鑰的下列權限:

例如:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "aoss.us-east-1.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }

OpenSearch 無伺服器建立具有「公里:」和「KMS: GenerateDataKey 解密」權限的授權。

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的 在 AWS KMS中使用金鑰政策

OpenSearch 無伺服器如何使用授權 AWS KMS

OpenSearch 無伺服器需要授權才能使用客戶管理的金鑰。

當您使用新金鑰在帳戶中建立加密原則時, OpenSearch Serverless 會將CreateGrant要求傳送至 AWS KMS,以代表您建立授權。中的授權 AWS KMS 用於授予客戶帳戶中 KMS 金鑰的 OpenSearch 無伺服器存取權。

OpenSearch 無伺服器需要授權,才能在下列內部作業中使用您的客戶管理金鑰:

  • 傳送DescribeKey AWS KMS 要求以驗證所提供的對稱客戶管理金鑰 ID 是否有效。

  • 傳送GenerateDataKey要求至 KMS 金鑰,以建立用來加密物件的資料金鑰。

  • 發送解密請求 AWS KMS 以解密加密的數據密鑰,以便將其用於加密您的數據。

您可以隨時撤銷授予的存取權,或移除服務對客戶受管金鑰的存取權。如果您這樣做, OpenSearch Serverless 將無法存取客戶管理金鑰加密的任何資料,這會影響依賴該資料的所有作業,進而導致非同步工作流程中的AccessDeniedException錯誤和失敗。

OpenSearch 當指定的客戶受管金鑰未與任何安全性原則或集合相關聯時,無伺服器會在非同步工作流程中淘汰授權。

建立加密政策 (主控台)

在加密政策中,您可以指定政策套用至的 KMS 金鑰和一系列集合模式。當您建立集合時,系統會將對應的 KMS 金鑰指派給符合政策中定義模式之一的任何新集合。建議您先建立加密政策,然後再開始建立集合。

建立 OpenSearch 無伺服器加密原則
  1. 打開 Amazon OpenSearch 服務控制台 https://console.aws.amazon.com/aos/home.

  2. 在左側導覽面板中,展開 Serverless (無伺服器),然後選擇 Encryption policies (加密政策)。

  3. 選擇 Create encryption policy (建立加密政策)。

  4. 提供政策的名稱和描述。

  5. Resources (資源) 下,輸入此加密政策的一個或多個資源模式。目前 AWS 帳戶 和區域中符合其中一種模式的任何新建集合都會自動指派給此政策。例如,如果您輸入 ApplicationLogs (不含萬用字元),然後再使用該名稱建立集合,則會將該政策和對應的 KMS 金鑰指派給該集合。

    您也可以提供字首,例如 Logs*,此字首會將政策指派給名稱以 Logs 開頭的任何新集合。透過使用萬用字元,您可以大規模管理多個集合的加密設定。

  6. Encryption (加密) 下,選擇要使用的 KMS 金鑰。

  7. 選擇建立

下一步:建立集合

設定一個或多個加密政策後,您就可以開始建立與這些政策中定義之規則相符的集合。如需說明,請參閱建立集合

在集合建立的「加密」步驟中, OpenSearch Serverless 會通知您您輸入的名稱與加密原則中定義的模式相符,並自動將對應的 KMS 金鑰指派給集合。如果資源模式包含萬用字元 (*),您可以選擇覆寫相符項目並選取自己的金鑰。

建立加密政策 (AWS CLI)

若要使用 OpenSearch 無伺服器 API 作業建立加密原則,您可以指定資源模式和 JSON 格式的加密金鑰。要CreateSecurityPolicy求接受內嵌政策和 .json 檔案。

加密政策採用下列格式。此範例 my-policy.json 檔案符合任何名為 autopartsinventory 的未來集合,以及名稱以 sales 開頭的任何集合。

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":false, "KmsARN":"arn:aws:encryption:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36" }

若要使用服務擁有的金鑰,請將 AWSOwnedKey 設定為 true

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":true }

下列請求會建立加密政策:

aws opensearchserverless create-security-policy \ --name sales-inventory \ --type encryption \ --policy file://my-policy.json

然後,使用 CreateCollectionAPI 作業建立一或多個符合其中一個資源模式的集合。

檢視加密政策

在建立集合之前,您可能想要預覽帳戶中現有的加密政策,以查看哪個政策的資源模式與集合名稱相符。下列ListSecurityPolicies要求會列出您帳戶中的所有加密政策:

aws opensearchserverless list-security-policies --type encryption

該請求會傳回所有已設定加密政策的相關資訊。使用 policy 元素的內容以檢視政策中定義的模式規則:

{ "securityPolicyDetails": [ { "createdDate": 1663693217826, "description": "Sample encryption policy", "lastModifiedDate": 1663693217826, "name": "my-policy", "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}", "policyVersion": "MTY2MzY5MzIxNzgyNl8x", "type": "encryption" } ] }

若要檢視有關特定原則 (包括 KMS 金鑰) 的詳細資訊,請使用GetSecurityPolicy命令。

更新加密政策

如果您更新加密政策中的 KMS 金鑰,則變更只會套用至與設定的名稱或模式相符的新建集合。這不會影響已指派 KMS 金鑰的現有集合。

這也適用於政策比對規則。如果您新增、修改或刪除規則,則變更僅適用於新建集合。如果您修改政策的規則,使其不再符合集合的名稱,則現有集合不會遺失其指派的 KMS 金鑰。

如果要更新 OpenSearch 無伺服器主控台中的加密原則,請選擇「加密原則」,選取要修改的原則,然後選擇「編輯」。進行變更,然後選擇 Save (儲存)。

若要使用 OpenSearch 無伺服器 API 更新加密原則,請使用此UpdateSecurityPolicy作業。下列請求會使用新的政策 JSON 文件更新加密政策:

aws opensearchserverless update-security-policy \ --name sales-inventory \ --type encryption \ --policy-version 2 \ --policy file://my-new-policy.json

刪除加密政策

當您刪除加密政策時,目前使用政策中定義之 KMS 金鑰的任何集合都不會受到影響。若要刪除 OpenSearch 無伺服器主控台中的原則,請選取該原則,然後選擇刪除

您也可以使用以下DeleteSecurityPolicy操作:

aws opensearchserverless delete-security-policy --name my-policy --type encryption

傳輸中加密

在 OpenSearch 無伺服器中,集合中的所有路徑都會使用具有業界標準 AES-256 加密的傳輸層安全性 1.2 (TLS) 進行加密。您也可以透過 TLS 1.2 存取開放搜尋的所有 API 和儀表板。TLS 是一組業界標準的加密通訊協定,用於加密透過網路交換的資訊。