自訂模型的加密 - Amazon Bedrock

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

自訂模型的加密

Amazon Bedrock 會使用您的訓練資料搭配 CreateModelCustomizationJob 動作,或透過主控台來建立自訂模型,該模型是 Amazon Bedrock 基礎模型的微調版本。您的自訂模型由 管理和存放AWS。

Amazon Bedrock 使用您提供的微調資料,僅用於微調 Amazon Bedrock 基礎模型。Amazon Bedrock 不會將微調資料用於其他任何用途。訓練資料不會用於訓練基礎 Titan 模型,也不會用於分發給第三方。其他使用情況資料 (例如使用時間戳記、登入帳號 ID 和服務記錄的其他資訊) 也不會用於訓練模型。

微調工作完成後,Amazon Bedrock 不會儲存您提供用於微調的訓練或驗證資料。

請注意,經微調的模型可以重播一些微調資料,同時產生完成。如果應用程式不應以任何形式公開微調資料,則應先將機密資料從訓練資料篩掉。如果您已錯誤地使用機密資料建立自訂模型,則可以刪除該自訂模型、篩掉訓練資料中的機密資訊,然後新建模型。

對於加密自訂模型 (包括複製的模型),Amazon Bedrock 為您提供兩個選項:

  1. AWS 擁有的金鑰 – 根據預設,Amazon Bedrock 會使用 加密自訂模型AWS 擁有的金鑰。您無法檢視、管理或使用AWS 擁有的金鑰或稽核其使用方式。不過,您不需要採取任何動作或變更任何程式,即可保護加密您資料的金鑰。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的 AWS 擁有的金鑰

  2. 客戶自管金鑰:您可以選擇使用您自己管理的客戶自管金鑰來加密自訂模型。如需詳細資訊AWS KMS keys,請參閱《 AWS Key Management Service開發人員指南》中的客戶受管金鑰

注意

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

如需 的詳細資訊AWS KMS,請參閱 AWS Key Management Service開發人員指南

Amazon Bedrock 如何在 中使用授予AWS KMS

如果您指定客戶自管金鑰來加密模型自訂或模型複本任務的自訂模型,Amazon Bedrock 會透過將 CreateGrant 請求傳送至 AWS KMS,以代表您建立與自訂模型相關聯的主要 KMS 授予。此授予允許 Amazon Bedrock 存取和使用客戶自管金鑰。中的授予AWS KMS用於授予 Amazon Bedrock 存取客戶帳戶中 KMS 金鑰的權限。

Amazon Bedrock 需要主要授予,才能在下列內部操作中使用客戶自管金鑰:

  • 傳送 DescribeKey 請求至 AWS KMS,以驗證您在建立任務時輸入的對稱客戶受管 KMS 金鑰 ID 是否有效。

  • GenerateDataKeyDecrypt 請求傳送至 AWS KMS,以產生由客戶受管金鑰加密的資料金鑰,並解密加密的資料金鑰,以便用來加密模型成品。

  • 傳送 CreateGrant 請求至 AWS KMS,以使用上述操作的子集 (DescribeKeyGenerateDataKeyDecrypt) 建立縮小範圍的次要授予,以非同步執行模型自訂、模型複製或佈建輸送量建立。

  • Amazon Bedrock 會在建立授予期間指定淘汰主體,因此服務可以傳送 RetireGrant 請求。

您可以完整存取客戶受管AWS KMS金鑰。您可以依照《AWS Key Management Service 開發人員指南》https://docs.aws.amazon.com/kms/latest/developerguide/淘汰和撤銷授予的步驟來撤銷授予的存取權,或隨時修改金鑰政策來移除服務對客戶自管金鑰的存取權。如果您這樣做,Amazon Bedrock 將無法存取由金鑰加密的自訂模型。

自訂模型之主要和次要授予的生命週期

  • 主要授予的生命週期很長,只要相關聯的自訂模型仍在使用中,就會保持作用中狀態。刪除自訂模型時,對應的主要授予會自動遭到淘汰。

  • 次要授予是短期的。一旦 Amazon Bedrock 代表客戶執行的操作完成,這些授予就會自動遭到淘汰。例如,模型複本任務完成後,允許 Amazon Bedrock 加密複製自訂模型的次要授予將立即遭到淘汰。

了解如何建立客戶自管金鑰,以及如何將金鑰政策連接至其中

若要使用您建立和管理的金鑰來加密 AWS資源,請執行下列一般步驟:

  1. (先決條件) 確保 IAM 角色具有 CreateKey 動作的許可。

  2. 請依照建立金鑰中的步驟,使用AWS KMS主控台或 CreateKey 操作來建立客戶受管金鑰。

  3. 建立金鑰會傳回 Arn 金鑰,可用於需要使用金鑰的操作 (例如,提交模型自訂任務執行模型推論時)。

  4. 建立金鑰政策並將其連接至具有必要許可的金鑰。若要建立金鑰政策,請遵循《 AWS Key Management Service開發人員指南》中的建立金鑰政策的步驟。

自訂和複製模型的許可和金鑰政策

建立 KMS 金鑰後,您就可以將金鑰政策連接至該金鑰。金鑰政策是您連接至客戶自管金鑰以控制其存取的資源型政策。每個客戶自管金鑰都必須只有一個金鑰政策,其中包含決定誰可以使用金鑰及其使用方式的陳述式。在建立客戶自管金鑰時,可以指定金鑰政策。您可以隨時修改金鑰政策,但變更在整個 AWS KMS 中變成可用之前,可能會有短暫的延遲。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》https://docs.aws.amazon.com/kms/latest/developerguide/中的管理客戶受管金鑰的存取

下列 KMS 動作會用於加密自訂和複製模型的金鑰:

  1. kms:CreateGrant:允許 Amazon Bedrock 服務主體透過授予操作存取指定的 KMS 金鑰,藉此為客戶自管金鑰建立授予。如需授予的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的 AWS KMS 中的授予

    注意

    Amazon Bedrock 也會設定淘汰主體,並在不再需要後自動淘汰授予。

  2. kms:DescribeKey:提供客戶自管金鑰的詳細資訊,以便 Amazon Bedrock 可以驗證金鑰。

  3. kms:GenerateDataKey:提供客戶自管金鑰詳細資訊,以允許 Amazon Bedrock 驗證使用者存取。Amazon Bedrock 會將產生的密文與自訂模型一起存放,用作為對自訂模型使用者的額外驗證檢查。

  4. kms:Decrypt:解密儲存的密文,以驗證角色對加密自訂模型的 KMS 金鑰是否具有適當的存取權。

作為最佳安全實務,我們建議您包含 kms:ViaService 條件索引鍵,以限制對 Amazon Bedrock 服務金鑰的存取。

雖然您只能將單一金鑰政策連接至金鑰,但您可以將陳述式新增至政策 Statement 欄位中的清單,以將多個陳述式連接至金鑰政策。

下列陳述式與加密自訂和複製的模型相關:

若要使用客戶自管金鑰來加密自訂或複製的模型,請在金鑰政策中包含下列陳述式,以允許加密模型。在 Principal 欄位中,將您要允許加密和解密金鑰的帳戶新增至 AWS 子欄位對應的清單。如果您使用 kms:ViaService 條件索引鍵,您可以為每個區域新增一行,或使用 * 取代 ${region},以允許支援 Amazon Bedrock 的所有區域。

{ "Sid": "PermissionsEncryptDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}:role/${role}" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}.amazonaws.com" ] } } }

若要允許存取使用 KMS 金鑰加密的模型,請在金鑰政策中包含下列陳述式,以允許金鑰解密。在 Principal 欄位中,將您要允許解密金鑰的帳戶新增至 AWS 子欄位對應的清單。如果您使用 kms:ViaService 條件索引鍵,您可以為每個區域新增一行,或使用 * 取代 ${region},以允許支援 Amazon Bedrock 的所有區域。

{ "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}:role/${role}" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}.amazonaws.com" ] } } }

若要了解您需要建立的金鑰政策,請展開與使用案例對應的區段:

如果您計劃加密使用 KMS 金鑰自訂的模型,則該金鑰的金鑰政策將依使用案例而有所不同。展開與使用案例對應的區段:

如果將調用自訂模型的角色與將自訂模型的角色是相同的,您只需要來自 加密模型 的陳述式。在下列政策範本的 Principal 欄位中,將您要允許自訂並調用自訂模型的帳戶新增到 AWS 子欄位對應的清單。

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCustomModelKey", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

如果將調用自訂模型的角色與將自訂模型的角色是不同的,您需要來自 加密模型允許存取加密的模型 的陳述式。修改下列政策範本中的陳述式,如下所示:

  1. 第一個陳述式允許加密和解密金鑰。在 Principal 欄位中,將您要允許自訂模型的帳戶新增到 AWS 子欄位對應的清單。

  2. 第二個陳述式僅允許解密金鑰。在 Principal 欄位中,將只允許調用自訂模型的帳戶新增至 AWS 子欄位對應的清單。

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCustomModelKey", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } }, { "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

當您複製已擁有或已與您共用的模型時,您可能需要管理最多兩個金鑰政策:

如果您計劃使用 KMS 金鑰來加密複製的模型,金鑰的金鑰政策將依使用案例而有所不同。展開與使用案例對應的區段:

如果將調用複製模型的角色與將建立模型複本的角色是相同的,則只需要來自 加密模型 的陳述式。在下列政策範本的 Principal 欄位中新增帳戶,您要允許這些帳戶將複製的模型複製並調用到 AWS 子欄位對應的清單:

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCopiedModelKey", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

如果將調用複製模型的角色與將建立模型複本的角色不同,您需要來自 加密模型允許存取加密的模型 的陳述式。修改下列政策範本中的陳述式,如下所示:

  1. 第一個陳述式允許加密和解密金鑰。在 Principal 欄位中,將您要允許建立複製模型的帳戶新增至 AWS 子欄位對應的清單。

  2. 第二個陳述式僅允許解密金鑰。在 Principal 欄位中,將只允許調用複製模型的帳戶新增至 AWS 子欄位對應的清單。

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCopiedModelKey", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } }, { "Sid": "PermissionsDecryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

如果您要複製的來源模型是使用 KMS 金鑰加密,請將來自 允許存取加密的模型 的陳述式連接到加密來源模型之金鑰的金鑰政策。此陳述式允許模型複本角色解密對來源模型進行加密的金鑰。在下列政策範本的 Principal 欄位中新增帳戶,您要允許這些帳戶將來源模型複製到 AWS 子欄位對應的清單:

JSON
{ "Version":"2012-10-17", "Id": "PermissionsSourceModelKey", "Statement": [ { "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

監控 Amazon Bedrock 服務的加密金鑰

當您搭配 Amazon Bedrock 資源使用AWS KMS客戶受管金鑰時,您可以使用 AWS CloudTrailAmazon CloudWatch Logs 來追蹤 Amazon Bedrock 傳送的請求AWS KMS。

以下是 CreateGrant 監控 Amazon Bedrock 呼叫的 KMS 操作以建立主要授權的範例AWS CloudTrail事件:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01", "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelCopy/SampleUser01", "accountId": "111122223333", "accessKeyId": "EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/RoleForModelCopy", "accountId": "111122223333", "userName": "RoleForModelCopy" }, "attributes": { "creationDate": "2024-05-07T21:46:28Z", "mfaAuthenticated": "false" } }, "invokedBy": "bedrock.amazonaws.com" }, "eventTime": "2024-05-07T21:49:44Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "bedrock.amazonaws.com", "userAgent": "bedrock.amazonaws.com", "requestParameters": { "granteePrincipal": "bedrock.amazonaws.com", "retiringPrincipal": "bedrock.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "operations": [ "Decrypt", "CreateGrant", "GenerateDataKey", "DescribeKey" ] }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

訓練、驗證和輸出資料的加密

當您使用 Amazon Bedrock 執行模型自訂任務時,您會將輸入檔案存放在 Amazon S3 儲存貯體中。當任務完成時,Amazon Bedrock 會將輸出指標檔案存放在您在建立任務時指定的 S3 儲存貯體中,以及由 控制的 S3 儲存貯體中產生的自訂模型成品AWS。

會使用 S3 儲存貯體的加密組態對輸出檔案進行加密。根據您設定 S3 儲存貯體的方式,會使用 SSE-S3 伺服器端加密AWS KMSSSE-KMS 加密加密這些項目。