LoginSignup
2

More than 3 years have passed since last update.

IAM権限のないユーザに、限定的なIAM権限を付与する

Last updated at Posted at 2020-12-17

背景

AWSを使用するプロジェクトでは多くの場合、システム管理者等がAdministrator権限を持ち、
開発者や運用者はIAMなどの強い権限は持っていないと思います。

例えば開発フェーズやテストで何度も調整を行う際に、毎回管理者が対応するのも大変かと思います。
また、開発環境であれば限定的に権限を付与しても良い場合もあります。

「え?IAMの権限なんて使う…?」と思うかもしれませんが
例としては、ECSのAutoScaling設定調整が挙げられます。

ECSのFullAccess権限があったら変更くらいできるだろう、と思いますが
一般的にECSのAutoScalingでは、AutoScaling使用許可する専用のIAMロールを使用しています。

スクリーンショット 2020-12-17 19.24.10.png

サービス更新画面でいうとこのあたり。

Scalingするためのポリシーとは具体的になんぞや?というと
・トリガーにしているCloudWatchアラームの読取/書込
・サービスの必要タスク数変更
などの権限が挙げられます。

つまり本題に戻ると、ECSの必要タスク数を1から2に変更したい、という場合
「ECSサービスの変更」権限=ECS権限 に加えて
「AutoScaling用Roleを変更する」権限=IAM権限 が必要になります。

開発者がIAM権限を持っていない場合、AccessDeniedとなり変更ができません。

以上のように、AWSユーザのみでなくAWSサービスに対してもIAM権限を与えているケースは多いです。
となると、ユーザが追加でIAM権限が必要になったりします。
だからといってAdministrator権限をむやみに増やせないですよね。

対処法

このような場合は、該当のRoleを変更する権限を、リソースを限定してユーザに与えれば解決します。

今回の例だと、ECSのAutoScalingRoleというリソースのみ、Role変更権限を与えます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::XXXXXXXXXXXX:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService"
        }
    ]
}

こちらがサンプルですが、"iam:PassRole"をリソース指定した上で与えます。
因みに今回指定しているRoleは、AWSのマネージドロールのARNです。

まとめ

AWS IAMは、ユーザのみでなくAWSサービスにも権限を与えるものなので、
設計する際は頭の中で整理しないと混乱しますね。。
権限を変更する権限?誰が使うんだっけ?サービス・・・?

ただここを間違うと、必要のない権限まで与えてしまいリスクが大きくなるので、定期的に見直しましょう。

おまけ

そういえば、2021/1/29でECSの管理マネージドポリシーの推奨が変更になります。
従来のポリシーにiam:passroleが入っていますが、リソースもコンディションも限定されていないですね。
https://docs.amazonaws.cn/en_us/AmazonECS/latest/developerguide/managed-policy-transition.html

◆これまでのポリシー(抜粋) 
AmazonEC2ContainerServiceFullAccess

                "iam:PassRole"
            ],
            "Resource": "*"

◆新しい推奨ポリシー 
AmazonECS_FullAccess
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_managed_policies.html#AmazonECS_FullAccess

今使っているポリシーが使えなくなるわけではないですが、これを機に権限周りを見直そうと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2