AWS Systems Manager Fleet Managerで、特定のEC2のみRDP接続できるよう制限する

AWS Systems Manager Fleet Managerで、特定のEC2のみRDP接続できるよう制限する

2025.11.05

こんにちは!クラウド事業本部の吉田です。

SSM Session Managerで接続するEC2インスタンスをタグベースで制御することが可能です。
そちらの実装方法は、下記のブログと公式ドキュメントが参考になります。

[ IAM版 ]Session Manager で特定の EC2 のみアクセスできるよう制限する | DevelopersIO

Session Manager の追加サンプル IAM ポリシー - AWS Systems Manager #例 3: タグに基づいてアクセスを制限

当記事は、そのFleet ManagerによるRDP接続バージョンとなります。
SSM Session Manger版とは少し異なる部分があり、引っかかりやすいと思いますので、参考になりましたら幸いです。

結論

下記のIAMポリシーをIAMユーザーにアタッチしてください。
(EC2にアタッチするタグは適宜変更していただいて問題ありません。)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowEc2andGUIconnect",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ssm-guiconnect:*",
                "ssm:DescribeInstanceProperties"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowStartSessionOnTaggedInstances",
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/SsmAccess": [
                        "true"
                    ]
                }
            }
        },
        {
            "Sid": "AllowStartSessionOnSSMDocuments",
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": [
                "arn:aws:ssm:*:*:document/AWS-StartPortForwardingSession"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": "arn:aws:ssm:*:*:session/${aws:username}-*"
        }
    ]
}

SSM Session Manger版との違い

①「ssm-guiconnect:*」アクションの許可

コンソールからRDP接続するには下記のアクションの許可が必要となります。

  • ssm-guiconnect:CancelConnection
  • ssm-guiconnect:GetConnection
  • ssm-guiconnect:StartConnection

接続を開始するためのアクセス許可
コンソールで EC2 インスタンスへの RDP 接続を作成するには、次のアクセス許可が必要です。

  • ssm-guiconnect:CancelConnection
  • ssm-guiconnect:GetConnection
  • ssm-guiconnect:StartConnection

引用元:Remote Desktop を使用して Windows Server マネージドインスタンスに接続する - AWS Systems Manager

サンプルポリシーでは、「ssm-guiconnect:*」で丸めておりますが、ここは適宜変更してください。

②SSM Document(AWS-StartPortForwardingSession)に対するssm:StartSession許可追加

ここが私が実装時に躓いた部分です。

SSM Session Manger版でも、EC2上にアタッチしているタグベース制御がある形でssm:StartSession許可を定義しております。
ただ、Fleet ManagerによるRDP接続の場合、RDP接続にSSM Document(AWS-StartPortForwardingSession)を利用しているため、
SSM Document(AWS-StartPortForwardingSession)に対するssm:StartSession許可も必要となります。

したがって、タグベース制御のssm:StartSession許可を定義しているステートメントに加えて、SSM Document(AWS-StartPortForwardingSession)に対するssm:StartSession許可を定義したステートメントを追加する必要があります。

上記の権限がない場合、下記のエラーが発生します。

403: An error occurred (AccessDeniedException) when calling the StartSession operation: User: arn:aws:iam::XXXXXXX:user/fleet-test-user is not authorized to perform: ssm:StartSession on resource: arn:aws:ssm:ap-northeast-1::document/AWS-StartPortForwardingSession because no identity-based policy allows the ssm:StartSession action

最後に

SSM Documentに対するssm:StartSession許可は抜け漏れやすい箇所だと思います。

この記事がどなかかの役に立てば嬉しいです。

この記事をシェアする

FacebookHatena blogX

関連記事