1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

セッションマネージャーがリモートホストのポートフォワードに対応した件

Last updated at Posted at 2022-05-31

背景

AWS Summit Japan 2022 の興奮冷めやらぬ間にしれっとAWSが次ような発表をしました。
AWS Systems Manager announces support for port forwarding to remote hosts using Session Manager

詰まるところ今まではローカルホストのポートフォワードしか対応できていなかったので、外部からRDSへ接続する為の踏み台に対して SSH アカウントを個別に発行する必要がありました。
SSH アカウントの管理ではキーペアの登録等で運用が面倒でしたが、それが一切不要になりました。

課題

一部の運用では「セッションマネージャーを許可したいだけだったのに RDS に接続できてしまう」というのが不都合だということで、この機能を制限してみる。

解決

今回の機能のメリットは「IAMだけで集中管理ができる」ことなので、リモートホストに対するポートフォワード機能をIAMポリシーで制限してしまえば良い。

具体的な制限には若干の特徴があるので注意してください。

基本形

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ssm:{region}:{account_id}:document/AWS-StartPortForwardingSessionToRemoteHost"
        }
    ]
}

結果

{account_id} を接続先のAWSアカウントIDにしてしまうと、繋がってしまうので、拒否したい場合はアスタリスクにしておくべし。

繋がらない(OK)

"Resource": "arn:aws:ssm:*:*:document/AWS-StartPortForwardingSessionToRemoteHost"
"Resource": "arn:aws:ssm:ap-northeast-1:*:document/AWS-StartPortForwardingSessionToRemoteHost"

繋がる(NG)

"Resource": "arn:aws:ssm:*:111111111111:document/AWS-StartPortForwardingSessionToRemoteHost"
"Resource": "arn:aws:ssm:ap-northeast-1:111111111111:document/AWS-StartPortForwardingSessionToRemoteHost"

一言

この挙動はどこか別のAWSアカウントと通信しているということか。

それと、RDSへの接続情報知っていれば、SSMだろうがSSHだろうが接続出来てしまうよね。セッションマネージャーのリモートホストポートフォワードは困るというのはそもそもの運用に問題は無いだろうか。

最後にインフラエンジニアは「SSHしたら負け」だと信じてます。

って「一言」どころじゃなくなってるし。

さらに一言

そもそも接続のやり方どうなってるん?な説明も簡潔に。

ポートフォワード

# aws ssm start-session \
--target {instance_id} \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--parameters '{"host":["{rds_endpoint"],"portNumber":["3306"], "localPortNumber":["3306"]}' \
--profile {profile} &

接続

# mysql -u {user} -p -h 127.0.0.1 -P 3306
Enter password:

& を使ってバックグラウンド実行させておけば同じ shell で接続できます。
但し、作業後は一応バックグラウンドプロセスを kill しておきましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?