5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VMware Cloud on AWSとAWSアカウントをリンクする際に何が起きるかを徹底解説してみる

Posted at

はじめに

VMware Cloud on AWS (VMC) の Software Defined Data Center (SDDC) を作成する際に AWS アカウントとリンクするステップがあります。以前の記事で Elastic Network Interface (ENI) 経由での接続の詳細について記載しましたが、今回はその前段階の AWS アカウントとリンクする際に実際に何が行われているかを、実際の環境を見ながら確認していきたいと思います。

目次

  1. VMware Cloud on AWS のアカウント構造
  2. 顧客所有の AWS アカウントとのリンク
  3. CloudFormation の実行
  4. CloudFormation の実行で何が作成されるのか?
    1. IAM ロール
    2. Lambda
  5. まとめ
  6. 参考文献
  7. 関連記事

VMware Cloud on AWSのアカウント構造

VMC では大きく分けて 2つの AWS アカウントが利用されます。まず 1つ目は VMC の SDDC が稼働する為の AWS アカウントです。VMC は AWS 上でデプロイされますので、もちろんそのリソース(例えば EC2 ベアメタルインスタンス)用の AWS アカウントが存在しますが、これは VMware が所有し、運用を行います。VMware が管理を行う為、VMC を利用するユーザーは、この AWS アカウントのマネジメントコンソールへはアクセスできません。

2つ目のアカウントは、顧客(ユーザー)が所有する AWS アカウントです。ユーザーが所有、運用を行い、もしそのアカウント内でAWSサービスを利用した場合の費用の支払いを行います。このアカウントは通常 AWS を利用する場合も全く同じものになります。

2つのアカウントをまとめると以下の表、図のようになります!

VMware Cloud on AWS SDDC アカウント 顧客所有の AWS アカウント
SDDC リソースを実行するための専用の AWS アカウント
VMware による所有、運用、支払い
AWS のサービスへのアクセス
顧客による所有、運用、支払い

image.png

1つ目の SDDC アカウントについては、ユーザーがアクセスする事はないので、VMC を利用するにあたって特に意識をする必要はありません。必要な操作は VMC コンソールを通じて行います。

顧客所有のAWSアカウントとのリンク

SDDC を作成する際に以下のように AWS アカウントとリンクをさせるステップがあります。

初めて使用する Org の場合、Org に紐づけられた AWS アカウントがまだない為、「AWS アカウントの選択」が新しい AWS アカウントに接続という表示になっており、CLOUDFORMATION テンプレートを使用して、AWS コンソールを開くボタンが表示されます。
アカウントのリンクの為にこのボタンをクリックして次のステップに進みます。

image.png

尚、検証用途で利用可能なシングルホスト(1ホスト) SDDC の場合、14日間このアカウントのリンクをスキップする事ができます。
シングルホストの場合は以下のように今はスキップが選択できます。
image.png

CloudFormationの実行

先ほどのCLOUDFORMATION テンプレートを使用して、AWS コンソールを開くボタンをクリックすると AWS のマネジメントコンソールへのサインイン画面が表示されますので、リンクさせたい AWS アカウントにてサインインを行います。

image.png

サインインをすると CloudFormation の作成の画面が表示されます。
IAM ロールの作成の承認のチェックボックスにチェックを入れ、それ以外は変更せずにスタックの作成ボタンをクリックします。
image.png

CloudFormation の展開先としてオレゴンリージョンが選択されています。特に要件がない場合、オレゴンリージョンのままにしておきましょう。SDDC を作成するリージョンに関係なく、オレゴンリージョンで実行して問題ありません。

VMware Cloud on AWS CloudFormation テンプレート (CFT) は、AWS US West(オレゴン)リージョンで実行されます。必要な権限はすべてのリージョンで有効であるため、生成された SDDC の作成場所は影響を受けませんが、CFT を実行する AWS アカウントからオレゴン リージョンへのアクセスが AWS サービス コントロール ポリシー (SCP) によって制限されないようにする必要があります。CFT がロードされたら、必要に応じて編集し、リージョンを変更することができます。CFT は任意のリージョンで実行できますが、実行された場所を記録した内部ドキュメントを保持する必要があります。オレゴン リージョンにアクセスできるメンバーが組織にいない場合は、[CloudFormation テンプレートを使用して、AWS コンソールを開く] をクリックしたときに指定したリンクから CFT をダウンロードすることができます。また、VMC 組織への AWS アカウントのリンクは 1 回のみ行われるため、実行する AWS 管理者にこのリンクを送信することもできます。
From VMware Cloud on AWS ドキュメント

CloudFormation の実行が完了し、VMC コンソールに戻ると「接続が正常に確立されました。」と表示され、次のステップに進む事ができます。
image.png

そして AWS アカウントとの接続が確立されると、その AWS アカウントの VPC、サブネット情報が取得できるようになるので、以下のように VPC、サブネットの指定をドロップダウンからできるようになります。
image.png

ちなみに一度 CloudFormation にて、その AWS アカウントをリンクさせれば、次回の SDDC 作成以降は CloudFormation を実施する必要はありません。以下のようにドロップダウンから選択できるようになります。新しい AWS アカウントをリンクさせたい場合のみ、「新しい AWS アカウントに接続」を選択し、CloudFormation スタックの作成を行います。
image.png

CloudFormationの実行で何が作成されるのか?

実行された CloudFormation のスタックのリソースを見ると 4つの Identity and Access Management (IAM) ロールと 1つの Lambda 関数が作成されている事が確認できます。
image.png

IAMロール

以下 4つの IAM ロールが作成されます。

  1. RemoteRole
  2. RemoteRolePlayer
  3. RemoteRoleService
  4. BasicLambdaRole

3つのRemoteRole〜 のIAM ロールは AmazonVPCCrossAccountNetworkInterfaceOperations という AWS 管理のポリシーがアタッチされています。

image.png

ポリシーの詳細は以下の通りとなっています。

AmazonVPCCrossAccountNetworkInterfaceOperations
{
    "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:DescribeRegions",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssignPrivateIpAddresses",
                "ec2:UnassignPrivateIpAddresses"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

3つのロールはそれぞれ別の AWS アカウントが信頼されたエンティティとして指定されています。このロールが作成されている為、SDDC 作成時に AWS アカウントをリンク後、そのアカウントが持っている VPC やサブネットの情報が見れるようになるんですね。
image.png

4つ目の BasicLambdaRole ロールは Lambda の実行ロールです。
2つのインラインポリシーが付与されていました。CloudWatch Logs への書き込みや、VPC の情報の取得の許可が含まれています。

ExecRolePolicy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:*"
            ],
            "Resource": "arn:aws:logs:*:*:*",
            "Effect": "Allow"
        }
    ]
}
root
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSubnets"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Lambda

CloudFormation スタックにて作成された Lambda 関数はインベント通知用として利用されます。
image.png
この Lambda 関数に先ほどの BasicLambdaRole ロールがアタッチされています。
image.png

まとめ

今回は SDDC を作成する際の AWS アカウントとリンクする際に実際に何が行われているかを、実際の環境を見ながら解説をしてみました。普段は CloudFormation のスタックをただ実行するだけで裏でどういった処理がされているか意識する事なく利用できる為、あまり気にしない部分かもしれませんが、詳細を知ることで、どう VMC と AWS サービスが連携されるかより詳細を理解できるようになるかと思います!
SDDC 作成の次のステップとして、指定したVPC・サブネット・ルートテーブルに何が追加されるのかは別記事でまとめておりますので、そちらも是非参照下さい。

参考文献

関連記事

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?