[VPC Lattice]AWS RAMのカスタマー管理アクセス許可を利用して共有先でのアクションを制限してみた

2024.01.28

こんにちは、AWS事業部の木村です。

今回はre:Invent 2023の「NET326 Amazon VPC Lattice architecture patterns and best practices」にて紹介されていたAWS RAMのカスタマー管理アクセス許可(カスタマーマネージドパーミッション)を利用して共有後のアクションを制限していきたいと思います。

NET326 Amazon VPC Lattice architecture patterns and best practicesのセッションレポートは以下からご参照ください。

RAMでの共有の際の許可の使い分けに関して

VPC LatticeはRAMを利用して、サービスネットワークもしくはサービスを共有することによってクロスアカウントで接続を確立することができます。

クロスアカウントでの接続の方法については以下の記事をご参照ください。

LatticeのリソースをRAMで共有する際に設定可能であるWrite権限としては以下がございます。

  • サービスネットワーク
    • vpc-lattice:CreateServiceNetworkServiceAssociation(サービスネットワークとサービスの関連付け)
    • vpc-lattice:CreateServiceNetworkVpcAssociation(サービスネットワークとVPCの関連付け)
  • サービス
    • vpc-lattice:CreateServiceNetworkServiceAssociation(サービスネットワークとサービスの関連付け)

サービスでは共有先に対してサービスネットワークとサービスの関連付けする権限のみ設定可能であるため、カスタマー管理アクセス許可を利用して絞りこむ必要がなさそうです。

ですので、サービスネットワークを共有する場合に絞ってどのようなケースでデフォルト設定とカスタマー管理アクセス許可設定を使い分けるか必要があるのか整理していきたいと思います。

デフォルト設定(マネージド型アクセス許可)でRAMを利用してクロスアカウントでの接続を確立するケース

まずデフォルトの設定でRAMの共有を行うケースを確認していきたいと思います。デフォルトの設定では設定可能なWrite権限が共に付与されることになります。

ですので、デフォルトの設定の共有を利用すると「サービスネットワークへのサービスの関連付け」と「サービスネットワークへのVPCの関連付け」を行うことが可能になります。

サービスネットワークに対して、サービスとVPC共に関連付けの許可が必要なケースにおいてはデフォルトの設定を利用しましょう。

カスタマー管理アクセス許可でRAMを利用してクロスアカウントでの接続を確立するケース

デフォルトの設定の場合には、サービスとVPC共に関連付けの許可されていました。

カスタマー管理アクセス許可の設定を行うとこれをどちらかのみに制限することができます。具体的には以下のように設定を行えます。

サービスネットワークへのサービスの関連付けのみを許可するとサービスの関連付けのみが可能になりVPCへの関連付けができなくなります。

逆に、サービスネットワークへのVPCの関連付けのみを許可すると、VPCの関連付けのみが可能になりサービスへの関連付けができなくなります。

このようにカスタマー管理アクセス許可を利用することによって、関連付けを行える対象を絞り込むことができます。

活用する具体例としては、クロスアカウントアクセスを確立したい組織外の外部アカウントがあるがサービスの関連付けのみを行いたいが、該当の外部アカウントからVPCの関連付けは許可したくないなどのケースで利用することができます。

やってみた

ここからは実施にサービスネットワークをカスタマー管理アクセス許可を利用してRAMで共有してみたいと思います。

今回はRAMの共有の作成に絞ってやっていきます。Latticeのサービスネットワークの作成や概要については以下の記事をご参照ください。

では早速作成したサービスネットワークをRAMを使って共有していきます。

ここで今回の肝となる、カスタマー管理アクセスの許可を作成していきます。赤枠の箇所を選択してカスタマー管理アクセスを作成します。

今回はVPCの関連付けのみを許可しようと思いますので、作成画面に遷移したら、「vpc-lattice:GetServiceNetwork」と「vpc-lattice:CreateServiceNetworkVpcAssociation」を選択してカスタマー管理アクセスを作成します。

画面を戻ると先ほど作成したカスタマー管理アクセスが作成されています。

こちらを選択すると許可されているアクションが変更されました!

あとの設定で共有したいアカウントに対して共有を作成しましょう。

これで共有の作成を行うことができました。

実際に関連付けを試してみる

では共有したアカウントに移り、共有の許可を行ないましたので許可設定の通りVPCの関連付けのみが行えるか試してみたいと思います。

今回の設定の想定では、サービスネットワークに対して「VPCの関連付け」は行えるが、「サービスの関連付け」は行えない想定です。

VPCの関連付けを作成から試してみます。

VPCを設定して、変更内容を保存します。

こちらは想定通り、無事設定することができました。

では許可を行なっていないサービスの関連付けはどうでしょうか? 共有先で作成したサービスを関連付けて試してみます。

画面を遷移してサービスを選択して、変更内容を保存します。

権限が存在しないため、「1 個の サービス の関連付けの作成に失敗しました。」と表示され関連付けに失敗しました。

こちらも想定通り、関連付けを行えないことが確認できましたので、当初の想定通りて「VPCの関連付け」は行えるが、「サービスの関連付け」は行えない形で共有を行うことができました。

まとめ

今回はre:Invent 2023のセッションで紹介されていたRAMのカスタマー管理アクセス許可を利用して共有先でのアクションの制限を行ってみました。

クロスアカウントで利用するケースにおいてサービスネットワークを共有する場合には。共有先で何を関連付けして貰う想定であるのかを考慮し、ガードレールの一つとしてカスタマー管理アクセス許可を設定するのをお勧めいたします。

この記事がどなたかの参考になれば幸いです。

以上AWS事業部の木村でした。