加密模型自訂任務和成品 - 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 請求至 ,代表您建立與自訂模型相關聯的主要 KMS 授權 AWS 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 開發人員指南》中的淘汰和撤銷授予的步驟來撤銷授予的存取權,或隨時修改金鑰政策來移除服務對客戶受管金鑰的存取權。如果您這樣做,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 服務的金鑰存取。

雖然您只能將一個金鑰政策連接至金鑰,但您可以將 staements 新增至政策 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子欄位映射清單的帳戶。

{ "Version": "2012-10-17", "Id": "PermissionsCustomModelKey", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "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" ] } } } ] }

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

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

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

{ "Version": "2012-10-17", "Id": "PermissionsCustomModelKey", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "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" ] } } }, { "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子欄位映射到的清單的帳戶:

{ "Version": "2012-10-17", "Id": "PermissionsCopiedModelKey", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "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" ] } } } ] }

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

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

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

{ "Version": "2012-10-17", "Id": "PermissionsCopiedModelKey", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "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" ] } } }, { "Sid": "PermissionsDecryptCopiedModel", "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子欄位映射到的清單的帳戶:

{ "Version": "2012-10-17", "Id": "PermissionsSourceModelKey", "Statement": [ { "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" ] } } } ] }

監控 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 KMS SSE-KMS 加密進行加密。 S3