結論
- Compute EngineにローカルIPのみ付与してSSH接続するには以下が必要
1. Identity-Aware Proxy(IAP)機能を使う
2. IAPで保護されたトンネル ユーザー(roles/iap.tunnelResourceAccessor)ロールが必要 ★編集者ロールにはこのロールの権限がないことに注意
やろうとしたこと、やったこと
セキュリティを考慮して、Compute Engine(VM)にはなるべくグローバルIPアドレスを付与せずにローカルIPアドレスのみ付与したい。
Identity-Aware Proxy機能を利用してローカルIPアドレスのみで対象VMにコンソール画面からSSH接続しようとした。
しかし、個人用アカウントではうまくいったのだが、業務用のアカウントでは以下のメッセージが出て、ローカルIPアドレスのみでSSH接続ができなかった。(sshコマンドでIAP機能利用しようとしても失敗)
原因
「IAPで保護されたトンネル ユーザー(roles/iap.tunnelResourceAccessor)」ロールが足りていなかった。
個人用アカウントは"オーナー"ロールだったのでほとんど全てのことができるロールであったが、業務用のアカウントは"編集者"アカウントが割り当てられていた。(お試し環境であったのだが、編集者ロールなら大体のことができるだろうという安易な考えであった。)
そのため「IAPで保護されたトンネル ユーザー」ロールを追加することで、IAPによるSSH接続ができるようになった。
【ロール設定参考】
(1)「IAMと管理」の「IAM」から、該当ユーザ(プリンシパル)の編集ボタン(赤枠)を押下
(4)「IAP」等入力し、「IAPで保護されたトンネル ユーザー」ロールを検索
(5)「IAPで保護されたトンネル ユーザー」ロールが追加されていることを確認
最後に(所感)
編集者ロールならなんでもできると思い込んでロール設定に行き着くまでに時間がかかってしまった。
また、普段からオーナーロールで操作しているとロールを意識しないで操作できるので、個人アカウントでもちゃんとロールを意識して付与しなおす必要があるなと思う。