説明
AWS::IAM::User の Policies と ManagedPolicyArns は、ポリシーをユーザーに直接関連付けます。ユーザーごとに管理すると、同じ業務のアカウント間で権限に差が生じたり、業務変更後も不要な権限が残ったりする場合があります。直接の関連付け自体が過剰な権限を意味するわけではありません。
想定される影響
個別の例外が増えると、アクセス権限の確認や取り消しが複雑になり、未使用の権限を見落としやすくなります。
対処方法
IAM ユーザーの共通権限はグループで管理し、ワークロードにはロールと一時的な認証情報を優先してください。直接の関連付けを削除する前に、代わりの経路で必要なアクセスを確認してください。残す必要がある例外には目的と見直し時期を記録してください。
例
ポリシー ARN と myqueue は別途準備したリソースを参照します。キューの操作範囲も確認してください。この例は関連付けだけを比較し、代わりのグループやロールの構成は省略しています。
変更前
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template
Resources:
myuser:
Type: AWS::IAM::User
Properties:
Path: "/"
ManagedPolicyArns:
- arn:aws:iam::123456789012:policy/UsersManageOwnCredentials
- arn:aws:iam::123456789012:policy/division_abc/subdivision_xyz/UsersManageOwnCredentials
Policies:
- PolicyName: giveaccesstoqueueonly
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- sqs:*
Resource:
- !GetAtt myqueue.Arn
- Effect: Deny
Action:
- sqs:*
NotResource:
- !GetAtt myqueue.Arn
管理ポリシーとインラインポリシーをユーザーに直接関連付けています。
変更後
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template
Resources:
myuser:
Type: AWS::IAM::User
Properties:
Path: "/"
直接の関連付けを削除しています。このコードだけではグループやロール経由のアクセスは付与されません。