EC2 インスタンスに Systems Manager - Session Manager を使用してログインする方法
はじめに
AWS Systems Manager - Session Manager は、SSH 鍵、踏み台サーバー、およびポート開放を必要とせず、安全かつ効率的に EC2 インスタンスを管理する方法を提供します。この投稿では、Session Manager を設定して使用する手順を解説し、AWS 環境のセキュリティとコスト効率を向上させる方法をご紹介します。
詳細については、公式ドキュメント をご覧ください。
Session Manager を使用する理由
- SSH 鍵不要: SSH 鍵の管理と保護が不要になります。
- 踏み台サーバー不要: EC2 インスタンスにアクセスするための中間サーバーが不要になります。
- ポート 22 のインバウンドルール不要: セキュリティグループの開放ポートを避けることでセキュリティが向上します。
AWS リソースの設定
Session Manager を利用するには、AmazonSSMManagedInstanceCore ポリシーがアタッチされた IAM ロールを EC2 インスタンスに割り当てる必要があります(行30)。以下は、この設定を行う CloudFormation テンプレートの例です。
AWSTemplateFormatVersion: 2010-09-09
Resources:
EC2:
Type: AWS::EC2::Instance
Properties:
IamInstanceProfile: !Ref InstanceProfile
ImageId: ami-0f310fced6141e627
InstanceType: t3.small
SecurityGroups:
- !Ref SecurityGroup
InstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Path: /
Roles:
- !Ref IamRole
IamRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
RoleName: ec2-role
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Example
GroupName: ec2-security-group
SecurityGroupIngress:
- CidrIp: 0.0.0.0/0
FromPort: 443
IpProtocol: tcp
ToPort: 443
以下のコマンドでスタックをデプロイします。
aws cloudformation deploy --template-file template.yaml --stack-name ec2-session-manager --capabilities CAPABILITY_NAMED_IAM
プライベートサブネット用の追加設定
EC2 インスタンスがプライベートサブネットにある場合、以下の VPC エンドポイントを設定してください。
com.amazonaws.region.ssm
com.amazonaws.region.ec2messages
com.amazonaws.region.ssmmessages
詳細は VPC エンドポイントのドキュメント をご参照ください。
EC2 インスタンスへのログイン
インスタンス ID を i-xxxxxxxxxxxxxxxxx
に置き換え、以下のコマンドを実行します。
aws ssm start-session --target i-xxxxxxxxxxxxxxxxx
次のような出力が表示されれば、ログイン成功です。
Starting session with SessionId: your-session-id
sh-4.2$
リソースの削除
以下のコマンドを実行して、プロビジョニングされたリソースを削除します。
aws cloudformation delete-stack --stack-name ec2-session-manager
まとめ
AWS Systems Manager - Session Manager は、従来の SSH 鍵や踏み台サーバーを必要とせずに EC2 インスタンスの管理を容易にします。その安全性とコスト効率の良さから、モダンな AWS アーキテクチャにおける最適な選択肢となります。
Happy Coding! 🚀