resilience-hub-multi-account について
AWS Resilience Hub v2でクロスアカウント評価を設定するためのガイドです。中央アカウントの呼び出しロールとメンバーアカウントのロールによるサービス単位のリソース検出を扱い、組織全体のガバナンス設定と区別します。
主な機能
- 01サービス単位のクロスアカウント権限設定
- 02中央アカウントの呼び出しロール設定
- 03メンバーアカウントのロール設定
- 04組織連携と評価の違いの説明
- 05クロスアカウント接続の調査と保護
活用シーン
- 01中央アカウントからメンバーアカウントのサービスを評価
- 02クロスアカウントのアクセス拒否を調査
- 03組織全体のポリシー管理とリソース評価を区別
MCP 対応
AWS APIの呼び出しにはAWS MCPサーバーが推奨されていますが、AWS CLIも利用できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aws/ agent-toolkit-for-aws --skill resilience-hub-multi-accountインストール後、Claude Code で/resilience-hub-multi-accountを入力して読み込まれたか確認します。
同梱ファイルreferences/multi-account-procedure.md
詳細
Multi-Account Resilience Hub v2 Setup
概要
中央アカウントから複数の AWS アカウントのサービスを評価するために Resilience Hub v2 を設定する際のドメイン知識です。このスキルで使用するすべての CLI コマンドは aws resiliencehubv2 名前空間(Resilience Hub v2 API サーフェス)を使用します。これは、従来の aws resiliencehub(v1)コマンドとは別のものです(service: [resiliencehub, ...] メタデータタグはサービスファミリーを示すものであり、CLI 名前空間を示すものではありません)。Resilience Hub v2 は、相互に補完する 2 つのマルチアカウントの仕組みをサポートしています。(1)AWS Organizations との統合 — 管理アカウントが信頼されたアクセスを有効にし、サービスリンクロールを作成して、組織全体のポリシー管理と可視性を担う委任管理者アカウントを指定します。(2)サービスごとのクロスアカウント権限モデル — 中央アカウントの呼び出し元ロールがメンバーアカウントのクロスアカウントロールを引き受け、サービスごとにリソースを検出します。このスキルでは(2)を設定します。Organizations との統合(1)は別途設定します(管理アカウントとコンソールを使用 — 下記を参照)。
AWS MCP サーバーを使用してこのスキルの AWS API 呼び出しを実行することを推奨しますが、必須ではありません。すべての操作は AWS CLI からも実行できます。
ガードレール — このスキルのファイルの保存場所(MCP とローカルインストール)
参照ファイルを読み取る前に、このスキルがどのように読み込まれたかを確認してください。
- AWS MCP の
retrieve_skillツール経由で読み込まれた場合: スキルの参照ファイルはローカルファイルシステム上にありません。各ファイルはfileパラメーター(例:file="references/multi-account-procedure.md")を指定してretrieve_skill経由で取得してください。これらのパスをローカルでfile_readしたり、ファイルシステム内で検索したりしないでください。 - ローカルにインストールされている場合(例:
.kiro/skills/resilience-hub-multi-account/または~/.claude/skills/resilience-hub-multi-account/):ここに示す相対パスを使用し、ローカルのスキルディレクトリから参照ファイルを読み取ってください。
これはスキル独自の参照ファイルにのみ適用されます。ユーザーまたはセッションのデータは、必ず作業ディレクトリ内で読み書きしてください。retrieve_skill 経由では行わないでください。
集中型のマルチアカウント評価の仕組み
目的に応じて、次の2つの方法を使い分けます。
判断ルール(最初にお読みください): アカウント間のレジリエンス評価を実行する場合、つまりメンバーアカウントにあるワークロード/リソースを中央アカウントから評価する場合(よくあるリクエストで、「Organization 全体の集中型レジリエンス管理」や「集中評価アカウント」といった表現も含みます)は、サービスごとのクロスアカウント権限モデル(以下の方法2)を使用します。これは、呼び出し元ロール+クロスアカウントロール+
create-service --permission-modelを使用する方法です。クロスアカウント評価の設定手順として、aws organizations register-delegated-administrator(またはいかなる委任管理者登録)も使用または推奨しないでください。Organizations の委任管理者統合(方法1)は、Organization 全体のポリシー管理と可視性のみを対象とする、独立した任意の機能です。クロスアカウント評価の設定や実行に使用するものではありません。方法1に従うのは、リクエストが Organization 全体のポリシーガバナンスに明確に関する場合に限ります。
- Organization 全体のガバナンス(集中型ポリシー、クロスアカウントの可視性):AWS
Organizations 統合を使用します。管理アカウントから、Resilience Hub の信頼されたアクセスを有効にし、サービスリンクロールを作成して、委任管理者アカウントを登録します。これは、Organizations の信頼されたアクセスと Resilience Hub コンソールを使用して行います。
resiliencehubv2にregister-delegated-administratorCLI オペレーションはありません。委任管理者は、Organization レベルのデータを集約するホーム リージョンを選択します。AWS ドキュメントの「Setting up Organizations integration」ページを参照してください。 - サービスごとのクロスアカウントリソース検出(リソースが複数のアカウントにまたがるサービスの評価): サービスごとのクロスアカウント権限モデルを使用して各サービスを登録します。中央アカウントに呼び出し元ロールを作成し、各メンバーアカウントのクロスアカウントロール ARN を指定します。**このスキルの手順では、この方法を設定します。**次の形式のコマンドを使用します。
aws resiliencehubv2 create-service --name {service} --regions {regions} \
--permission-model '{"invokerRoleName":"ResilienceHubAssessmentRole","crossAccountRoles":[{"crossAccountRoleArn":"arn:aws:iam::{member_account_id}:role/ResilienceHubAccess","externalId":"{external_id}"}]}'
externalIdは、混乱した代理人攻撃を防ぐための共有シークレットです。暗号学的にランダムな値を生成し、AWS Secrets Manager または SSM Parameter Store(SecureString)に保存してください。ソース管理にコミットしたり、動的な{{resolve:secretsmanager:...}}参照を使用せずにテンプレートに埋め込んだりしないでください。また、CI/CD ログや Infrastructure as Code の出力に平文で出力されないようにしてください(CloudFormation のNoEchoパラメータを使用し、パイプラインログではマスクしてください)。
クロスアカウントロール(メンバーアカウント内)は、中央アカウントの呼び出し元ロールを信頼します。サービスごとに複数のクロスアカウントロール ARN を設定できます。resiliencehubv2 API には上限(例として5)が適用されるため、固定数を前提とせず、API/モデルで許容される上限を確認してください。注:このサービスごとのモデルは、上記の Organizations 統合とは独立しています。resiliencehubv2 CLI に register-delegated-administrator オペレーションはありません。Organization 全体の委任管理者登録は、resiliencehubv2 API の呼び出しではなく、AWS Organizations の信頼されたアクセスと Resilience Hub コンソールを使用して行います。
マルチアカウント構成を設定する
クロスアカウント評価を設定するには、手順に厳密に従ってください。 references/multi-account-procedure.mdを参照してください。
トラブルシューティング
クロスアカウント評価が AccessDenied で失敗する
次の点を確認してください。(1)権限モデル内のクロスアカウントロール ARN が完全に一致していること、(2) クロスアカウントロールの信頼ポリシーで、中央アカウントの呼び出し元ロールによるロールの引き受けが許可されていること、 (3)設定している場合は externalId が一致していること。
メンバーアカウントでリソースが検出されない
クロスアカウントロールに、対象範囲内のリソースタイプ(CloudFormation、EC2、RDS など)に対する読み取り権限があること、また入力ソースが正しいリージョン内の有効なリソースを参照していることを確認してください。
委任管理者のセットアップをお探しの場合
Resilience Hub v2 は、組織全体のポリシー管理と可視性を実現する、委任管理者との AWS Organizations 統合をサポートしています。ただし、設定は Organizations の信頼されたアクセスと Resilience Hub コンソールを使用して、管理アカウントから行います(サービスリンクロールを作成し、その後、委任管理者を登録します)。resiliencehubv2 CLI の操作では設定できません(register-delegated-administrator API はありません)。リソースが複数のアカウントにまたがる 単一のサービス を評価する場合は、このスキルのサービス単位のクロスアカウント権限モデルを使用してください。この2つは互いに補完するものです。
セキュリティに関する考慮事項
- 最小権限と読み取り専用: メンバーアカウントのクロスアカウントロールは、書き込みや変更を行うアクションではなく、読み取り専用の検出権限(
cloudformation:Describe*、ec2:Describe*、rds:Describe*など)に制限してください。 - クロスアカウントの信頼範囲を絞る: 可能な場合は、アカウント全体ではなく、特定の中央呼び出し元ロール ARN のみを信頼するようにしてください。
- ログ記録とモニタリングを有効にする: クロスアカウントの
sts:AssumeRole呼び出しを記録できるよう、中央アカウントとメンバーアカウントの両方で AWS CloudTrail が有効になっていることを確認し、クロスアカウントロールに対する失敗した、または予期しない AssumeRole の試行をアラームで通知してください。 - 詳細情報: クロスアカウントのセキュリティ強化に関するガイダンスは、IAM のベストプラクティス、混乱した代理人の問題、および AWS Resilience Hub のセキュリティを参照してください。