はじめに
AWSを使ってシステムのプロトタイプを作成していると、Roleをリソースに付与するなどの作業で、その都度IAM権限が必要になる。
ので、ちょいちょい「xxxの権限必要なんですけど…」との問い合わせをもらうことになる。
- LambdaでS3やCloudWatchのトリガーを受け取るためのロール付与
- GlueでS3をクロールするためにS3アクセスのポリシーを作成
- ECSで自動起動・停止の設定をする
- etc...
最初は都度対応していたが…
この辺を読んで、最初は以下の対応で済ませていた。
- 開発者用ユーザーグループを作成
- 開発用ポリシーをユーザーグループに付与して、ポリシーを編集して権限を随時追加
編集していたポリシーの例。
~
{
"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*"とかも加えたかったが、ロールやポリシーを作れないと困るので、ひとまずこれで。
以下を参考に随時修正予定。