Systems Manager - Session Manager を使用して EC2 インスタンスにログイン
AWS ユーザーは、 Systems Manager - Session Manager を使用して EC2 インスタンスにログインできます。 これにより、 AWS アカウントを追加費用なしでセキュアにできます。 たとえば、以下のことが可能です。
- SSH キー不要
- 踏み台ホスト不要
- セキュリティグループのインバウンドルールで 22 番ポートの開放が不要
詳細については、公式ドキュメントをご参照ください。
AWS リソース作成
EC2 インスタンスにアタッチされた IAM ロールは、 AmazonSSMManagedInstanceCore
のマネージドポリシーが必要です。 (31行目)
AWSTemplateFormatVersion: 2010-09-09
Resources:
EC2:
Type: AWS::EC2::Instance
Properties:
IamInstanceProfile: !Ref InstanceProfile
ImageId: ami-0f310fced6141e627 # Amazon Linux 2 AMI (HVM), SSD Volume Type
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:
# Necessary for Session Manager
- 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
次のコマンドで CloudFormation スタックをデプロイしてください。
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
EC2 インスタンスへログイン
i-xxxxxxxxxxxxxxxxx
を実際のインスタンス ID に置き換え、次のコマンドを実行してください。
ログインに成功するはずです。
$ aws ssm start-session --target i-xxxxxxxxxxxxxxxxx
Starting session with SessionId: iwasa.takahiro-xxxxxxxxxxxxxxxxx
sh-4.2$
クリーンアップ
以下のコマンドを使用して、プロビジョニングされた AWS リソースを削除してください。
aws cloudformation delete-stack --stack-name ec2-session-manager
まとめ
Systems Manager - Session Manager を利用すると、 SSH 鍵と踏み台ホストの管理を回避できます。
この投稿が、お役に立てば幸いです。