:::: MENU ::::

AWS Cloud9のIDEにSAML 2.0 フェデレーションユーザーやSwitchRoleしたユーザーを招待する

Pocket

IAM ユーザーで管理しておらずフェデレーションを利用してコンソールログインユーザーを管理している AWS にて、Cloud9 の IDE を共有しようとして困ったことがあったので、IDE に招待できるメンバーを調べました。

AWS Cloud9 とは?

クラウドベースの統合開発環境(IDE)です。
もともとは Cloud9 という1つのサービスでしたが、AWS が買収して一機能として組み込まれました。

AWS Cloud9 から環境を作成すると、Cloud9 が入った EC2 が立ち上がり IDE が使えるようになります。

AWS Cloud9 特有の権限管理

AWS Cloud9 自体の操作は IAM にて管理されていますが、IDE 上の操作は Cloud9 上で管理されています。
そのため AWS の Administrator のポリシーを持っていようと、IDE の操作権限がなければ他のユーザーが作った IDE に入ることはできません。

AWS Cloud9 の IDE にメンバーを招待する方法

IDE の右上にある Share からメンバーの招待ができます。
Invite Members に arn を入れて権限を R か RW を決めて Invite するだけです。

IAM ユーザーしか招待できないように見えますが、あえて間違った arn を入力すると以下のようなエラー文が表示されます。

Error updating environment members

1 validation error detected: Value 'arn:aws:sts:' at 'userArn' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:aws:(iam|sts)::\d+:(root|user|federated-user|assumed-role)\/?\S*

正規表現を見る限り、IAM ユーザーだけでなくルートユーザーやフェデレーションユーザー、AssumeRole を利用したユーザーも招待できそうです。

arn:aws:(iam|sts)::\d+:(root|user|federated-user|assumed-role)\/?\S*

特定 Role(Developer)を AssumeRole してコンソールログインしたユーザーを追加する

今回はフェデレーションユーザーと SwitchRole したユーザーを追加したいので、どちらも arn 的は以下のフォーマットになります。
(自身の arn がわからないときは CloudTrail にいって自分が起こしたイベントを調べれば arn が明記されています)

arn:aws:sts::123456789012:assumed-role/[RoleName]/[UserName]
  • 招待できた arn
    • arn:aws:sts::123456789012:assumed-role/Developer/username@example.com
    • arn:aws:sts::123456789012:assumed-role/Developer/switchrole-username
    • arn:aws:sts::123456789012:assumed-role/Operator/switchrole-username
  • 招待できなかった arn
    • arn:aws:sts::123456789012:assumed-role/Developer
    • User arn:aws:sts::123456789012:assumed-role/Developer does not exist.
    • arn:aws:sts::123456789012:assumed-role/Developer/*
    • User arn:aws:sts::123456789012:assumed-role/Developer/* does not exist.

一人ずつ登録するのは面倒なので使っている Role ごとに登録できないか試したんですがダメでした。
あと招待できても、AssumeRole 前が同じ人だが AssumeRole した Role が異なると別人として扱われるのが厄介でした。
(調べ足りていないだけでワイルドカード的な権限追加の仕方があったりするのだろうか)

厳格なのはいいのですが、そこまでのものと求めておらずアカウントに入れる人であれば誰でも使える IDE というような利用の仕方はしづらいです。

所感

AWS Cloud9 自体はさくっと Lambda を作るときには便利なのですが、あくまでも個人の開発環境としてか片手で数えられるチーム(かつ入れ替えが稀)のときに使える環境という印象です。
Cloud9 の environment に対して権限を持っていれば IDE が使えるくらいの特権権限とか欲しいです。。

参考

Pocket