CIF / change explainer

接続方法が
SSHからSSMへ

CIFからEC2・RDS・S3を操作するときの通り道を、SSH秘密鍵と公開IPに依存する方法から、AWSの権限で管理する方法へ変更しました。

01 / access
鍵を持たずに接続

AWS IAMの権限で接続先を決めます。

02 / operations
EC2・RDS・S3を移行

対話操作、コマンド、ファイル、DB、同期をSSM化しました。

03 / github
Deployment表示を整理

リソース名とブランチ名だけを表示します。

the big picture

一番大きな変更

接続先は同じ。入口だけが変わります。

これまで

SSH

接続に機械の情報と鍵が必要

利用者 / CIF コマンドを実行
SSH 秘密鍵・公開IP・22番ポート
API EC2 koucharetv-api-1
コマンド非対話実行
ファイル取得
RDSトンネル
S3同期
運用する鍵と公開経路が増える

これから

SSM

AWSの権限で安全に接続

利用者 / CIF 同じコマンドを実行
AWS IAM 「誰が・どのEC2へ」を判定
Session Manager 公開IP・SSH鍵・22番ポートなし
API EC2 ssm-operatorとして実行
コマンド実行
ファイル取得
RDSトンネル
S3同期
接続と権限をAWSに集約
what users notice

操作ごとの変化

「対話」「自動処理」「トンネル」を使い分けます。

interactive / TTY

EC2に入る

人が画面を見ながら操作する対話シェルです。

cif ec2 session
対話接続
command / non-TTY

コマンドを自動実行

EC2上でコマンドを実行し、結果と終了状態だけを受け取ります。

cif ec2 run "..."
非TTY・自動処理
sync / non-TTY

S3と同期する

--ssm を指定すると、API EC2上でSSM経由の同期を実行します。

cif s3 sync ... --ssm
非TTY・自動処理
tunnel / non-TTY

RDSへ接続する

SSMで通路だけを作り、手元のDBクライアントを使います。

cif rds query / dump
SSMトンネル
who gets access

権限の流れ

EC2上では専用ユーザーとして動きます。

作業者 CIFを実行
AWS IAM stg / prd と対象EC2を制限
ssm-operator app-accessで必要な範囲を操作
scope

今回の変更範囲

今回やったこと

CIFのEC2・RDS・S3操作をSSM経由へ移行しました。EC2の対話操作は `session`、非対話操作は `run` に分けています。

GitHub Deployment

descriptionは「リソース名」と「ブランチ名」だけになりました。

別対応として残るもの

SSH公開経路そのものの廃止(22番ポート、DNS、鍵など)は別Issue #393の範囲です。