目次
はじめに
こんにちは、omkです。
Cloud9の権限周りについてあんまり認識していなかったのですが、
悲劇は突然に起こりました。
とあるAWSアカウントにひっそりと存在するCLoud9……
そのAWSアカウントは別のAWSアカウントのユーザーから特定のIAMロールにスイッチして使われており、
Cloud9環境もそのIAMロールの権限のもとで作成されていました。
Cloud9には所有者が設定されていて、権限を持たないユーザーはIDEを開くことすらできません。
まぁでもIAMロールで作った環境だし同じロールで接続してたら問題なく別の人でも使えるでしょ。
そう思っていました。あのときまでは。
そうして時は流れ、季節が一巡したある日……
ぎゃ~~~~~~!!
ちゃんとスイッチ元のユーザーに紐づいてた~~~~~!!!!
スイッチして作成されたCloud9の所有者にはセッションのARNが割り当てられ、WEBブラウザでスイッチした際にはセッション名は自動でユーザー名が割り当てられるため、スイッチ元アカウントのユーザー名が紐づくようになっていました。
IAM ID
AssumeRole
※CLIのAssumeRoleコマンドでテキトーなセッション名を指定して環境を作成してみたところCloud9の所有者はテキトーなセッション名に紐付くようになりました。
ということで同じIAMロールを利用していても別のIAMユーザーにログインしていた場合は権限を持たないためIDEにアクセスできませんでした。
解決策
Cloud9のIDEはシェアすることが出来ます。
AWS Cloud9 で共有環境を使用する
よって別のユーザーに対しても権限を付与していきます。
IDEを開いて右上の「Share」ボタンを押してシェアします。
次の画面が表示されます。
アカウント内のIAMユーザーの追加であればユーザー名だけ入力すれば追加出来ます。
今回はスイッチロールによるセッションを許可する必要があるのでデフォルトのセッション名であれば以下を指定します。
arn:aws:sts::アカウントID:assumed-role/ロール名/セッション名(元のユーザー名)
読み取り専用と読み書き権限から与える権限を選択して「Invite」を押すとすぐに対象で接続できるようになりました。
ちなみにワイルドカードで一括許可みたいなのはできないみたいです。
こわいなーこわいなー
アーキテクト課のomkです。
AWSについて雑多に取り組んだ内容を発信しています!!