

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 模型自定义访问权限和安全性
<a name="custom-model-job-access-security"></a>

此页面提供了所有 Amazon Bedrock 模型自定义类型的全面安全和权限信息，包括微调、强化微调、提炼和模型操作。在开始自定义模型之前，请确保您了解 Amazon Bedrock 需要什么样的访问权限，并考虑一些用于保护自定义作业和构件的选项。

以下各节包含不同自定义方案所需的权限。根据您的特定用例选择适当的权限：

## 基本模型自定义权限
<a name="custom-model-job-basic-permissions"></a>

所有模型定制任务都需要这些基本权限。它们适用于微调、蒸馏和其他自定义类型。

### 为模型自定义创建 IAM 服务角色
<a name="custom-model-job-service-role"></a>

Amazon Bedrock 需要一个 AWS Identity and Access Management (IAM) 服务角色才能访问您想要存储模型自定义训练和验证数据的 S3 存储桶。您可以通过几种方法来创建服务角色：
+ 使用 AWS 管理控制台自动创建服务角色。
+ 手动创建具有访问您的 S3 存储桶的相应权限的服务角色。

对于手动选项，创建一个 IAM 角色并按照[创建角色中的步骤为 AWS 服务委派权限来附加以下权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。
+ 信任关系
+ 访问 S3 中的训练数据和验证数据以及将输出数据写入 S3 的权限
+ （可选）如果您使用 KMS 密钥加密以下任何资源，则还有解密密钥的权限（请参阅[自定义模型加密](encryption-custom-job.md)）
  + 模型自定义作业或生成的自定义模型
  + 用于模型自定义作业的训练、验证和输出数据

### 信任关系
<a name="custom-model-job-service-role-trust-relationship"></a>

以下策略允许 Amazon Bedrock 担任此角色并执行模型自定义作业。下面所示为您可以使用的示例策略。

您可以选择使用带有 `Condition` 字段的一个或多个全局条件上下文键来限制权限范围，以防止[跨服务混淆代理](cross-service-confused-deputy-prevention.md)。有关更多信息，请参阅 [AWS 全局条件上下文键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。
+ 将 `aws:SourceAccount` 值设置为您的账户 ID。
+ （可选）使用 `ArnEquals` 或 `ArnLike` 条件将范围限制为账户 ID 中特定的模型自定义作业。

------
#### [ 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 中写入输出文件的权限
<a name="custom-model-job-service-role-s3-permissions"></a>

附加以下策略，以允许角色访问训练数据和验证数据以及向其中写入输出数据的存储桶。将 `Resource` 列表中的值替换为您实际的存储桶名称。

要限制对存储桶中特定文件夹的访问，请在您的文件夹路径中添加 `s3:prefix` 条件键。您可以按照[示例 2：获取存储桶中具有特定前缀的对象列表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-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/*"
            ]
        }
    ]
}
```

------

## 模型复制权限
<a name="custom-model-job-model-copying-permissions"></a>

要将模型复制到另一个区域，您需要特定的权限，具体取决于您的角色的当前权限和模型的配置。

1. 如果您的角色未附加[AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-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"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. （可选）如果要复制的模型使用 KMS 密钥加密，请将[密钥策略附加到加密模型的 KMS 密钥](encryption-custom-job.md#encryption-key-policy-decrypt)，以允许角色对其进行解密。

1. （可选）如果计划使用 KMS 密钥来加密模型，请将[密钥策略附加到用于加密模型的 KMS 密钥](encryption-custom-job.md#encryption-key-policy-encrypt)，以允许角色使用密钥来加密模型。

## 跨区域推理配置文件权限
<a name="custom-models-cross-region-inference-profile-basic-permissions"></a>

要在提炼作业中为教师模型使用跨区域推理配置文件，除了推理配置文件中每个区域的模型外 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}"
            ]
        }
    ]
}
```

------

## （可选）使用跨区域推理配置文件创建蒸馏作业的权限
<a name="custom-models-cross-region-inference-profile-permissions"></a>

要在提炼作业中为教师模型使用跨区域推理配置文件，除了推理配置文件中每个区域的模型外 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}"
            ]
        }
    ]
}
```

------

## （可选）加密模型自定义作业和构件
<a name="custom-model-job-encryption"></a>

加密输入和输出数据、自定义作业或向自定义模型发出的推理请求。有关更多信息，请参阅 [自定义模型加密](encryption-custom-job.md)。

## （可选）使用 VPC 保护模型自定义作业
<a name="vpc-model-customization"></a>

当您运行模型自定义作业时，该作业会访问您的 Amazon S3 存储桶来下载输入数据和上传作业指标。要控制对数据的访问，我们建议您使用通过 [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 创建的虚拟私有云（VPC）。您可以对 VPC 进行配置，确保数据无法通过互联网访问，然后使用 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) 创建 VPC 接口端点以建立与数据的私有连接，从而进一步保护您的数据。有关 Amazon VPC 和如何与 Amazon Bedrock AWS PrivateLink 集成的更多信息，请参阅[使用 Amazon VPC 和 AWS PrivateLink 保护您的数据](usingVPC.md)。

执行以下步骤来配置和使用 VPC，以保护模型自定义作业的训练、验证和输出数据。

**Topics**
+ [设置 VPC 以在模型自定义期间保护数据](#vpc-cm-setup)
+ [将 VPC 权限附加到模型自定义角色](#vpc-data-access-role)
+ [在提交模型自定义作业时添加 VPC 配置](#vpc-config)

### 设置 VPC 以在模型自定义期间保护数据
<a name="vpc-cm-setup"></a>

要设置 VPC，请按照[设置 VPC](usingVPC.md#create-vpc) 中的步骤操作。您可以设置 S3 VPC 端点，并按照[（示例）使用 VPC 限制对 Amazon S3 数据的访问](vpc-s3.md)中的步骤使用基于资源的 IAM 策略来限制对包含模型自定义数据的 S3 存储桶的访问，从而进一步保护 VPC。

### 将 VPC 权限附加到模型自定义角色
<a name="vpc-data-access-role"></a>

完成 VPC 设置后，将以下权限附加到[模型自定义服务角色](model-customization-iam-role.md)，以允许该角色访问 VPC。修改此策略，以仅允许访问作业所需的 VPC 资源。将*\$1\$1\$1subnet-ids\$1\$1*和*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 配置
<a name="vpc-config"></a>

按照前几节所述配置 VPC 以及所需的角色和权限后，您可以创建使用此 VPC 的模型自定义作业。

当您为任务指定 VPC 子网和安全组时，Amazon Bedrock 会在其中一个子*网中创建与您的安全组关联的弹性网络接口* (ENIs)。 ENIs 允许 Amazon Bedrock 任务连接到您的 VPC 中的资源。有关信息 ENIs，请参阅 *Amazon VPC 用户指南*中的[弹性网络接口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)。它创建的 Amazon Bedrock 标签 ENIs `BedrockManaged`和`BedrockModelCustomizationJobArn`标签。

我们建议您至少在每个可用区中提供一个子网。

您可以使用安全组来制定规则，以控制 Amazon Bedrock 对您的 VPC 资源的访问。

您可以在控制台或通过 API 配置要使用的 VPC。选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

对于 Amazon Bedrock 控制台，您可以在创建模型自定义作业时在可选的 **VPC 设置**部分中指定 VPC 子网和安全组。有关配置作业的更多信息，请参阅[提交模型定制任务进行微调](model-customization-submit.md)。

**注意**  
对于包含 VPC 配置的作业，控制台无法自动为您创建服务角色。请按照[为模型自定义创建服务角色](model-customization-iam-role.md)中的指南来创建自定义角色。

------
#### [ API ]

提交请求时，您可以将`VpcConfig`作为[CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)请求参数包括在内，以指定要使用的 VPC 子网和安全组，如以下示例所示。

```
"vpcConfig": { 
    "securityGroupIds": [
        "${{sg-0123456789abcdef0}}"
    ],
    "subnets": [
        "${{subnet-0123456789abcdef0}}",
        "${{subnet-0123456789abcdef1}}",
        "${{subnet-0123456789abcdef2}}"
    ]
}
```

------