AWS MCP(ドキュメント検索・リソース操作系)を整理|権限の絞り方とAssumeRole(網羅・要確認)
目次 クリックで開く
AWS環境が大規模化・複雑化する中で、必要なドキュメントやリソースを即座に特定し、安全に操作することは容易ではありません。特に近年では、AIがコンテキストを理解してツールを実行するMCP(Model Context Protocol)の概念が登場し、エンジニアが手動でコンソールを叩くのではなく、プログラムやエージェントを介してAWSリソースを操作する場面が増えています。
本記事では、AWSにおけるリソース検索(ドキュメント検索)の仕組みから、それらを安全に操作するためのIAM権限の絞り方、そして実務に不可欠なAssumeRoleの設計までを網羅的に解説します。
AWS環境におけるドキュメント・リソース検索の全体像
AWS上で「何かを探す」という行為は、対象によって利用するサービスが異なります。メタデータを探すのか、ファイルの中身を探すのかによって、適切なアーキテクチャを選択する必要があります。
AWS Resource Explorerによるメタデータ検索
「あのEC2インスタンスはどこにある?」「特定タグがついたS3バケットを一覧化したい」といった要望に応えるのが、AWS Resource Explorerです。これは、AWSマネジメントコンソール上部にある検索バーのバックエンドとしても機能しています。
- 特徴: リージョンを跨いだ検索が可能(アグリゲーターリージョンの設定が必要)。
- 料金: 基本機能は無料。
- 公式サイト: AWS Resource Explorer
Amazon Kendraによるドキュメント検索
設計書(PDF)や運用マニュアル(Word)、S3上のテキストデータの内容までを深く検索(セマンティック検索)したい場合は、Amazon Kendraが選択肢に入ります。これは高機能なエンタープライズ検索サービスであり、機械学習を用いて質問に対する回答を抽出します。
大規模な組織では、このKendraをMCPのデータソースとして活用し、AIエージェントがAWSドキュメントを読み取って判断を下す仕組みを構築します。なお、Kendraの料金はDeveloper Editionで月額約810ドルからとなっており、導入にはコスト対効果の検討が必須です(公式料金ページ:Amazon Kendra Pricing)。
社内のデータ活用においては、AWSリソースだけでなく、SaaSに蓄積された情報の統合も重要です。例えば、経理周りの情報をAWS経由で分析する際、楽楽精算×freee会計の「CSV手作業」を滅ぼす。経理の完全自動化とアーキテクチャで語られるような、データ連携の自動化が先行して求められるケースも多々あります。
権限設計の鉄則:検索権限と操作権限の分離
AWSリソースを検索・操作するMCPエージェントやスクリプトを運用する際、最も陥りやすい罠が「権限の与えすぎ」です。
ReadOnlyAccessを安易に使わない理由
AWS管理ポリシーの ReadOnlyAccess は一見安全に見えますが、実は非常に強力な権限です。S3バケットの中身を閲覧できたり、Lambdaのコードをダウンロードできたりするため、機密情報が含まれる環境では「過剰な権限」となります。
アクションレベルでの権限の絞り方
最小権限の原則(Least Privilege)に基づき、以下の3層でポリシーを定義することを推奨します。
- List系: リソースの存在を確認する(例:
s3:ListAllMyBuckets) - Describe/Get系: リソースの設定詳細を確認する(例:
ec2:DescribeInstances) - Operate系: リソースの状態を変更する(例:
ec2:StartInstances)
MCPツールを構成する場合、まずは「List」と「Describe」のみを許可した「閲覧専用ロール」から作成し、必要に応じて「Operate」権限を段階的に追加していくのが実務上の定石です。
AssumeRoleによる安全なリソース操作
静的なIAMユーザーのアクセスキーを使い続けることは、漏洩時のリスクが極めて高いです。そこで利用すべきなのが AssumeRole(一時的認証情報) です。
AssumeRoleの仕組みとメリット
AssumeRoleは、信頼されたエンティティ(ユーザーや他のAWSサービス)に対し、一定時間だけ有効なセキュリティトークンを発行する仕組みです。
- 有効期限の存在: トークンは最短15分、最長12時間で失効する。
- アクセスキー不要: エージェント実行環境(EC2やLambda)にインスタンスプロファイルを付与すれば、コード内に秘密鍵を記述する必要がない。
スイッチロール設定の具体的なステップ
実務で頻用される「操作用アカウントへスイッチする」際の手順を整理します。
- ロールの作成: 操作対象のアカウント(Account B)でIAMロールを作成。信頼ポリシーに操作元アカウント(Account A)のIDを指定。
- 権限の付与: 操作元(Account A)のユーザー/グループに
sts:AssumeRole権限を付与。 - 実行: AWS CLIの場合、
~/.aws/configにrole_arnとsource_profileを記述。
このように、インフラの権限管理を自動化・セキュアに保つことは、SaaS増えすぎ問題と退職者のアカウント削除漏れを防ぐといったID管理の全体最適化にも繋がる重要なステップです。
実務で使える検索・操作ツール比較
検索と操作の要件に応じた主要ツールの比較表です。
| ツール・サービス | 主な対象 | 検索の深さ | 操作可否 | 導入コスト |
|---|---|---|---|---|
| Resource Explorer | AWS全リソース | メタデータのみ | 不可 | 低(無料) |
| Amazon Kendra | S3/各種ドキュメント | 本文・セマンティック | 不可 | 高(月額 $810~) |
| CloudControl API | AWSリソース全般 | メタデータ | 可能 | 中(API課金) |
| MCPエージェント | API経由のリソース | 実装に依存 | 可能 | 低(開発工数のみ) |
MCP(Model Context Protocol)導入時のIAM権限実装ガイド
LLMを介してAWSを操作するMCPサーバーをデプロイする際、セキュリティと利便性のバランスをどう取るべきか。具体的な実装例を示します。
特定S3バケットのみを対象にするポリシー例
「ドキュメント検索」を特定バケット(my-company-docs)に限定する場合、以下のようなIAMポリシー(JSON)が最小構成となります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::my-company-docs"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-company-docs/*"
}
]
}
よくあるエラー「AccessDenied」のデバッグ手法
AssumeRoleを用いた検索や操作でエラーが発生する場合、以下の3点を確認してください。
- 信頼関係(Trust Relationship): IAMロール側の「信頼関係」タブに、AssumeRoleを試みているエンティティが許可されているか。
- セッション持続時間: MCPサーバーやスクリプトが長時間稼働する場合、トークンの有効期限が切れていないか。
- SCP(Service Control Policies): AWS Organizationsを利用している場合、親アカウント側でその操作(例:Kendraへのアクセス)が禁止されていないか。
さらに、AWSの運用だけでなく、Google WorkspaceなどのSaaSを組み合わせた業務自動化を検討しているなら、Excelと紙の限界を突破する「Google Workspace × AppSheet」業務DX完全ガイドが参考になります。AWSの強力なバックエンドとAppSheetのようなフロントエンドを組み合わせることで、非エンジニアでも安全にリソース検索結果を活用できる環境が整います。
まとめ
AWSのMCP(ドキュメント検索・リソース操作)を使いこなす鍵は、高度な検索ツールの選定以上に、「誰が、どのリソースに対し、どこまでの権限で触れるか」をAssumeRoleを用いて厳格に定義することにあります。Resource ExplorerやKendraを適切に配置し、IAMでの絞り込みを徹底することで、安全で機動的なITインフラ運用を実現してください。
実務で差がつく:IAMエンティティの使い分けとガバナンス
MCP(Model Context Protocol)を介した自動操作を導入する際、最も多い技術的負債は「個人のIAMユーザーに強力な権限を持たせ、そのアクセスキーをエージェントに転用する」ことです。これはセキュリティ上、極めて危険な構成です。以下の表を参考に、用途に応じた適切なエンティティを選択してください。
| エンティティ | 主な利用シーン | 認証の仕組み | 推奨される運用 |
|---|---|---|---|
| IAM ユーザー | 人間による個別操作 | パスワード / 固定アクセスキー | MFA(多要素認証)の必須化。プログラム利用は非推奨。 |
| IAM ロール | MCP・Lambda・EC2等 | 一時的認証情報(STS) | AssumeRoleを活用し、必要な時だけ権限を行使する。 |
| IAM グループ | チーム単位の権限管理 | – | 部署ごとに「閲覧専用」「開発用」などのポリシーを束ねる。 |
AIエージェントによる「想定外の操作」を防ぐガードレール
AIがコンテキストを解釈してAWSを操作する場合、プロンプトの解釈ミスによるリソース削除や、高額な検索クエリの連発といったリスクが伴います。これを防ぐには、IAMポリシーだけでなく、Permissions Boundary(権限の境界)の設定が有効です。これにより、たとえロールに AdministratorAccess が付与されていても、境界で定義された範囲(例:特定リージョンのみ、特定タグのリソースのみ)を超える操作を物理的に遮断できます。
このような高度な権限設計とデータ統合の考え方は、AWS環境に限った話ではありません。例えば、高額なCDPは不要?BigQuery・dbt・リバースETLで構築する「モダンデータスタック」ツール選定と公式事例で解説しているような、適切なコンポーネント配置と責務分離の思想に通じるものがあります。
リファレンス:設定時に参照すべき公式ドキュメント
実装時に「要確認」となる詳細仕様や制限値については、以下の公式リソースをブックマークしておくことを推奨します。
AWSの権限管理は一度構築して終わりではなく、組織の成長に合わせて「剥がす」べき権限を常に棚卸しし続ける必要があります。ID管理の自動化については、SaaS増えすぎ問題と退職者のアカウント削除漏れを防ぐ。Entra ID・Okta・ジョーシスを活用した自動化アーキテクチャも、IDガバナンスを検討する上での一助となるでしょう。
ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。