アカウントを跨いで作業をするために、こんな感じの信頼関係をもったロールを作成。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::XXXXXXXXXXXX:user/user-name", "arn:aws:iam::XXXXXXXXXXXX:group/Employee" ] }, "Action": "sts:AssumeRole", "Condition": { "IpAddress": { "aws:SourceIp": "xxx.xxx.xxx.xxx/32" } } } ] }
あるアカウントのuser-nameユーザーと、Employeeグループに所属するユーザーのみ、このロールへの切替を許可をしようと思ったのですが、
エラーが発生しました: Invalid principal in policy: “AWS”:”arn:aws:iam::XXXXXXXXXXXX:group/Employee”
調べてみると、ポリシーのprincipalにはグループは指定できない模様。
プリンシパルの指定
プリンシパルは、AWS アカウント、IAM ユーザー、IAM ロール、フェデレーティッドユーザー、または引き受けたロールユーザーの Amazon リソースネーム (ARN) を使用して指定します。IAM グループやインスタンスプロファイルをプリンシパルとして指定することはできません。
となると、許可をアカウントまるごとにするか、ロールを指定するのが良さげかなぁ・・・。
下の構成で作ってみる。
所属しているグループのユーザーが環境A、Bで操作可能にしてみる。
環境Aユーザー「user-name」:権限無し
環境Aグループ「G」:ロール切り替え権限のみのポリシー「GPolicy」をアタッチ
環境Aポリシー「GPolicy」:A.administratorへのロール切り替えを許可する。切り替えは自社のIPの時のみ許可
環境Aロール「A.administrator」:AのAdministrator権限
環境Bロール「B.administrator」:A.administratorのみ切り替えを許可する。
・A環境を使いたい場合 ログインしてA.administratorへロールを変更。
・B環境を使いたい場合 ログインしてA.administratorへロールを変更後、B.administratorへロールを変更。
手間だがこの流れが正しいのか・・・?
問題になるのはA.administratorにロールの切り替えできる範囲にグループを指定できないのでチクチクユーザーを指定していく必要があることか・・・。
追記:
この方法でも、コンソールではロールの連鎖ができないので無理