2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS開発用アカウントのIAM権限(結局Admin)

Last updated at Posted at 2021-11-04

はじめに

AWSを使ってシステムのプロトタイプを作成していると、Roleをリソースに付与するなどの作業で、その都度IAM権限が必要になる。
ので、ちょいちょい「xxxの権限必要なんですけど…」との問い合わせをもらうことになる。

  • LambdaでS3やCloudWatchのトリガーを受け取るためのロール付与
  • GlueでS3をクロールするためにS3アクセスのポリシーを作成
  • ECSで自動起動・停止の設定をする
  • etc...

最初は都度対応していたが…

IAM でのセキュリティのベストプラクティス

この辺を読んで、最初は以下の対応で済ませていた。

  • 開発者用ユーザーグループを作成
  • 開発用ポリシーをユーザーグループに付与して、ポリシーを編集して権限を随時追加

編集していたポリシーの例。

   ~
        {
            "Effect": "Allow",
            "Action": [
                "iam:*ServerCertificate*",
                "iam:PassRole",
                "iam:GetRole",
                "iam:CreateRole",
                "iam:ListRoles",
                "iam:ListPolicies",
                "iam:PutRolePolicy",
                "iam:ListRolePolicies",
                "iam:ListAttachedRolePolicies",
                "iam:CreateServiceLinkedRole",
                "iam:DeleteServiceLinkedRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy"
                
            ],
            "Resource": "*"
        }
   ~

S3とLambdaでやり取りする程度の作業なら、これでよかったが…

キリがないので、一時的にAdmin権限を付与

段々開発が進むにつれて、「権限お願いします」のやり取りが増えてきて、もうこれキリが無いなということに。

システム開発プロジェクトにおけるIAMポリシー権限はどうしたらいいですか

役割 権限
管理者 root アカウントは普段使いしない、MFAで保護
アプリチーム 必要な権限を広めで
インフラチーム Admin 相当
運用チーム 運用の範囲次第

アプリチームには広めの権限を与えます。
使うリソースごとの FullAccess を付与することもありです。
AWS CDK や Serverless Framework 等を使う場合は AdminstratorAccess を求められるかもしれませんが、円滑なアプリ開発のために許容しましょう。

↑を参考に、一時的に「AdministratorAccess」を開発用ユーザーグループに付与して、開発が済んだら外すことにした。
(上の記事でいうところの、アプリチームとインフラチームの作業を合わせてやっているので)

禁止する操作も追加しておく

上のサイトを参考に、禁止操作も付け加えておく。

   ~
        {
            "Sid": "DenyBoundaryDelete",
            "Action": [
                "iam:DeleteUserPermissionsBoundary",
                "iam:DeleteRolePermissionsBoundary",
                "iam:PutRolePermissionsBoundary",
                "iam:PutUserPermissionsBoundary"
            ],
            "Effect": "Deny",
            "Resource": "*"
        },
        {
            "Sid": "DenyCloudTrailAndConfigChange",
            "Action": [
                "cloudtrail:DeleteTrail",
                "cloudtrail:PutEventSelectors",
                "cloudtrail:StopLogging",
                "cloudtrail:UpdateTrail",
                "config:DeleteConfigurationRecorder",
                "config:DeleteDeliveryChannel",
                "config:DeleteRetentionConfiguration",
                "config:PutConfigurationRecorder",
                "config:PutDeliveryChannel",
                "config:PutRetentionConfiguration",
                "config:StopConfigurationRecorder"
            ],
            "Effect": "Deny",
            "Resource": "*"
        },
        {
            "Sid": "DenyAnyActionsAdminUser",
            "Action": [
                "iam:ChangePassword",
                "iam:Delete*",
                "iam:Detach*"
            ],
            "Effect": "Deny",
            "Resource": "*"
        }
   ~

本当は"iam:Create*"とかも加えたかったが、ロールやポリシーを作れないと困るので、ひとまずこれで。

以下を参考に随時修正予定。

AWS のサービスのアクション、リソース、および条件キー

2
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?