- 26 Dec 2022
- 1 分で読み終わります
- 印刷
- ダークライト
AWS Systems Manager Session Managerを用いた接続
- 更新日 26 Dec 2022
- 1 分で読み終わります
- 印刷
- ダークライト
概要
trocco とお客様が用意したサーバー間でAWS Systems Manager Session Managerを経由したSSHトンネルを張ることで、お客様のデータソースに対し、プライベートサブネット内の踏み台サーバーを経由して接続できます。
通常のSSHトンネルを使った接続と比べると、踏み台サーバーをパブリックサブネットに配置する必要が無くなるため、より安全にtroccoをご利用いただけます。
以下にAWS Systems Manager Session Manager(以降、単にSession Managerと表記します)を用いた接続の概略図を示します。
設定を行うには、Session Managerの接続情報を作成後、データソースの接続情報の設定から利用したいSession Managerの接続情報を選択します。
2022年8月時点でMySQLとPostgreSQLのみ対応しています。その他のデータソースについては、順次対応予定です。
Sesesion Managerについて、詳しくは以下のAWSのドキュメントをご覧ください。
AWS Systems ManagerSession Manager - AWS Systems Manager
前提条件
以下の項目をお客様のAWSアカウント上で実施していただく必要があります。
なお、これらはtroccoでSession Managerを利用するための最小限の設定項目です。
ご所属の組織のポリシーに合わせて修正をお願いいたします。
踏み台サーバーとなるインスタンスの作成
- インスタンスにはSSM Agentをインストールする必要があります
インストール手順についてはAWSのドキュメントをご覧ください。
SSM Agent の使用 - AWS Systems Manager
踏み台サーバーへのSession Manager接続を許可するためのIAMインスタンスプロファイルの設定
- AWS 管理ポリシーのAmazonSSMManagedInstanceCoreをインスタンスにアタッチしてください。
- または、AWSのドキュメントを参考に設定してください。
Session Manager アクセス許可を使用して、IAM インスタンスプロファイルを確認または作成する - AWS Systems Manager
踏み台サーバーへのSession Manager接続を許可するためのIAMポリシーの設定
- 以下のページの「エンドユーザーポリシー>セッションマネージャー and CLI」を参考にIAMポリシーを作成し、troccoで利用するIAMユーザにアタッチしてください。
クイックスタート のデフォルト IAM ポリシーSession Manager - AWS Systems Manager
設定方法
ヘッダーにある設定からSSM Session Manager接続情報をクリックしてください。
作成したSession Managerの接続情報の一覧ページに遷移します。
新しく接続情報を作成する場合は新規作成を押してください。
既存の接続情報を確認、または編集したい場合は対象の接続情報をクリックしてください。
Session Managerの接続情報の作成ページに遷移します。
必要な項目を入力して、接続情報を作成してください。
Session Managerを利用したいMySQLの接続情報の作成・編集ページで、AWS Systems Manager Session Manager経由で接続するにチェックを入れてください。
次に、接続に利用したいSession Managerの接続情報を選択してください。
選択肢が表示されていない場合はSSM接続情報を読み込むをクリックしてください。
なお、通常のSSHトンネルを使った接続との併用はできません。
入力項目
Session Managerの接続情報を作成するために必要な入力項目について説明します。
項目名 | 必須 | デフォルト値 | 内容 |
---|---|---|---|
名前 | Yes | - | trocco内部で利用する接続情報の名前を入力してください。 |
メモ | No | - | trocco内部で利用する接続情報のメモを入力してください。 |
AWSアクセスキーID | Yes | - | Session Managerを利用するためのAWSアクセスキーIDを入力してください。 |
AWSシークレットアクセスキー | Yes | - | Session Managerを利用するためのAWSシークレットアクセスキーを入力してください。 |
AWSリージョン | Yes | ap-northeast-1 | Session Managerを利用するリージョンを入力してください。 |
EC2インスタンスID | Yes | - | Session Managerを利用する際に踏み台となるEC2インスタンスのインスタンスIDを入力してください。 インスタンスIDは i- や mi- で始まる文字列です。 |
SSHポート | Yes | 22 | Session Managerを利用する際に、踏み台となるEC2インスタンスにSSH接続するポートを入力してください。 |
SSHユーザー | Yes | ec2-user | Session Managerを利用する際に、踏み台となるEC2インスタンスにSSH接続するユーザー名を入力してください。 |
SSH秘密鍵 | Yes | - | Session Managerを利用して接続する際に、踏み台となるEC2インスタンスに接続するための秘密鍵ファイルを入力してください。 一般に、EC2インスタンス作成時に選択、または作成したキーペアの秘密鍵となります。 |
SSH秘密鍵のパスフレーズ | No | - | SSH秘密鍵のパスフレーズがあれば入力してください。 |
補足
Session Managerを経由したSSHトンネルは転送前に張られ、転送完了後に閉じられます。
Session Manager上はセッションが残りますが、デフォルトでは20分後に閉じられます。
・完了後にセッションが閉じられるまでの時間を変更するには、以下のドキュメントを参考に設定してください。
・アイドルセッションのタイムアウト値を指定します。 - AWS Systems ManagerSession Managerのセッション自体の最大接続時間も設定可能です。
・何らかの理由でセッションが残り続けることを避けるため、設定を推奨します。
・詳しくは最大セッション時間の指定 - AWS Systems Managerを参照してください。
転送の実行環境は分離されているため、お客様間でSession Managerのセッションや、SSHトンネルが共有されることはありません。
接続に失敗する場合は、お客様の環境からの接続をお試しください。
お客様の環境に、AWS CLIとSession Managerプラグインをインストールしてください。
・AWS CLI バージョン 2 のインストール、更新、アンインストール - AWS Command Line Interface
・AWS CLI 用の Session Manager プラグインをインストールする - AWS Systems Manager検証したい接続のプロファイルを作成してください。
・設定ファイルと認証情報ファイルの設定 - AWS Command Line Interface以下のコマンドの実行をお試しください。
・aws ssm start-session --target <bastion instance ID> --profile <your profile> --document-name AWS-StartSSHSession
・Starting session with SessionIdから始まるメッセージが表示されていれば接続できています。
・お客様の環境から接続できない場合は、出力されるエラーメッセージを参考に、AWS上の設定の見直しをお願いいたします。
・お客様の環境から接続できる場合は、troccoへの入力間違いがないかお確かめください。
引き続きtroccoからの接続が失敗する場合は、サポートにお問い合わせください。