모든 작업과 리소스를 허용하는 IAM 정책

IAM 정책의 전체 작업·리소스 허용을 실제 업무에 필요한 권한으로 제한하세요.

설명

Effect: Allow와 Action: "*", Resource: "*"의 조합은 매우 넓은 권한을 부여할 수 있습니다. 실제 권한에는 정책의 연결 대상, 조건, 권한 경계와 명시적 거부 등 다른 제어도 적용됩니다. 필요한 작업과 리소스를 확인해 불필요한 권한을 제거하세요.

잠재적 영향

연결된 사용자나 역할이 침해되면 넓게 허용된 작업을 악용해 리소스를 조회·변경·삭제할 수 있습니다. 실제 영향은 유효한 전체 권한에 달려 있습니다.

해결 방법

  • 업무에 필요한 API와 지원되는 리소스 ARN으로 권한을 좁히세요. 리소스 수준 제한을 지원하지 않는 작업은 필요한 범위로 분리하고 지원되는 조건을 검토하세요.
  • 실제 연결된 정책과 사용 이력을 확인하고, 변경 후 필요한 작업은 성공하며 불필요한 작업은 거부되는지 시험하세요.

예시

같은 기존 역할에 연결하는 정책의 대안입니다. ApplicationRoleName에는 실제 역할 이름을, 변경 후 QueueArn에는 해당 역할이 처리할 큐의 ARN을 지정하세요.

변경 전

yaml
Parameters:
  ApplicationRoleName:
    Type: String
Resources:
  mypolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: mygrouppolicy
      Roles:
        - !Ref ApplicationRoleName
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action: ["*"]
            Resource: "*"

모든 작업과 리소스에 대한 허용을 부여합니다. 이 역할에 필요한 범위보다 넓지 않은지 검토하세요.

변경 후

yaml
Parameters:
  ApplicationRoleName:
    Type: String
  QueueArn:
    Type: String
Resources:
  mypolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: mygrouppolicy
      Roles:
        - !Ref ApplicationRoleName
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action:
              - sqs:ReceiveMessage
              - sqs:DeleteMessage
            Resource: !Ref QueueArn

이 정책 문은 지정한 큐에서 메시지를 수신·삭제하는 작업만 허용합니다. 실제 클라이언트가 사용하는 다른 API가 필요하면 각각 검토하고 다른 정책의 권한도 확인하세요.

참조