AWS Verified Access グループを AWS Resource Access Manager で他アカウントに共有してみた

2023.05.02

AWS Verified Access のユーザーガイドを読んでいて、AWS Resource Access Manager (RAM) により他の AWS アカウントにリソースを共有できることを知ったため試してみました。これにより、アクセスできるかどうかを評価するポリシーを設定する AWS Verified Access グループを 1 つの AWS アカウントで一言管理できます。

なお、AWS Verified Access の概要を知るには次のブログが参考になります。

検証の構成図

本ブログで試した環境の構成図です。バージニア北部リージョンを利用しています。

AWS Resource Access Manager (RAM) により AWS Verified Access グループを他のアカウントに共有します。共有先アカウントでアクセスする Web サイトや AWS Verified Access エンドポイントを構築します。

Verified Access グループの共有設定

共有元 AWS アカウントで Verified Access 信頼プロバイダー/インスタンス/グループを作成し、 Verified Access グループを他アカウントに共有します。


Verified Access リソースの作成

始めに Verified Access 信頼プロバイダーを作成します。プロバイダータイプは AWS IAM Identity Center を指定しています。

次に、Verified Access インスタンスを作成します。先ほど作成した信頼プロバイダーを関連付けています。

最後に、他アカウントに共有することになる Verified Access グループを作成します。ポリシーには AWS IAM Identity Center における特定のグループ ID のユーザーのみ許可するルールを記載しています。後ほど、このポリシーが共有先アカウントで適用されることを確認します。


AWS RAM によるリソース共有

作成した Verified Access グループを AWS RAM により他アカウントに共有します。

共有元アカウントで AWS RAM の「リソースの共有の作成」を実行します。

共有するリソースを選択します。Verified Access 関連のリソースで共有できるのはグループのみでした。

次に、アクセス許可を設定します。権限が事前に設定されているマネージド型を利用します。共有先アカウントにおいて Verified Access エンドポイントを作成して関連付けることはできるが、ポリシーを変更する権限は無いことが分かります。

次に、共有先となる AWS アカウントを指定します。共有先には AWS Organizations 全体や特定の OU を指定することもできます。

最後に、確認して作成すれば設定完了です。


共有先アカウントで Verified Access グループが共有されていることを確認できました。リソースの所有者は共有元の AWS アカウントとなっています。また、ポリシーを閲覧できます。

$ aws ec2 get-verified-access-group-policy --verified-access-group-id vagr-0a28f827aca5b0d45
{
    "PolicyEnabled": true,
    "PolicyDocument": "permit(principal,action,resource)\nwhen {\n    context.idc.groups has \"444884f8-c051-701b-e112-d71074388fb0\"\n};"
}

試しに、Verified Access グループを削除しようとすると Deny されます。

タグを付与する権限もありません。AWS RAM のマネージド型アクセス許可の通りです。

また、共有先アカウントには Verified Access 信頼プロバイダーと Verified Access インスタンスも存在しません。

$ aws ec2 describe-verified-access-trust-providers
{
    "VerifiedAccessTrustProviders": []
}
$ aws ec2 describe-verified-access-instances
{
    "VerifiedAccessInstances": []
}

Verified Access エンドポイントの設定

Verified Access グループの共有先アカウントで Verified Access エンドポイントを作成し、テスト用 Web サイトにアクセスしてみます。

なお、本ブログでは下図における次のリソースは作成済みとして進めます。

  • Certificate authority
  • Amazon Route 53 Hosted Zone
  • Application Load Balancer
  • Amazon EC2 Instance (Apache2 をインストール済)


Verified Access エンドポイントの作成

Verified Access エンドポイントを作成します。証明書や ALB は作成済みのリソースを指定しています。

Verified Access エンドポイントの作成後に表示される「エンドポイントドメイン」を「アプリケーションドメイン」として設定したドメインの CNAME レコードの値として設定します。

以上で Verified Access エンドポイントの作成は完了です。


アクセステスト

テスト用に次の AWS IAM Identity Center ユーザーを作成しています。

項目名 ユーザー 1 ユーザー 2
ユーザー名 developer operator
グループ名 developer-group operator-group
グループ ID 444884f8-c051-701b-e112-d71074388fb0 a4787448-90e1-709c-a3fd-14c35c346fa5
備考 ポリシーで許可しているグループ ID ポリシーで許可していないグループ ID


ユーザーdeveloperでアクセスすると、ポリシー通りアクセスできました。

ユーザーoperatorでアクセスすると、ポリシー通りアクセスできませんでした。

共有元アカウントで作成した Verified Access グループのポリシーが共有先アカウントで作成した Verified Access エンドポイントに反映されていることを確認できました。

さいごに

AWS Resource Access Manager (RAM) を利用して、AWS Verified Access グループを他の AWS アカウントに共有してみました。AWS Verified Access はとても良いサービスなので、東京リージョン対応が楽しみですね。

以上、このブログがどなたかのご参考になれば幸いです。