:::: 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