View a markdown version of this page

用於多迴轉強化學習的靜態加密 - Amazon SageMaker AI

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

用於多迴轉強化學習的靜態加密

靜態加密的選項

Amazon SageMaker AI 中的多迴轉強化學習任務會加密所有靜態資料。您的訓練輸入資料、輸出資料 (包括模型檢查點和訓練過的模型成品),以及存放在 Amazon S3 中的中繼資料,都會使用伺服器端加密進行加密。您不需要執行任何其他組態,以確保靜態加密您的資料。

Amazon SageMaker AI 支援多迴轉 RL 任務的下列加密選項:

  • 伺服器端加密搭配 AWS 擁有的 KMS 金鑰 – 根據預設,Amazon SageMaker AI 會使用 AWS 擁有的 KMS 金鑰來加密所有訓練輸出和中繼資料。不需任何其他設定。

  • 伺服器端加密與 AWS KMS 金鑰 (SSE-KMS) – 您可以選擇性地指定客戶受管 KMS 金鑰,以加密 Amazon S3 中的訓練輸出資料。如果您在 Amazon S3 中的輸入資料已使用客戶受管金鑰加密,則執行角色必須具有解密該資料的許可。

使用客戶受管 AWS KMS 金鑰加密靜態資料

多迴轉 RL 如何使用客戶受管 KMS 金鑰

當您在多迴轉 RL 任務的輸出組態中指定客戶受管 KMS 金鑰時,Amazon SageMaker AI 會使用該金鑰來加密 Amazon S3 中的下列資源:

  • 訓練輸出資料,包括訓練過的模型成品 (LoRA 轉接器權重)

  • 中繼模型輸入/輸出 (可繼續的模型檢查點和軌跡資料)

  • MLflow 實驗資料和追蹤

當您指定客戶受管 KMS 金鑰時,Amazon SageMaker AI 會使用兩種機制來加密您的資料:

  • 授予 – 在任務建立時間,Amazon SageMaker AI 會使用發起人的登入資料,在 KMS 金鑰上建立一或兩個授予:

    • 寫入授權 – 為每個指定客戶受管金鑰的任務建立。允許服務在訓練期間加密和解密目前任務的檢查點和存放在平台中的暫存資料。

    • 讀取授權 – 僅針對在上一個任務也使用客戶受管金鑰時從上一個任務的檢查點繼續執行的反覆任務建立。允許服務解密先前任務的檢查點資料。此授予僅允許解密,不允許寫入新資料。

    所有授予會在任務完成時自動淘汰,確保服務在任務生命週期結束後不再能夠存取金鑰。

  • 執行角色 – 將輸出資料 (模型成品、檢查點) 儲存至 Amazon S3 儲存貯體時,Amazon SageMaker AI 會使用您提供的執行角色。執行角色必須具有透過 Amazon S3 使用 KMS 金鑰進行加密和解密的許可。

在訓練任務期間,會發生下列 AWS KMS 操作:

  • kms:GenerateDataKey – 在寫入加密的輸出資料 (模型成品、檢查點和日誌) 時,透過 Amazon S3 呼叫。

  • kms:Decrypt – 在讀取加密的輸入資料或先前寫入的輸出資料時,透過 Amazon S3 呼叫。

  • kms:DescribeKey – 在任務建立時由發起人身分呼叫,以驗證 KMS 金鑰組態和狀態。

  • kms:CreateGrant – 由發起人身分在任務建立時間呼叫,以授予 服務在平台內存放暫存資料的許可,供任務生命週期使用。

服務不會快取資料金鑰。每個 Amazon S3 讀取或寫入操作都會透過 Amazon S3 服務整合 AWS KMS 獨立呼叫。

設定客戶受管 KMS 金鑰

多迴轉 RL 任務僅支援對稱 AWS KMS 金鑰。不支援多區域金鑰。

設定使用客戶受管 KMS 金鑰的許可

若要搭配多迴轉 RL 任務使用客戶受管 KMS 金鑰,您必須同時設定 IAM 執行角色和 KMS 金鑰政策的許可。

執行角色許可

您傳遞給 CreateJob API 的 IAM 執行角色必須具有下列 AWS KMS 許可。這些許可允許訓練任務透過 Amazon S3 加密輸出資料和解密輸入資料。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KMSPermissionsForS3Encryption", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id", "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com" } } } ] }
  • kms:Decrypt – 從 Amazon S3 讀取加密的輸入資料和先前寫入的輸出資料時需要。

  • kms:GenerateDataKey – 加密寫入 Amazon S3 的輸出資料 (模型成品、檢查點) 時需要。

kms:ViaService 條件會將金鑰的使用限制為透過 Amazon S3 發出的請求,以防止金鑰用於其他用途。

KMS 金鑰政策

預設 KMS 金鑰政策已允許相同帳戶中的 IAM 角色使用金鑰。或者,您可以新增下列陳述式,進一步縮小存取範圍,只允許執行角色透過 Amazon S3 使用金鑰:

{ "Sid": "AllowMTRLJobEncryption", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/SageMakerExecutionRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com" } } }

若要允許發起人建立授予並描述金鑰,請將下列陳述式新增至金鑰政策:

{ "Sid": "AllowCreateGrantForCaller", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/CallerRole" }, "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "account-id" }, "StringLike": { "kms:ViaService": "sagemaker.*.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" } } }

使用客戶受管 KMS 金鑰建立多迴轉 RL 任務

若要使用客戶受管 KMS 金鑰加密輸出資料,請在OutputDataConfigCreateJob請求的 KmsKeyArn欄位中指定金鑰 ARN。如需詳細資訊,請參閱 SageMaker AI API 參考中的 CreateJob

下列範例顯示如何在 中指定 KMS 金鑰OutputDataConfig

{ "OutputDataConfig": { "S3OutputPath": "s3://your-bucket/output/", "KmsKeyArn": "arn:aws:kms:region:account-id:key/key-id" } }

如果您在 Amazon S3 中的輸入資料是以客戶受管金鑰 (SSE-KMS) 加密,請確定執行角色具有該金鑰的kms:Decrypt許可。您可以對輸入和輸出加密或不同的金鑰使用相同的金鑰。

縮小對客戶受管 KMS 金鑰的存取範圍

您可以使用下列機制來限制對客戶受管 KMS 金鑰的存取:

sagemaker:OutputKmsKeyArn 條件索引鍵

在發起人的 IAM 政策中使用 sagemaker:OutputKmsKeyArn條件金鑰,以控制可以為任務輸出加密指定哪些 KMS 金鑰。這可讓管理員在建立多迴轉 RL 任務時,強制執行僅使用核准的金鑰。如需 SageMaker AI 條件金鑰的完整清單,請參閱 Amazon SageMaker AI 的動作、資源和條件金鑰

"Condition": { "ArnEquals": { "sagemaker:OutputKmsKeyArn": "arn:aws:kms:region:account-id:key/key-id" } }
混淆代理人保護

在 KMS 金鑰政策中使用 aws:SourceArnaws:SourceAccount條件金鑰,以防止混淆代理人問題。這可確保只有來自您特定帳戶或資源的請求才能使用 金鑰。

"Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:sagemaker:region:account-id:job/*" } }

多迴轉 RL 任務的加密內容

當多迴轉 RL 任務使用客戶受管 KMS 金鑰加密資料時,Amazon SageMaker AI 會在透過 Amazon S3 提出的每個 AWS KMS 請求中包含加密內容。加密內容是一組金鑰值對,可為 AWS KMS 操作提供額外的已驗證資料 (AAD)。加密內容已登入, AWS CloudTrail 可用於 KMS 金鑰政策和授予限制,以進一步限制存取。

Amazon SageMaker AI 會針對多迴轉 RL 訓練任務使用下列加密內容金鑰值對:

{ "aws:sagemaker:finetuning-job-arn": "arn:aws:sagemaker:region:account-id:job/AgentRFT/job-name" }

對於多迴轉 RL 評估任務,加密內容會使用:

{ "aws:sagemaker:agent-rft-evaluation-job-arn": "arn:aws:sagemaker:region:account-id:job/AgentRFTEvaluation/job-name" }

加密內容會繫結至建立加密資料的特定任務。每個任務都會在加密內容中使用自己的 ARN 來加密自己的輸出。這可在加密的資料和產生資料的任務之間提供密碼編譯繫結。

在金鑰政策中使用加密內容

加密內容會透過 Amazon SageMaker AI 在任務建立時建立的授予限制自動強制執行。您不需要將加密內容條件新增至 KMS 金鑰政策,加密才能正常運作。

如果您將加密內容條件新增至 KMS 金鑰政策中的 kms:CreateGrant陳述式,則必須允許授予目前任務和反覆訓練鏈中先前的任務。下列範例允許 Amazon SageMaker AI 在加密內容中使用任何訓練任務 ARN 建立授予:

{ "Sid": "AllowCreateGrantForCaller", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/CallerRole" }, "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": "sagemaker.*.amazonaws.com", "kms:EncryptionContext:aws:sagemaker:finetuning-job-arn": "arn:aws:sagemaker:region:account-id:job/AgentRFT/*" }, "Bool": { "kms:GrantIsForAWSResource": "true" } } }
注意

如果您在加密內容中限制kms:CreateGrant為單一特定任務 ARN,反覆訓練將會失敗,因為 Amazon SageMaker AI 也會建立以先前任務 ARN 做為加密內容的讀取授權。使用萬用字元模式來允許授予您帳戶中的任何任務。

反覆訓練中的加密內容

當您執行反覆訓練任務 (後續任務從先前任務的檢查點繼續) 時,每個任務的加密內容會包含該任務自己的 ARN。Amazon SageMaker AI 會自動管理兩項 AWS KMS 授予以支援反覆訓練:

  • 寫入授予 – 允許目前任務使用目前任務的 ARN 作為加密內容來加密自己的檢查點資料。

  • 讀取授權 – 允許目前的任務使用上一個任務的 ARN 做為加密內容,從上一個任務解密檢查點資料。

這兩個授與都會在任務完成時自動淘汰。您不需要為反覆訓練新增任何其他金鑰政策陳述式,即可使用客戶受管金鑰。

中的加密內容 AWS CloudTrail

當您檢閱由多迴轉 RL 任務進行之 AWS KMS API 呼叫的 CloudTrail 日誌時,加密內容會出現在日誌項目的 requestParameters欄位中。您可以使用此資訊來判斷對資料執行特定加密或解密操作的任務。

監控與 的多迴轉 RL 互動 AWS KMS

您可以使用 AWS CloudTrail 來監控代表多迴轉 RL 任務進行的 AWS KMS API 呼叫。下列 CloudTrail 事件名稱與監控 KMS 金鑰用量相關:

  • Decrypt – 當任務從 Amazon S3 讀取加密資料時記錄。

  • GenerateDataKey – 當任務將加密資料寫入 Amazon S3 時記錄。

  • CreateGrant – 當發起人在任務建立時間建立授予時記錄。

  • DescribeKey – 當任務描述用於驗證的 KMS 金鑰時記錄。

在這些事件的 CloudTrail 日誌項目中,尋找下列值:

  • requestParameters.granteePrincipal – 對於CreateGrant事件, 會顯示收到授予的服務委託人 (job.sagemaker.amazonaws.com)。

如需記錄 AWS KMS API 呼叫的詳細資訊,請參閱《 AWS KMS 開發人員指南》中的使用 記錄 AWS KMS API 呼叫 AWS CloudTrail