Systems Manager - Session Manager を使用して EC2 インスタンスにログイン

Systems Manager - Session Manager を使用して EC2 インスタンスにログイン

Takahiro Iwasa
(岩佐 孝浩)
Takahiro Iwasa (岩佐 孝浩)
2 min read
EC2 Session Manager Systems Manager

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
Takahiro Iwasa
(岩佐 孝浩)

Takahiro Iwasa (岩佐 孝浩)

Software Developer at KAKEHASHI Inc.
処方箋データ収集基盤の設計・開発・運用に携わっています。