本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
模型自訂存取和安全性
此頁面提供所有 Amazon Bedrock 模型自訂類型的完整安全性和許可資訊,包括微調、強化微調、分割和模型操作。開始自訂模型之前,請確定您了解 Amazon Bedrock 需要的存取類型,並考量一些自訂任務和成品的保護選項。
下列各節包含不同自訂案例所需的許可。根據您的特定使用案例選擇適當的許可:
所有模型自訂任務都需要這些基本許可。這些適用於微調、分割和其他自訂類型。
建立模型自訂的 IAM 服務角色
Amazon Bedrock 需要 AWS Identity and Access Management (IAM) 服務角色才能存取您要存放模型自訂訓練和驗證資料的 S3 儲存貯體。有幾種方法可以執行此操作:
針對 手動選項,請建立 IAM 角色,並依照建立角色以將許可委派給 AWS 服務中的步驟連接下列許可。
信任關係
下列政策允許 Amazon Bedrock 擔任此角色,並執行模型自訂任務。以下顯示您可使用的範例政策。
您可以選擇性地限制跨服務混淆代理程式預防的許可範圍,方法是使用一或多個全域條件內容索引鍵搭配 Condition 欄位。如需詳細資訊,請參閱 AWS 全域條件內容索引鍵。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "bedrock.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
},
"ArnEquals": {
"aws:SourceArn": "arn:aws:bedrock:us-east-1:111122223333:model-customization-job/*"
}
}
}
]
}
存取 S3 中訓練和驗證檔案以及寫入輸出檔案的許可
連接下列政策,以允許角色存取訓練和驗證資料,以及寫入輸出資料的儲存貯體。將 Resource 清單中的值取代為您實際的儲存貯體名稱。
若要限制對儲存貯體中特定資料夾的存取,請使用資料夾路徑新增 s3:prefix 條件索引鍵。您可以遵循範例 2:取得具有特定字首之儲存貯體中的物件清單中的使用者政策範例
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::training-bucket",
"arn:aws:s3:::training-bucket/*",
"arn:aws:s3:::validation-bucket",
"arn:aws:s3:::validation-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::output-bucket",
"arn:aws:s3:::output-bucket/*"
]
}
]
}
若要將模型複製到另一個區域,您需要特定許可,這取決於角色的目前許可和模型的組態。
-
如果角色未連接 AmazonBedrockFullAccess 政策,請將下列身分型政策連接至角色,以允許最小許可能夠複製模型和追蹤複製任務。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "CopyModels",
"Effect": "Allow",
"Action": [
"bedrock:CreateModelCopyJob",
"bedrock:GetModelCopyJob",
"bedrock:ListModelCopyJobs"
],
"Resource": [
"arn:aws:bedrock:us-east-1::foundation-model/model-id"
],
"Condition": {
"StringEquals": {
"aws:RequestedRegion": [
"us-east-1"
]
}
}
}
]
}
-
(選用) 如果要複製的模型是使用 KMS 金鑰加密,請將金鑰政策連接到加密模型的 KMS 金鑰,以允許角色將其解密。
-
(選用) 如果您打算使用 KMS 金鑰加密模型複本,請將金鑰政策連接至用於加密模型所用的 KMS 金鑰,以允許角色使用金鑰加密模型。
若要在分割任務中使用教師模型的跨區域推論描述檔,服務角色除了在推論描述檔中每個區域中的模型之外 AWS 區域,還必須具有在 中叫用推論描述檔的許可。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "CrossRegionInference",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": [
"arn:aws:bedrock:us-east-1:123456789012:inference-profile/${InferenceProfileId}",
"arn:aws:bedrock:us-east-1::foundation-model/${ModelId}",
"arn:aws:bedrock:us-east-1::foundation-model/${ModelId}"
]
}
]
}
若要在分割任務中使用教師模型的跨區域推論描述檔,服務角色除了在推論描述檔中每個區域中的模型之外 AWS 區域,還必須具有在 中叫用推論描述檔的許可。
如需使用跨區域 (系統定義) 推論設定檔調用的許可,請使用下列政策作為許可政策的範本,以連接至服務角色:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "CrossRegionInference",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": [
"arn:aws:bedrock:us-east-1:123456789012:inference-profile/${InferenceProfileId}",
"arn:aws:bedrock:us-east-1::foundation-model/${ModelId}",
"arn:aws:bedrock:us-east-1::foundation-model/${ModelId}"
]
}
]
}
加密輸入和輸出資料、自訂任務或對自訂模型提出的推論請求。如需詳細資訊,請參閱自訂模型的加密。
當您執行模型自訂工作時,工作會存取 Amazon S3 儲存貯體以下載輸入資料和上傳工作指標。若要控制對資料的存取,建議您使用虛擬私有雲端 (VPC) 搭配 Amazon VPC。您可以透過設定 VPC 進一步保護資料,使得資料無法透過網際網路取得,並使用 AWS PrivateLink 建立 VPC 介面端點,以建立資料的私有連結。如需 Amazon VPC 和 如何與 Amazon Bedrock AWS PrivateLink 整合的詳細資訊,請參閱 使用 Amazon VPC 和 AWS PrivateLink 保護資料。
執行下列步驟,為模型自訂任務設定和使用 VPC 進行訓練、驗證和輸出資料。
設定 VPC 以在模型自訂期間保護資料
若要設定 VPC,請遵循設定 VPC 中的步驟。您可以依照 (範例) 使用 VPC 存取限制對 Amazon S3 資料的資料存取權中的步驟,設定 S3 VPC 端點並使用資源型 IAM 政策來限制存取內含模型自訂資料的 S3 儲存貯體,以進一步保護 VPC。
將 VPC 許可連接至模型自訂角色
完成 VPC 的設定之後,請將下列許可連接至模型自訂服務角色,以允許其存取 VPC。修改此政策,僅允許存取任務所需的 VPC 資源。將 ${{subnet-ids}} 和 security-group-id 取代為 VPC 中的值。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeVpcs",
"ec2:DescribeDhcpOptions",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface"
],
"Resource": [
"arn:aws:ec2:us-east-1:123456789012:network-interface/*"
],
"Condition": {
"StringEquals": {
"aws:RequestTag/BedrockManaged": [
"true"
]
},
"ArnEquals": {
"aws:RequestTag/BedrockModelCustomizationJobArn": [
"arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface"
],
"Resource": [
"arn:aws:ec2:us-east-1:123456789012:subnet/subnet-id",
"arn:aws:ec2:us-east-1:123456789012:subnet/subnet-id2",
"arn:aws:ec2:us-east-1:123456789012:security-group/security-group-id"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterfacePermission",
"ec2:DeleteNetworkInterface",
"ec2:DeleteNetworkInterfacePermission"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"ec2:Subnet": [
"arn:aws:ec2:us-east-1:123456789012:subnet/subnet-id",
"arn:aws:ec2:us-east-1:123456789012:subnet/subnet-id2"
],
"ec2:ResourceTag/BedrockModelCustomizationJobArn": [
"arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
]
},
"StringEquals": {
"ec2:ResourceTag/BedrockManaged": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateTags"
],
"Resource": "arn:aws:ec2:us-east-1:123456789012:network-interface/*",
"Condition": {
"StringEquals": {
"ec2:CreateAction": [
"CreateNetworkInterface"
]
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"BedrockManaged",
"BedrockModelCustomizationJobArn"
]
}
}
}
]
}
提交模型自訂任務時新增 VPC 組態
依照前幾節所述,設定 VPC 以及必要的角色和權限之後,您可以建立使用此 VPC 的模型自訂工作。
當您指定 VPC 子網路和安全群組時,Amazon Bedrock 會在其中一個子網路內建立與安全群組相關聯的彈性網路介面(ENI)。ENI 允許 Amazon Bedrock 工作連線至 VPC 中的資源。如需 ENI 的相關資訊,請參閱 Amazon VPC 使用者指南中的彈性網路介面。Amazon Bedrock 使用 BedrockManaged 和 BedrockModelCustomizationJobArn 標籤標記它建立的 ENI。
建議您在每個可用區域中至少提供一個子網路。
您可以使用安全群組建立規則,以控制 Amazon Bedrock 對 VPC 資源的存取。
您可以在主控台或透過 API 設定要使用的 VPC。選擇您偏好方法的索引標籤,然後遵循下列步驟:
- Console
-
對於 Amazon Bedrock 主控台,您可以在建立模型自訂工作時,在選用的 VPC 設定區段中指定 VPC 子網路和安全群組。如需有關設定任務的詳細資訊,請參閱提交模型自訂任務以進行微調。
對於包含 VPC 組態的任務,主控台無法為您自動建立服務角色。遵循建立模型自訂的服務角色中的指引來建立自訂角色。
- API
-
提交 CreateModelCustomizationJob 請求時,您可以如下列範例所示,包含 VpcConfig 作為請求參數,以指定要使用的 VPC 子網路和安全群組。
"vpcConfig": {
"securityGroupIds": [
"${{sg-0123456789abcdef0}}"
],
"subnets": [
"${{subnet-0123456789abcdef0}}",
"${{subnet-0123456789abcdef1}}",
"${{subnet-0123456789abcdef2}}"
]
}