【AWS】IAMFullAccessを付与せずIAM Roleの作成とアタッチを行う方法


【AWS】IAMFullAccessを持たずして Role を作成することは可能なのか


AWS (猛)特訓中のマルオです。先日こんな話題があがりました。

「ユーザにIAMFullAccessを渡さずに、ロールの作成とアタッチができるユーザ権限は無いものか」

IAMFullAccessは渡したくなけど、運用上特定のユーザに一時的に付与せざるを得ないケースはままあります。対象が信頼のおけるユーザでも、管理者としてはちょっと気持ちの悪いこの状況。そこで要望に応えられるのか?を検証してみます。

期待する結果

  • IAM Role を作成できる 
  • IAM Role をインスタンスにアタッチできる 

前提条件

  • 対象ユーザのポリシーは PowerUsers が付与されている 

作業の流れ

  1. IAMポリシーを作成する 
  2. 作成したポリシーを対象ユーザに付与 
  3. 対象ユーザが Role を作成 
  4. インスタンスを立ててロールをアタッチ 



1.IAMポリシーを作成する

目的の動作ができるポリシーをIAMPassRoleAccessという名前で作成してみます。(名前は任意) 



作成したポリシーの内容。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:List*",
                "iam:PassRole",
                "iam:CreateRole",
                "iam:CreateInstanceProfile",
                "iam:AddRoleToInstanceProfile",
                "iam:AttachRolePolicy"
            ],
            "Resource": "*"
        }
    ]
}

どうやら iam:PassRoleが Role を操作する権限になるようです。

しかし、このアクセス権限だけではロールを作成したりアタッチするには権限が不足しています。どの権限が足りないかは Role 作成時にエラーで教えてくれるので、不足しているアクセス権限を追加していきます。 

2.作成したポリシーを対象ユーザに付与 

作成したポリシーを対象のユーザにアタッチ。 


3.対象ユーザが Role を作成 

対象のユーザでログインして Role を作成してみます。



ためしにEC2インスタンスを立てるので、AmazonEC2FullAccessを付与。



4.インスタンスを立ててロールをアタッチ

ここまでで対象のユーザがロールを作成するところまで出来たので、適当なインスタンスに、作成した Role 「IAMRoleAccess_roleTest」を付与してみます。 画像はインスタンス作成時に Role を選択する箇所。リストに表示されていれば成功。


ちなみに権限不足の状態でも Role は作成されますが一覧には表示されないようです。

これで無事、対象ユーザで Role 作成とアタッチが出来ました。これで気持ちの悪い状況とはおさらばです。

以上

このブログの人気の投稿

【GCP】Compute EngineでVPNサーバーを立てるときの注意点

【GCP】Compute Engineからメール送信する方法 (SendGrid編)