【re:Invent 2025】PreviewになったAWS MCP Serverのアクセス制御の考え方

記事タイトルとURLをコピーする

さとうです。

先日AWS MCP ServerがPreviewで利用可能になりました。

blog.serverworks.co.jp

漠然と「AIにAWS触らせて大丈夫?今までのMCP Serverと何が違うの?」と疑問がある方向けにアクセス制御関連の情報をまとめたいと思います。

※Preview版のサービスです。記載の内容は今後のサービスアップデートにより変動する可能性があります。

AWS MCP Serverとは

AWS API MCP ServerやAWS Knowledge MCP Serverとの違い

混同されやすいのですが、従前からAPI操作やドキュメントをラッピングするMCP ServerがAWSから提供されていました。

ただし、これらはローカルで動作するMCP Serverでした。

AWS API MCP Server | AWS MCP Servers

https://awslabs.github.io/mcp/servers/aws-knowledge-mcp-server/

AWS MCP ServerはAWSが提供するフルマネージドなMCP Serverとして、AWSのサービスエンドポイントを経由して利用できるようになったのが今回のサービスです。

MCP ServerがAWSサービス化した

※図の引用: Amazon Redshift MCP サーバーを活用した SQL 分析の高速化 | Amazon Web Services ブログ

IAMでMCP Server自体へのアクセス制御が可能になった

AWS MCP ServerがAWSサービスとして提供されることにより、IAMポリシーでAWS MCP Server自体へのアクセス制御が可能となりました。

これにより、操作対象のリソースのアクセスポリシーとは別に、AWS MCP Serverには読み取り専用アクションのみを許可するといった制御が可能です。

制御可能なオペレーションは以下の通りです。

  • aws-mcp:InvokeMcp:AWS MCP Serverの呼び出しに必要(必須)
  • aws-mcp:CallReadOnlyTool:読み取り系のToolの実行に必要
  • aws-mcp:CallReadWriteTool:書き込み系のToolの実行に必要

aws-mcp:InvokeMcpは許可されていないとMCP Serverの有効化に失敗します。

> /mcp

aws-mcp
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
[2025:10:40]: ✗ aws-mcp has failed to load after 10.73 s
 - Mcp error: -32002: connection closed: initialize response
 - run with KIRO_LOG_LEVEL=trace and see $TMPDIR/kiro-log/kiro-chat.log for detail

AWSMcpServiceActionsFullAccess というマネージドポリシーを使うとAWS MCP Server関連のアクションのみにフルコントロール権限を付与できます。

AWSMcpServiceActionsFullAccess - AWS Managed Policy

対応リージョンは現時点でus-east-1のみ

現時点ではus-east-1のみに対応しています。あくまでMCP Serverの拠点なので他リージョンのリソースの参照は可能ですが、クロスリージョンアクセスとなることは把握しておきましょう。

アクセス制御を考えるうえで重要なポイント

アクセス制御の棲み分け

AWSのようなメジャーなサービスなら尚更ですが、LLMは優秀なので大抵のAIエージェントはAWS MCP Serverを経由せずとも指示した作業の遂行はできてしまいます。

エージェントに持たせる認証情報で操作するリソース自体へのアクセス制御が重要になる点はAWS MCP Serverを利用する場合でも変わりません。

AWS MCP Serverのアクセス制御は利用自体を制限したい場合や、意図せぬ書き込み操作を抑制したい場合のガードレールと考えておきましょう。

AWS MCP Serverの利用を制限してもバイパスは容易

なお、今回のアップデートに合わせてIAMのConditionに aws:IsMcpServiceAction という条件が追加されています。

AWS global condition context keys - AWS Identity and Access Management

私も最初勘違いしていたのですが、これは呼び出されたアクションがAWS MCP Server関連であるかどうかを判定するものであって、呼び出されたAPIアクションがMCP Serverからのものであるかを判定するものではありません。

なので、MCP Server経由の操作のみを許可するといったIAMポリシーは設定できないものと見受けられます。

MCP Serverのサービス単位のアクセス制御は未対応

上記の通り、現時点ではAWS MCP Server自体の利用/読み取り/書き込みの粒度でしか制御ができません。

「aws__search_documentationだけ許可したい」「Redshift関連のaws___call_awsだけ許可したい」といった制御はIAMポリシーではできないようになっています。

リソースベースのポリシーには非対応

ドキュメントにある通り、リソースベースのポリシーとACLには対応していません。

How AWS MCP Server works with IAM - AWS MCP Server

例えば、S3でバケットポリシーを設定しているケースでMCP Serverからのアクセスのみを許可するといった制御はできないということになります。

セットアップ方法について

サービスの検証はKiro CLIで行い、.kiro/settings/mcp.jsonに以下の定義を追加しました。

{
  "mcpServers": {
    "aws-mcp": {
      "command": "uvx",
      "args": [
        "mcp-proxy-for-aws@v1.1.2",
        "https://aws-mcp.us-east-1.api.aws/mcp"
      ]
    }
  }
}

MCP Serverが使用する認証情報については公式ではデフォルトプロファイルを設定する手順が案内されていますが、環境変数の $AWS_PROFILE で指定する方式でも問題ありませんでした。

Setting up your AWS MCP Server - AWS MCP Server

まとめ

MCP Serverがマネージドになったことで窓口が一本化され、MCP Serverの監査証跡の保全やアクセス制御が可能になるなどガバナンス面で利用がしやすいサービスになりました。

一方で、本質的にMCP Serverはアクセス制御をするためのツールではないので、操作可能なリソースのアクセス制御が変わらず重要である点は押さえておきましょう。

MCP Serverの制限可能な範囲は粗い点にも注意した方がよいかと思いました。

佐藤 航太郎(執筆記事の一覧)

エンタープライズクラウド部 クラウドモダナイズ課
2025年1月入社で何でも試したがりの雑食系です。