AWSでクロスアカウントを安全に使いこなす基本ガイド

目次

はじめに

本ドキュメントの目的

本書は、AWSを複数アカウントで安全に使うための実践ガイドをわかりやすくまとめます。特に、アカウント間でリソースを共有する方法、IAMロールとAssumeRoleの使い方、クロスアカウント対応のサービス検出について丁寧に解説します。実際の手順や注意点、よくある誤解も取り上げます。

誰に向けているか

クラウド運用を始めたエンジニア、システム管理者、または部門ごとにアカウントを分けているチームに向けています。深いIAMの知識がなくても読み進められるよう、必要な用語は簡単な具体例で補足します。

本書の構成と読み方

第2章でクロスアカウントの概念と「スイッチロール」を平易に説明します。第3章ではAssumeRoleを使った実装手順とトラブルシューティングを示します。第4章ではAWS Cloud Mapなどのサービス検出がアカウント間でどう機能するかを解説します。順に読むと理解が深まりますが、必要な章だけ参照しても役立ちます。

進め方のポイント

具体例を多く示し、操作手順は実務で使える形で提示します。まず安全な設計の考え方を押さえ、その上で設定や検証方法に進んでください。

AWSのクロスアカウントスイッチロールを丁寧に解説します

はじめに

同じ人が複数のAWSアカウントを使う場面では、スイッチロールが便利です。ユーザーにロールを割り当てると、そのロールの権限で操作できます。実務では本番・開発などで別アカウントを使うときに役立ちます。

ロールの基本と信頼関係

ロールは「一時的に借りる権限」と考えてください。クロスアカウントでは、ロールを作る側(受け入れ側)が誰を信頼するかを定めます。信頼ポリシーで、アクセスを許すアカウントIDやIAMユーザー/ロールを指定します。

作成の手順(簡潔)

  1. 受け入れアカウントで新しいIAMロールを作成。信頼されたエンティティに呼び出し元のアカウントを指定します。
  2. ロールに必要なアクセス許可ポリシーを付与(例:S3読み取りのみ)。
  3. ロール名をわかりやすく付け、信頼ポリシーを確認します。

スイッチロールの操作方法

コンソールでは右上のアカウントメニューから「スイッチロール」を選び、アカウントIDとロール名を入力します。成功すると画面上部に切り替えたロール名が表示されます。CLIではaws sts assume-roleを使って一時的な認証情報を取得して切り替えます。

注意点

ロール名や信頼ポリシーを間違えると権限が渡りません。最小権限の原則で必要な権限だけ付与してください。

クロスアカウント – IAMロールのAssumeRoleを使いこなす

IAMロールとAssumeRoleの基本

IAMロールは「権限の入れ物」です。ユーザーやサービスがそのロールを“借りる”と一時的に権限を得られます。ヘルメットの例えでは、ヘルメットをかぶる人が現場に入れるように、AssumeRoleでロールを引き受ける人が対象リソースにアクセスできます。

信頼ポリシーの設定

信頼ポリシーは誰がロールを借りられるかを決めます。例えば別アカウント(123456789012)からのアクセスを許可するには、Principalにそのアカウントを指定します。誤設定すると不必要に権限を与えるので、最小権限の原則で指定してください。

AWS CLIでの設定例

~/.aws/configにプロファイルを追加すると簡単にAssumeRoleできます。

[profile central]
region = ap-northeast-1

[profile dev-account]
role_arn = arn:aws:iam::222222222222:role/ReadOnlyRole
source_profile = central

source_profileに基づく認証情報でSTSを呼んで一時クレデンシャルを取得します。

実践ユースケース:中央管理アカウントからの監視

中央管理アカウントで監視用のロールを作り、他アカウントの監視ロールにAssumeRoleさせます。これにより一箇所からCloudWatchやS3ログを参照できます。運用ではロールごとに必要最小限の権限、MFAやセッション期間の設定を忘れずにしてください。

注意点

ロールのセッション時間、MFA要求、ロールチェーン(複数のAssumeRole)などを設計段階で確認してください。信頼ポリシーと権限ポリシーを分けて管理するとわかりやすくなります。

AWS Cloud Mapがクロスアカウント対応のサービス検出をサポート

概要

2025年8月に、AWS Cloud Mapがクロスアカウントでのサービス検出をサポートしました。AWS Resource Access Manager(AWS RAM)で名前空間やサービスを共有でき、別アカウントからDNSやAPIでサービスを見つけられるようになります。

どう動くか(簡単な流れ)

  • サービス所有アカウントでCloud Mapのプライベート名前空間やサービスを作成します。
  • 所有アカウントがAWS RAMでその名前空間を共有します。
  • 受け取る側のアカウントが共有を承諾すると、DNSやCloud Map APIでサービスを参照できます。

具体例

アカウントAでマイクロサービスを登録し、名前空間をアカウントBに共有します。アカウントBは共有を承諾後、そのサービスのFQDNで名前解決したり、APIでエンドポイント一覧を取得したりできます。CLIやSDKで同じ操作が可能です。

設定上の注意とベストプラクティス

  • 最小権限のIAMポリシーを設定してください。アクセスは必要最小限に抑えます。
  • 共有は監査対象にして、不要になれば解除してください。
  • プライベートDNSを使う場合、VPC間の接続(VPCピアリングやTransit Gateway等)を検討してください。
  • ステージング環境で検証してから本番に展開してください。

この機能により、複数アカウントのサービス管理が簡素化され、運用効率が向上します。導入前に権限とネットワークの設計を確認すると安心です。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次