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

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

Takahiro Iwasa
Takahiro Iwasa
3 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

まとめ

Systems Manager - Session Manager を利用すると、 SSH 鍵と踏み台ホストの管理を回避できます。

この投稿が、お役に立てば幸いです。

Takahiro Iwasa

Takahiro Iwasa

Software Developer at KAKEHASHI Inc.
Involved in the requirements definition, design, and development of cloud-native applications using AWS. Now, building a new prescription data collection platform at KAKEHASHI Inc. Japan AWS Top Engineers 2020-2023.