IAM ポリシーをユーザーに直接関連付け

IAM ユーザーに直接付与した権限を確認し、共通のアクセスをグループやロールで管理します。

説明

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: "/"

直接の関連付けを削除しています。このコードだけではグループやロール経由のアクセスは付与されません。

参考資料