AWS 帐户链接是 SDDC 部署过程的一部分。对于新客户或计划仅创建几个 SDDC 的客户,该过程非常简单,几乎不需要涉及底层 AWS 对象和协议。部署多个 SDDC 的管理员可能需要更好地了解此过程的详细信息以及涉及的 AWS 角色和权限。

关于 AWS 帐户链接

VMware Cloud on AWS CloudFormation 模板 (CFT) 在 AWS 美国西部(俄勒冈)区域中运行。这不会影响生成的 SDDC 的创建位置,因为所需权限在所有区域中都有效,但 AWS 服务控制策略 (SCP) 不得限制运行 CFT 的 AWS 帐户访问俄勒冈区域。加载 CFT 后,您可以对其进行编辑,以便根据需要更改区域。您可以在任何区域中运行 CFT,但应保留一份内部文档来记录该 CFT 的运行位置。如果您的组织没有可以访问俄勒冈区域的成员,则可以从单击使用 CloudFormation 模板打开 AWS 控制台时提供的链接下载 CFT,或将该链接发送给 AWS 管理员运行,因为将 AWS 帐户链接到 VMC 组织只会发生一次。

作为帐户链接的一部分,并且在持续 SDDC 操作期间,链接的 AWS 帐户会获取所有区域中组织的 VPC 和子网清单,以便可以拥有组织可用 AWS 区域和 AZ 的最新列表。如果 SCP 限制帐户访问这些区域或 VPC,则此操作可能会失败。如果 VMware Cloud on AWS 不使用受限制的区域和 VPC,这种类型的故障是可以接受的。

我们建议在帐户链接之前,在每个 AZ 中创建一个子网。链接帐户时没有子网的任何 AZ 将无法供 VMware Cloud on AWS 将来使用,即使稍后创建子网也是如此,直到执行系统启动的重新扫描后才可使用。您可以通过再次运行 CFT 来启动重新扫描,但我们不建议对已链接且部署了 SDDC 的组织执行此操作。

有关帐户链接的详细信息,请参见 VMware Cloud Tech Zone Designlet VMware Cloud on AWS 将 VPC 连接到本机 AWS 。有关如何取消链接帐户的信息,请参见 VMware 知识库文章 83400

帐户链接使用的 AWS 角色

每次运行 VMware Cloud on AWS CFT 时,都会定义一组新的 AWS 角色,并更新 VMware Cloud on AWS 组织以将这些角色用于将来的 SDDC 部署。CFT 会授予一个或多个 VMware 拥有的 AWS 帐户对您的 AWS 帐户中这些角色的访问权限:
表 1. 帐户链接使用的 AWS 角色
角色名称 受信任实体 用于
vmware-sddc-formation-********-*-RemoteRoleService-********* 347******669 VMware Cloud on AWS 使用这些帐户查询 AWS 资源(如子网和 VPC),以及在 SDDC 部署或添加主机期间创建和关联 ENI。
vmware-sddc-formation-********-***-RemoteRolePayer-********* 909******262
vmware-sddc-formation-********-****-***-RemoteRole-************* 对于每个组织唯一的 12 位 AWS 帐户 ID。 VMware Cloud on AWS 使用此帐户执行日常操作,例如在添加或移除分段时更新路由表,或者发生 NSX Edge 迁移或故障切换。
现有 SDDC 继续使用创建 SDDC 时定义的角色,这会创建一个场景:您的 AWS 帐户中存在多组角色(和 CFT),删除其中任意角色都会影响使用该角色的 SDDC。SDDC 使用的 IAM 角色和 CFT 显示在 NSX Manager 的 已连接 VPC 页面上(也可在 SDDC 的 网络与安全选项卡中进行访问)。

CFT 创建的 IAM 角色将 AWS AssumeRole 特权授予 VMware Cloud on AWS 服务用于特定 AWS 策略的 VMware AWS 帐户。此策略由 AWS 定义和管理,出于安全原因,VMware 无权对其进行更改。如果修改或删除这些角色,帐户链接将损坏,与已连接 VPC 的通信将失败,并且您将无法再部署新的 SDDC 或向链接到该帐户的现有 SDDC 添加新主机。请联系 VMware 技术支持以请求修复。

AWS 角色和权限

要运行将 VMware Cloud on AWS 组织链接到 AWS VPC 的 CloudFormation 模板,您的 AWS 帐户必须具有运行 CFT 所需的 AWS 权限中显示的权限。帐户链接会为帐户链接使用的 AWS 角色中所示的 VMware 拥有的帐户设置对 AWS 定义的策略 AmazonVPCCrossAccountNetworkInterfaceOperations 的 AWS AssumeRole 访问权限,从而授予持续 SDDC 操作所需的 AWS 权限中显示的权限。

运行 CFT 所需的 AWS 权限

运行此模板的帐户必须具有这些权限。

{
 "Version": "2012-10-17",
 "Statement": [
 {
 "Effect": "Allow",
 "Action": [
 "ec2:DescribeRouteTables",
 "ec2:CreateRoute",
 "ec2:DeleteRoute",
 "ec2:ReplaceRoute"
 ],
 "Resource": [
 "*"
 ]
 },
 {
 "Effect": "Allow",
 "Action": [
 "ec2:DescribeNetworkInterfaces",
 "ec2:CreateNetworkInterface",
 "ec2:DeleteNetworkInterface",
 "ec2:CreateNetworkInterfacePermission",
 "ec2:ModifyNetworkInterfaceAttribute",
 "ec2:DescribeNetworkInterfaceAttribute",
 "ec2:DescribeVpcs",
 "ec2:DescribeSubnets"
 ],
 "Resource": [
 "*"
 ]
 },
 {
 "Effect": "Allow",
 "Action": [
 "ec2:AssignPrivateIpAddresses",
 "ec2:UnassignPrivateIpAddresses"
 ],
 "Resource": [
 "*"
 ]
 },
 {
 "Effect": "Allow",
 "Action": [
 "cloudformation:CreateStack",
 "cloudformation:DescribeStacks",
 "cloudformation:DescribeStackEvents",
 "cloudformation:DescribeStackResource",
 "cloudformation:DescribeStackResources",
 "cloudformation:GetTemplateSummary",
 "cloudformation:ListStackResources",
 "cloudformation:GetTemplate",
 "cloudformation:ListChangeSets",
 "cloudformation:GetStackPolicy"
 ],
 "Resource": "*"
 },
 {
 "Effect": "Allow",
 "Action": [
 "iam:CreateRole",
 "iam:CreatePolicy",
 "iam:AttachRolePolicy",
 "iam:GetRole",
 "iam:PassRole",
 "iam:PutRolePolicy",
 "lambda:CreateFunction",
 "lambda:InvokeFunction",
 "lambda:GetFunctionConfiguration",
 "lambda:GetFunction",
 "cloudformation:DescribeStackResource",
 "cloudformation:DescribeStackResources"
 ],
 "Resource": "*"
 }
 ]
}
持续 SDDC 操作所需的 AWS 权限
帐户链接完成后,只需要这些权限(由 IAM 角色授予)。
重要说明:

不得更改其中的任何 AWS 角色和权限。这样做将导致 SDDC 无法运行。

要查看关联的策略权限文档,请登录到 AWS 控制台并打开 https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn:aws:iam::aws:policy/AmazonVPCCrossAccountNetworkInterfaceOperations$jsonEditor。以下是该策略的摘要描述。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeRouteTables",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:ReplaceRoute"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeNetworkInterfaces",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DescribeNetworkInterfacePermissions",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DescribeNetworkInterfaceAttribute",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssignPrivateIpAddresses",
                "ec2:UnassignPrivateIpAddresses"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

由于 VMware Cloud on AWS 需要这些 AWS 权限才能进行 SDDC 部署和持续操作(例如路由表更新和主机替换),因此您需要确保角色可以根据需要使用 AWS AssumeRole 功能,并且不会被 AWS 功能(如 Control Tower Guardrails 或服务控制策略 (SCP))阻止。IAM 角色只需要一组最小权限,所有这些权限均由 AWS 在策略 AmazonVPCCrossAccountNetworkInterfaceOperations 中进行管理。这是模板创建的 IAM 角色授予的唯一访问权限。

注:

CFT 还会创建一个 lambda 函数,并为其授予对帐户中的“描述 VPC”、“描述路由表”和“描述子网”的访问权限,以及创建日志的权限。运行 CFT 时,此 lambda 函数仅使用一次。其用途是向 VMware 注册 Cloud Formation 堆栈的完成情况,并提供所创建角色的 ARN。帐户注册完成并在从 VMC 控制台部署 SDDC 工作流期间显示在选择 AWS 帐户下拉控件后,如果需要,可以删除 Lambda 函数 NotifyOfStatusvmware-sddc-formation-******-*****-BasicLambdaRole-****** 角色。