TOP>コラム一覧>簡単にできるAWSのセキュリティ強化(番外編) ~ Session Manager編 ~

簡単にできるAWSのセキュリティ強化(番外編)
~ Session Manager編 ~

はじめに

こんにちは、高橋です。
簡単にできるAWSのセキュリティ強化シリーズですが、今回は直接のセキュリティ関連サービスではありませんが、最近何度か問い合わせがあり、改めて個別検証を実施したAWS Systems ManagerのSession Managerについてご紹介したいと思います。こちらのサービスはセキュアにAmazon EC2インスタンスにアクセスする方法ということで、セキュリティ強化の番外編としてご容赦頂ければと思います。

1.AWS Systems Manager Session Managerとは?

AWS Systems Manager Session Manager(以下長いのでSession Manager)とはAmazon EC2インスタンスにsshを使用することなくアクセスできるサービスです。
Session ManagerはAmazon EC2インスタンス内で稼働するAWS Systems Managerエージェント(以下SSMエージェント)を経由でAWSのコンソール画面やAWS CLIからインスタンスのシェルにアクセスすることが可能で、インスタンスでsshのポートを開放する必要がありません。また、インターネットに公開されていないEC2インスタンスにもアクセスできるため、セキュアにEC2インスタンスを利用することができます。さらに、アクセス制御はIAMにて行われ、アクセス履歴はCloudTrailに保存されるため、ユーザ管理やアクセス管理を個々のOSから、AWS内の管理に移行することが可能です。

2.Amazon Inspectorの利用料金

AWS Systems Manager Session Managerは無償で利用できます。

3.Session ManagerでアクセスするためのEC2インスタンスの設定

Session Managerを利用するためにはSSMエージェント(以下SSMエージェント)がインストールされている必要があります。SSMエージェントはAmazon Linux2やWindowsであればデフォルトでインストールされているため、特にインスタンス側で設定を行わなくても利用することが可能です。ただし、Red Hat LinuxにはSSMエージェントがインストールされていないため、手動でインストールする必要があります。インストール手順はこちら(https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/agent-install-rhel.html)のサイトでご確認ください。

例 Red Hat Enterprise Linux 8(x86_64)の場合

[ec2-user@ip-192-168-0-48 ~]$ sudo dnf install -y https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
            Updating Subscription Management repositories.
            Unable to read consumer identity
            
            This system is not registered with an entitlement server. You can use subscription-manager to register.
            ・
            ・
            ・
            Installed:
              amazon-ssm-agent-3.1.1511.0-1.x86_64
            

また、EC2インスタンスがSystems Managerにアクセスする必要があるため、EC2インスタンスに「AmazonSSMManagedInstanceCore」を含むIAMロールをアタッチする必要があります。

4.プライベートネットワーク内のEC2インスタンスへの接続方法

パブリックネットワークに配置されたインスタンスであれば、SSHにて簡単にアクセスできますが、プライベートネットワークに配置されたインスタンスの場合はそういうわけにはいきません。その場合に活躍するのがSession Managerです。プライベートネットワークに配置されたインスタンスにアクセスするには以下の2つの要件の内、どちらかを設定する必要があります。

① Nat Gatewayを作成し、Nat Gateway経由でアクセスする
② VPCエンドポイントを作成し、VPCエンドポイント経由でアクセスする

パッチやパッケージのインストールを行う都合上、Nat Gatewayは多くのケースで用意されるので、①で対応する場合の方が多いのではないかと推測されます。ただし、Nat Gatewayがない場合は、VPCエンドポイント経由でアクセスする必要があります。VPCエンドポイント経由でアクセスするためには、下記のVPCエンドポイントを作成する必要があります。

サービス名
com.amazonaws.[region].ssm 必須
com.amazonaws.[region].ssmmessages 必須
com.amazonaws.[region].ec2messages 必須
com.amazonaws.[region].s3 必須
com.amazonaws.[region].kms 必須
com.amazonaws.[region].logs 必須
com.amazonaws.[region].monitoring 必須

VPCエンドポントの作成例

1. AWSコンソールにてVPCのページを開き、左のメニューからエンドポイントを選択し、画面右上の「エンドポイントを作成」をクリックする。

1.AWSコンソールにてVPCのページを開き、左のメニューからエンドポイントを選択し、画面右上の「エンドポイントを作成」をクリックする。

2. 名前タグ欄に任意の名前を入力し、サービスカテゴリからAWSのサービスを選択し、サービスから上記の表のサービスから1つ選択し、VPCでインスタンスが配置されたVPCを選択したら、画面下部の「エンドポイントを作成」をクリックして、VPCエンドポイントを作成します。

2.	名前タグ欄に任意の名前を入力し、サービスカテゴリからAWSのサービスを選択し、サービスから上記の表のサービスから1つ選択し、VPCでインスタンスが配置されたVPCを選択したら、画面下部の「エンドポイントを作成」をクリックして、VPCエンドポイントを作成します。

5.IAMユーザごとにアクセス可能なEC2インスタンスの制御

IAMユーザがSession Manger経由でインスタンスにアクセスするにはIAMポリシーにて権限を付与する必要があります。ただし、ただ権限を付与しただけでは、そのIAMユーザは全てのEC2のOS内部にアクセスすることができるようになってしまいます。それを制限するためには下記の様に、IAMポリシーを設定する必要があります。

{
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ssm:StartSession"
                    ],
                    "Resource": [
                        "arn:aws:ec2:ap-northeast-1:<アカウントID>:instance/<インスタンスID>"
                    ]
                },
                {
                    "Effect": "Allow",
                    "Action": [
                        "ssm:TerminateSession",
                        "ssm:ResumeSession"
                    ],
                    "Resource": [
                        "arn:aws:ssm:*:*:session/${aws:username}-*"
                    ]
                }
            ]
        }
        

6.Session Managerを用いたインスタンスへのアクセス

Session Managerを用いたインスタンスにアクセスする方法はAWSコンソールからとAWS CLIからの2つの方法がございます。AWSコンソールからのアクセスはAWS Systems Managerの画面のセッションマネージャーのページから、アクセスしたいインスタンスを選択し、「セッションを開始する」をクリックするだけです。

6.Session Managerを用いたインスタンスへのアクセス
6.Session Managerを用いたインスタンスへのアクセス

また、AWS CLIからアクセスする場合は、下記のコマンドを実行します。

> aws ssm start-session --target <インスタンスID> --profile <プロファイル名>

実行例

PS C:\Users\takas> aws ssm start-session --target i-XXXXXXXXXXXXXXX --profile test

            Starting session with SessionId: ssmtest-00e9e86c139dfe76d
            sh-4.2$
            

さいごに

今回はAWS環境のセキュリティ強化の番外編としてSession Managerについてご紹介しました。AWS社のベストプラクティス的にEC2インスタンスはパブリックネットワークに配置するのではなく、プライベートネットワークに配置することが推奨され、また昨今セキュリティに対する対策が強化され、AWS上のEC2インスタンスへのアクセスが制限されている会社も増えるなど、EC2インスタンス内のOSにアクセスが難しくなってきています。そういった背景もあり、EC2へのアクセス方法に関する問い合わせが増え、今回記事を記載することにしました。今回の記事が同様のお悩みを抱えている方の解決に役立てばと思います。

CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。

お問い合わせ

関連コラム

【著者プロフィール】

高橋 繁義(たかはし しげよし)

伊藤忠テクノソリューションズ株式会社 クラウドアーキテクト

インフラ全般のエンジニアとして20年以上活動し、現在AWS専任の技術担当兼サービス企画担当として活動中

高橋 繁義(たかはし しげよし)

TOP>コラム一覧>簡単にできるAWSのセキュリティ強化(番外編)

pagetop