사용자에 직접 연결된 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: "/"

사용자에게 직접 연결한 정책을 제거했습니다. 이 코드만으로 그룹이나 역할을 통한 접근이 생기지는 않습니다.

참조