awsのIAMポリシーでPrincipalにIAM Groupは指定できない

アカウントを跨いで作業をするために、こんな感じの信頼関係をもったロールを作成。

{
  "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にはグループは指定できない模様。

IAM JSON ポリシーの要素: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にロールの切り替えできる範囲にグループを指定できないのでチクチクユーザーを指定していく必要があることか・・・。

追記:

この方法でも、コンソールではロールの連鎖ができないので無理

コンソールでのIAMロールによるIAMロールへのアクセス許可(ロールの連鎖)

AWS構築サービスの全てをまとめた資料を公開中

ハックノート(TOWN株式会社)では、AWSの導入や構築支援を行っています。AWS導入メニューやサービス詳細、構成例や費用を掲載した資料をダウンロードできます。

AWSの新規導入やAWSへの移行を検討の際は、ぜひご参考ください。


APNコンサルティングパートナー

TOWN株式会社はAmazon公認コンサルティングパートナーです。