AWS Systems Manager Session Managerを用いた接続
  • 18 Mar 2024
  • ダーク
    ライト
  • PDF

AWS Systems Manager Session Managerを用いた接続

  • ダーク
    ライト
  • PDF

Article Summary

概要

trocco とお客様が用意したサーバー間でAWS Systems Manager Session Managerを経由したSSHトンネルを張ることで、お客様のデータソースに対し、プライベートサブネット内の踏み台サーバーを経由して接続できます。
通常のSSHトンネルを使った接続と比べると、踏み台サーバーをパブリックサブネットに配置する必要が無くなるため、より安全にtroccoをご利用いただけます。

以下にAWS Systems Manager Session Manager(以降、単にSession Managerと表記します)を用いた接続の概略図を示します。

image.png

設定を行うには、Session Managerの接続情報を作成後、データソースの接続情報の設定から利用したいSession Managerの接続情報を選択します。
2024年02月時点でMySQLとPostgreSQLのみ対応しています。
Sesesion Managerについて、詳しくは以下のAWSのドキュメントをご覧ください。
AWS Systems ManagerSession Manager - AWS Systems Manager

制約

SSHトンネルを使った接続との併用はできません。

前提条件

以下の項目をお客様のAWSアカウント上で実施していただく必要があります。
なお、これらはtroccoでSession Managerを利用するための最小限の設定項目です。
ご所属の組織のポリシーに合わせて修正をお願いいたします。

踏み台サーバーとなるインスタンスの作成

  • インスタンスにはSSM Agentをインストールする必要があります
    インストール手順についてはAWSのドキュメントをご覧ください。
    SSM Agent の使用 - AWS Systems Manager

踏み台サーバーへのSession Manager接続を許可するためのIAMインスタンスプロファイルの設定

踏み台サーバーへのSession Manager接続を許可するためのIAMポリシーの設定

  • 以下のページの「エンドユーザーポリシー>セッションマネージャー and CLI」を参考にIAMポリシーを作成し、troccoで利用するIAMユーザーにアタッチしてください。
  • 以下は、最低限の権限を付与するためのIAMポリシーの例です。参考としてご参照ください。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ssm:StartSession"
                ],
                "Resource": [
                    "arn:aws:ec2:<REGION>:<ACCOUNT-ID>:instance/<INSTANCE-ID>",
                    "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
                ],
                "Condition": {
                    "BoolIfExists": {
                        "ssm:SessionDocumentAccessCheck": "true" 
                    }
                }
            }
        ]
    }
    

設定方法

以下の接続情報の作成・編集画面にて、AWS Systems Manager Session Manager経由で接続するを有効にします。

  • MySQL接続情報
  • PostgreSQL接続情報

AWS Systems Manager Session Manager接続情報を新規作成したい場合は、SSM接続情報を追加をクリックしてください。
すでに作成したAWS Systems Manager Session Manager接続情報を確認したい場合は、SSM接続情報一覧を表示するをクリックしてください。

image.png

入力項目

Session Managerの接続情報を作成するために必要な入力項目について説明します。

項目名必須デフォルト値内容
名前Yes-trocco内部で利用する接続情報の名前を入力してください。
メモNo-trocco内部で利用する接続情報のメモを入力してください。
AWSアクセスキーIDYes-Session Managerを利用するためのAWSアクセスキーIDを入力してください。
AWSシークレットアクセスキーYes-Session Managerを利用するためのAWSシークレットアクセスキーを入力してください。
AWSリージョンYesap-northeast-1Session Managerを利用するリージョンを入力してください。
EC2インスタンスIDYes-Session Managerを利用する際に踏み台となるEC2インスタンスのインスタンスIDを入力してください。
インスタンスIDは i- や mi- で始まる文字列です。
SSHポートYes22Session Managerを利用する際に、踏み台となるEC2インスタンスにSSH接続するポートを入力してください。
SSHユーザーYesec2-userSession Managerを利用する際に、踏み台となるEC2インスタンスにSSH接続するユーザー名を入力してください。
SSH秘密鍵Yes-Session Managerを利用して接続する際に、踏み台となるEC2インスタンスに接続するための秘密鍵ファイルを入力してください。
一般に、EC2インスタンス作成時に選択、または作成したキーペアの秘密鍵となります。
SSH秘密鍵のパスフレーズNo-SSH秘密鍵のパスフレーズがあれば入力してください。

補足

Session Managerを経由したSSHトンネルは転送前に張られ、転送完了後に閉じられます。

転送の実行環境は分離されているため、お客様間でSession Managerのセッションや、SSHトンネルが共有されることはありません。

接続に失敗する場合は、お客様の環境からの接続をお試しください。


この記事は役に立ちましたか?