

AWS Migration Hub 重构空间目前为预览版，可能会发生变化。

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

# 将服务相关角色用于重构 Spaces
<a name="using-service-linked-roles"></a>

AWS Migration Hub 重构 Spaces 使用AWS Identity and Access Management(IAM)[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role). 服务相关角色是一种与重构空间直接关联的独特类型的 IAM 角色。服务相关角色由 Rateway 预定义，并包含该服务调用其他服务所需的一切权限。AWS服务代表您。

服务相关角色可让您更轻松地设置 Refactor Spaces，因为您不必手动添加必要的权限。只有重构空间可定义其服务相关角色的权限，除非另外定义，否则只有重构空间可以代入该角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其它 IAM 实体的权限策略。

只有在首先删除相关资源后，才能删除服务相关角色。这将保护您的 Rateway 资源，因为您不会无意中删除对资源的访问权限。

有关支持服务相关角色的其他服务的信息，请参见[用于 IAM 的 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，查找 **Service-Linked Role**（服务相关角色）列为 **Yes**（是）的服务。选择 **Yes**（是）和链接，查看该服务的服务相关角色文档。

## 重构空间的服务相关角色权限
<a name="slr-permissions"></a>

服务相关角色使用名为的服务相关角色。**AWS 服务迁移 HubbreFactor 空间的角色**然后将其与**迁移 HubbreFactor Spaces Spaces 服务角色策略**IAM 策略 — 提供访问AWSAWS Migration Hub 管理或使用的资源重构空间。

AWS ServiceRoleForMigration HUBREFactSpaces 服务相关角色信任以下服务代入该角色：
+ `refactor-spaces.amazonaws.com`

以下是 AWS ServiceRoleForMigration HUBREFactSpaces 的 Amazon 资源名称 (ARN)。

```
arn:aws:iam::111122223333:role/aws-service-role/refactor-spaces.amazonaws.com/AWSServiceRoleForMigrationHubRefactorSpaces
```

重构空间使用**AWS 服务迁移 HubbreFactor 空间的角色**执行跨账户更改时的服务相关角色。该角色必须存在于您的账户中才能使用重构空间。如果它不存在，重构空间会在以下 API 调用期间创建它：
+ `CreateEnvironment`
+ `CreateService`
+ `CreateApplication`
+ `CreateRoute`

您必须具备创建服务相关角色的 `iam:CreateServiceLinkedRole` 权限。如果服务相关角色在您的账户中不存在并且无法创建，则`Create`通话将失败。在使用重构空间之前，必须在 IAM 控制台中创建服务相关角色，除非您正在使用重构空间控制台。

在更改当前登录账户时，重构 Spaces 不使用服务相关角色。例如，创建应用程序时，重构空间会更新环境中的所有 VPC，以便它们可以与新添加的 VPC 进行通信。如果 VPC 在其他账户中，则重构 Spaces 将使用服务相关角色和`ec2:CreateRoute`在其他账户中更新路由表的权限。

为了进一步扩展创建应用程序示例，在创建应用程序时，Refactor Spaces 会更新中提供的虚拟私有云 (VPC) 中的路由表`CreateApplication`调用。这样，VPC 就可以与环境中的其他 VPC 进行通信。

呼叫者必须有`ec2:CreateRoute`我们用来更新路由表的权限。此权限存在于服务相关角色中，但 Refactor Spaces 不使用调用者账户中的服务相关角色来获取此权限。相反，调用方必须具有`ec2:CreateRoute`权限。否则，调用将会失败。

您不能使用服务相关角色升级您的权限。您的账户必须已经拥有服务相关角色的权限才能对调用帐户进行更改。这些区域有：`AWSMigrationHubRefactorSpacesFullAccess`托管策略以及授予额外所需权限的策略定义了创建重构空间资源所需的所有必要权限。服务相关角色是这些权限的子集，用于特定的跨账户调用。有关 `AWSMigrationHubRefactorSpacesFullAccess` 的更多信息，请参阅 [AWS托管策略：awsmGigation HubbreFactor 空间完全访问](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSMigrationHubRefactorSpacesFullAccess)。



### Tags
<a name="slr-permissions-tags"></a>

当重构空间在您的账户中创建资源时，它们将使用适当的重构空间资源 ID 进行标记。例如，从中创建的 Transit Gateway`CreateEnvironment`被标记为`refactor-spaces:environment-id`以环境 ID 作为值的标签。从创建 API Gateway API`CreateApplication`被标记为`refactor-spaces:application-id`以应用程序 ID 作为值。这些标签允许重构空间管理这些资源。如果编辑或删除标签，重构空间将无法再更新或删除资源。

### MigrationHubRefactorSpacesServiceRolePolicy
<a name="slr-permissions-iam-policy"></a>

使用名为 Migration ationHubreFactRolePolicy 的角色权限策略，允许重构空间对指定的资源完成以下操作：

Amazon API Gateway 操作  
 `apigateway:PUT`   
 `apigateway:POST`   
 `apigateway:GET`   
 `apigateway:PATCH`   
 `apigateway:DELETE` 

Amazon Elastic Compute Cloud 操作  
 `ec2:DescribeNetworkInterfaces`   
 `ec2:DescribeRouteTables`   
 `ec2:DescribeSubnets`   
 `ec2:DescribeSecurityGroups`   
 `ec2:DescribeVpcEndpointServiceConfigurations`   
 `ec2:DescribeTransitGatewayVpcAttachments`   
 `ec2:AuthorizeSecurityGroupIngress`   
 `ec2:RevokeSecurityGroupIngress`   
 `ec2:DeleteSecurityGroup`   
 `ec2:DeleteTransitGatewayVpcAttachment`   
 `ec2:CreateRoute`   
 `ec2:DeleteRoute`   
 `ec2:DeleteTags`   
 `ec2:DeleteVpcEndpointServiceConfigurations` 

AWS Resource Access Manager 操作  
 `ram:GetResourceShareAssociations`   
 `ram:DeleteResourceShare`   
 `ram:AssociateResourceShare`   
 `ram:DisassociateResourceShare` 

Elastic Load Balancing；操作  
 `elasticloadbalancing:DescribeTargetHealth`   
 `elasticloadbalancing:DescribeListener`   
 `elasticloadbalancing:DescribeTargetGroups`   
 `elasticloadbalancing:RegisterTargets`   
 `elasticloadbalancing:CreateLoadBalancerListeners`   
 `elasticloadbalancing:CreateListener`   
 `elasticloadbalancing:DeleteListener`   
 `elasticloadbalancing:DeleteTargetGroup`   
 `elasticloadbalancing:DeleteLoadBalancer`   
 `elasticloadbalancing:AddTags`   
 `elasticloadbalancing:CreateTargetGroup` 

以下是显示上述操作所适用资源的完整策略：

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcEndpointServiceConfigurations",
                "ec2:DescribeTransitGatewayVpcAttachments",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeTargetGroups",
                "ram:GetResourceShareAssociations"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteTransitGatewayVpcAttachment",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:DeleteTags",
                "ram:DeleteResourceShare",
                "ram:AssociateResourceShare",
                "ram:DisassociateResourceShare"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "aws:ResourceTag/refactor-spaces:environment-id": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteVpcEndpointServiceConfigurations",
            "Resource": "*",
            "Condition": {
                "Null": {
                    "aws:ResourceTag/refactor-spaces:application-id": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:CreateLoadBalancerListeners",
                "elasticloadbalancing:CreateListener",
                "elasticloadbalancing:DeleteListener",
                "elasticloadbalancing:DeleteTargetGroup"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/refactor-spaces:route-id": [
                        "*"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:PUT",
                "apigateway:POST",
                "apigateway:GET",
                "apigateway:PATCH",
                "apigateway:DELETE"
            ],
            "Resource": [
                "arn:aws:apigateway:*::/restapis",
                "arn:aws:apigateway:*::/restapis/*",
                "arn:aws:apigateway:*::/vpclinks/*",
                "arn:aws:apigateway:*::/tags",
                "arn:aws:apigateway:*::/tags/*"
            ],
            "Condition": {
                "Null": {
                    "aws:ResourceTag/refactor-spaces:application-id": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "apigateway:GET",
            "Resource": "arn:aws:apigateway:*::/vpclinks/*"
        },
        {
            "Effect": "Allow",
            "Action": "elasticloadbalancing:DeleteLoadBalancer",
            "Resource": "arn:*:elasticloadbalancing:*:*:loadbalancer/net/refactor-spaces-nlb-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:AddTags",
                "elasticloadbalancing:CreateListener"
            ],
            "Resource": "arn:*:elasticloadbalancing:*:*:loadbalancer/net/refactor-spaces-nlb-*",
            "Condition": {
                "Null": {
                    "aws:RequestTag/refactor-spaces:route-id": "false"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "elasticloadbalancing:DeleteListener",
            "Resource": "arn:*:elasticloadbalancing:*:*:listener/net/refactor-spaces-nlb-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:DeleteTargetGroup",
                "elasticloadbalancing:RegisterTargets"
            ],
            "Resource": "arn:*:elasticloadbalancing:*:*:targetgroup/refactor-spaces-tg-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:AddTags",
                "elasticloadbalancing:CreateTargetGroup"
            ],
            "Resource": "arn:*:elasticloadbalancing:*:*:targetgroup/refactor-spaces-tg-*",
            "Condition": {
                "Null": {
                    "aws:RequestTag/refactor-spaces:route-id": "false"
                }
            }
        }
    ]
}
```

必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为重构 Spaces 创建服务相关角色
<a name="create-slr"></a>

无需手动创建服务相关角色。在中创建重构 Spaces 环境、应用程序、服务或路由资源时AWS 管理控制台，AWS CLI，或者AWSAPI、Rateway Spaces 将为您创建服务相关角色。有关为重构空间创建服务相关角色的更多信息，请参阅[重构空间的服务相关角色权限](#slr-permissions).

如果删除此服务相关角色，然后需要再次创建，可以使用相同流程在账户中重新创建此角色。当您创建重构 Spaces 环境、应用程序、服务或路由资源时，Refactor Spaces 将再次为您创建服务相关角色。

## 编辑为重构 Spaces 编辑服务相关角色
<a name="edit-slr"></a>

服务相关角色不允许您编辑 AWSServiceRoleForMigration HUBREFactSpaces 服务相关角色。创建服务相关角色后，将无法更改角色名称，因为可能有多个实体引用该角色。但是可以使用 IAM 编辑角色说明。有关更多信息，请参见《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 删除重构 Spaces 的服务相关角色
<a name="delete-slr"></a>

如果不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是，您必须先清除服务相关角色的资源，然后才能手动删除它。

**注意**  
如果在您试图删除资源时重构 Spaces 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

要删除 AWS ServicerOleformMigation HubreFactSpaces 使用的重构空间资源，请使用重构空间控制台删除资源，或对资源使用删除 API 操作。有关删除 API 操作的更多信息，请参阅[重构空间 API 参考](https://docs.aws.amazon.com/migrationhub-refactor-spaces/latest/APIReference/Welcome.html).

**使用 IAM 手动删除服务相关角色**

使用 IAM 控制台，AWS CLI，或者AWS删除 AWS ServiceRoleForMigration HubbreForSpaces 服务相关角色的 API。有关更多信息，请参阅《IAM 用户指南》**的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## 服务相关角色的重构 Spaces 支持的区域
<a name="slr-regions"></a>

支持在服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [AWS 区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。