20220813_AWS-Basics_AWS-SSM-Tunnelを試してみた

1.7K Views

August 13, 22

スライド概要

profile-image

Oita(1988.03) → Tokyo(2010.04) → Fukuoka(2021.11)

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

AWS SSM Tunnelを試してみた 2022/08/13 AWS-Basics SSM#2

2.

お話すること ・ 自己紹介 ・ 以前体験したこと ・ 実際にやってみた ・ まとめ

3.

自己紹介 大分(22年) → 東京(11年) → 福岡(2021.11~) 電力系 通信事業 会社 独立系 SIer 業務アプリ Java Oracle インフラ UTM L3/L2 Sw 仮想化基盤 クラウド CCoE支援 SPP運営 情シス MS製品 DC巡り インフラ クラウド SaaS管理 情シス https://midnight480.com/ midnight480 tetsuya.shibao shibao-tetsuya 好きなAWSサービス - Organizations, CloudFormation StackSets, SSO

4.

以前体験したこと ・ こんなときあなたはどういう構成を考えますか? 「今、あるプロジェクトでWorkspaces経由で接続、作業してもらっているんですけど、 作業の進捗が遅れていてプライベートサブネットにあるEC2にダイレクトアクセスできませんかね?」 - AWS環境にアクセスすることは可能 - Prd環境、マルチAZかつセキュリティグループも複雑 - ASAPで … 😇

5.

以前体験したこと ・ 当時は ELB(CLB)を使ってSSHをフォワードする形で実装しました 22 10022 CLBコストが掛かる 詳細は本筋から外れるのでこちらをご覧ください 👉 https://qiita.com/mid480/items/ef6a5af90f42d42eb66f

6.

実際にやってみた AWS CLIとは ・AWS のサービスを管理するための統合ツールです ダウンロードおよび設定用の単一のツールのみを使用して、コマンドラインから AWS の複数のサービスを制御し、ス クリプトを使用してこれらを自動化することができます Windows - Winget winget install awscli Windows - Chocolatey choco install awscli https://aws.amazon.com/jp/cli/ macOS - Homebrew brew install awscli

7.
[beta]
実際にやってみた

AWS SSM ポートフォワーディングを試してみる
・ターミナルソフトでAWS CLIで立ち上げてつなげてみます
- Name:WindowsにRDP(TCP/3389)するためローカルの13389をポートフォワーディング
Windows - Powershell
$instanceId=$(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --filter "Name=tag:Name,Values=Windows" --output text)
Write-output $instanceId
aws ssm start-session --target $instanceId --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
macOS - Terminal
instanceId=$(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --filter "Name=tag:Name,Values=Windows" --output text)
echo $instanceId
aws ssm start-session --target $instanceId --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["3389"], "localPortNumber":["13389"]}'

8.
[beta]
実際にやってみた

AWS SSM ポートフォワーディングを試してみる
・ターミナルソフトでAWS CLIで立ち上げてつなげてみます
- Name:LinuxにSSH(TCP/22)するためローカルの10022をポートフォワーディング
Windows - Powershell
$instanceId=$(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --filter "Name=tag:Name,Values=Linux" --output text)
Write-output $instanceId
aws ssm start-session --target $instanceId --document-name AWS-StartPortForwardingSession --parameters "portNumber=22, localPortNumber=10022"
macOS - Terminal
instanceId=$(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --filter "Name=tag:Name,Values=Linux" --output text)
echo $instanceId
aws ssm start-session --target $instanceId --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["22"], "localPortNumber":["10022"]}'

9.

実際にやってみた AWS SSM ポートフォワーディングを試してみる ・便利な一方でHTTPS経由だと抜け穴となる通信ができてしまいます - 企業によっては漏洩の観点から外部のRDP/SSHはブロック、管理したいという ポリシーがあると思うので利用する場合は事前に相談しましょう 13389 3389 10022 22

10.

実際にやってみた AWS SSM ポートフォワーディングを試してみる ・TCPの通信であれば、RDPやSSH以外にもHTTPでも実現可能でした - ポートフォワードをさらにポートフォワードして混乱する(実際に試して思った)と思うので、 ご利用は計画的に 18080 8080 10022 22 80

11.

まとめ ・プライベートなインスタンスに直接アクセスできる機能は便利(利用前の相談が大事) ・今回は試しに接続するためターミナル起動中のみのトンネリングで検証、 実際の現場ではスクリプトファイルで汎用的に利用可能(Workshopのページにもサンプルあり) ・AWS CLIは使えるようになると視野が広がってオススメ(気になる方はJAWS-UG CLI専門支部へ)