설명
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가 필요하면 각각 검토하고 다른 정책의 권한도 확인하세요.