🎉
【検証】AWS EC2 Instance ConnectでSSHユーザー情報をIAMと紐付けて管理する
AWS EC2環境において、SSHアカウント管理に関して色々考えてたところ
これを使えば、IAMベースでSSH接続を管理できそう!ということで、試してみる。
今回は個別SSH鍵を登録して利用するパターンで検証です!
結論
ドキュメント通りやればできる!
作業的なログ
- EC2インスタンス建てる(セットアップ)
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-connect-set-up.html
テスト環境なのでAmazonLinux2を採用。最小限なのでt2.microで
ネットワークもインターネットへのアクセスができるように配置する
sudo yum install ec2-instance-connect
実行したら既に入ってた!のでそのままスキップ
あとで使うので、Tagに eci
:true
を追加しておく
- ログインが必要なIAMユーザーを作成
AWS ConsoleからテストIAMユーザー(s.otani.iam)を作成し、ポリシーをアタッチ
EC2のタグでアクセス管理(eci:trueのインスタンス & IAMのusernameでのみログイン)ができるようにしてます。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"ec2-instance-connect:SendSSHPublicKey",
"Resource": "arn:aws:ec2:ap-northeast-1:[account-id]:instance/*",
"Condition":{
"StringEquals":{
"aws:ResourceTag/eic":true,
"ec2:osuser": "${aws:username}"
}
}
},
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
}
- SSH鍵を作成してパブリッシュしてみる
てきとーに鍵作成
ssh-keygen -t rsa -f my_key
公開鍵をSend
s.otani@ ~ % aws ec2-instance-connect send-ssh-public-key \
--region ap-northeast-1 \
--instance-id i-EXAMPLE_INSTANCE \
--instance-os-user s.otani.iam \ # IAMのユーザー名
--ssh-public-key file://my_key.pub # 作成した公開鍵
{
"RequestId": "idididididididididididididididid",
"Success": true
}
- sshでアクセス
OK! ログイン完了!
s.otani@ ~ % ssh -o "IdentitiesOnly=yes" -i my_key s.otani.iam@xx.xx.xx.xx
Enter passphrase for key 'my_key':
Last login: Mon May 8 10:25:44 2023 from hogehogehogehoge.net
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
5 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.
[s.otani.iam@ip-xxx-xx-x-xx ~]$
おつかれさまでした!!
もちろん。Linuxユーザーが存在していないと鍵を送ってもSSH段階ではじかれます
s.otani@ ~ % ssh -o "IdentitiesOnly=yes" -i my_key s.otani.iam2@xx.xx.xx.xx
s.otani.iam2@xx.xx.xx.xx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Discussion