AWS Resource Access Managerとは
AWS Resource Access Manager(以下 RAM)とは、AWS の異なるアカウント間でリソースの共有が行えるサービスです。複数アカウントを運用している場合、RAM を使用することで容易にリソースの共有を行うことができます。
以下公式説明文
AWS Resource Access Manager (RAM) は、組織内の AWS アカウント間または AWS Organizations 内の組織単位 (OU) 間で、ならびにサポートされているリソースタイプの IAM ロールおよび IAM ユーザーとの間で、リソースを安全に共有するのに役立ちます。AWS RAM を使用して、トランジットゲートウェイ、サブネット、AWS License Manager ライセンス設定、Amazon Route 53 Resolver ルール、およびその他のリソースタイプを共有できます。
多くの組織では、管理や請求の分離を行い、エラーの影響を制限するために複数のアカウントを使用しています。AWS RAM を使用すると、複数の AWS アカウントで重複するリソースを作成する必要はありません。これにより、所有するすべてのアカウントのリソースを管理するための運用上のオーバーヘッドが削減されます。代わりに、マルチアカウント環境では、リソースを 1 回作成し、AWS RAM を使用して、リソース共有を作成することでアカウント間でそのリソースを共有できます。リソース共有を作成するときは、共有するリソースを選択し、リソースタイプごとに AWS RAM マネージド許可を選択し、リソースにアクセスできるユーザーを指定します。AWS RAM は追加料金なしでご利用いただけます。
共有可能なリソースタイプは現時点で以下の通りです。
- AWS App Mesh
- Amazon Aurora
- AWS Certificate Manager Private Certificate Authority
- AWS CodeBuild
- Amazon EC2
- EC2 Image Builder
- AWS Glue
- AWS License Manager
- AWS Network Firewall
- AWS Outposts
- AWS Resource Groups
- Amazon Route 53
- AWS Systems Manager Incident Manager
- Amazon VPC
ユースケースとしては、1アカウントでリソースを見られるようにすることによって複数アカウントのリソースを一元管理したいという場合が考えられます。また、Auroraでは集中管理 DB クラスターのクローンを作成できるなど、いくつかのリソースタイプではアカウント間に渡った操作を行えます。
やってみる
AccountAにあるリソースをAccountBへ共有したいと思います。
-
AccountAで共有するリソースの立ち上げ
- AccountAでAuroraを立ち上げます。
- コンソールから作成しました。
-
AWS Resource Access Managerのコンソールにアクセスし、リソースの共有を作成
-
AccountBで招待を許可し、RDSが見られるか確認
最近の発表(6/15の発表)について
最近、RAMについて以下のアップデートが発表されました。
今回のリリースでは、共有リソースにアクセスできるユーザーをより柔軟に定義できるようにもなりました。組織全体または AWS Organizations の OU、および任意の AWS アカウントとリソースを共有することに加えて、サポートされているリソースタイプの IAM ロールおよび IAM ユーザーとリソースを共有できるようにもなりました。
これにより、アカウント単位ではなくユーザ単位・ロール単位でアクセス権限を指定することができるようになったようなので試してみます。
アカウント内のこのユーザだけにアクセスさせたいといった場合に有効だと思われます。
尚、ユーザ単位・ロール単位がサポートされているサービスは以下です。
- AWS App Mesh
- AWS Certificate Manager Private Certificate Authority
- AWS CodeBuild
- Amazon EC2 Image Builder
- AWS Network Firewall
- Amazon Route 53
- route53resolver:FirewallRuleGroup
- route53resolver:ResolverQueryLogConfig
- AWS Systems Manager Incident Manager
確認してみる
ユーザ単位でのアクセス制限を試してみます。
共有アカウント先に2つのユーザを作成しそれぞれで確認してみます。
- test_1 AdminAccess
- test_2 AdminAccess
-
test_1のみにアクセス権限を付与
-
test_1にログインし、閲覧
-
test_2にログインし、閲覧
まとめ
別アカウントと簡単にリソースを共有することができました。
ですが、すべてのアクションが行えるわけではなく、共有するリソースごとにできるアクションが異なっているのでやりたいことができるのかどうかは事前に確認する必要があるかなと思います。