작업과 리소스를 모두 와일드카드로 지정한 IAM 정책

IAM 정책의 전체 작업·리소스 허용을 필요한 권한으로 제한하고 실제 기본 버전과 연결된 주체를 확인하세요.

설명

IAM 허용 문에서 Action: "*"와 Resource: "*"를 함께 사용하면 모든 작업과 리소스를 대상으로 하는 광범위한 권한을 나타냅니다. 업무에 필요한 범위를 넘어서는 권한은 제거해야 합니다. 실제 허용 범위는 정책 연결, 적용되는 기본 버전, 조건, 명시적 거부와 권한 경계 등의 통제에 따라 달라집니다.

잠재적 영향

  • 광범위한 권한이 실제로 적용되면 자격 증명 탈취나 오용으로 데이터 변경·삭제와 리소스 관리에 미치는 영향이 커질 수 있습니다.
  • 기본 버전이 아닌 정책만 수정하면 실제 권한은 그대로 남을 수 있습니다. 반대로 기본 버전 변경은 연결된 모든 주체에 영향을 줍니다.

해결 방법

  1. 정책이 연결된 사용자·그룹·역할과 기본 버전을 확인하고 필요한 서비스 작업 및 지원되는 리소스 ARN으로 범위를 제한하세요. 리소스 단위 제한을 지원하지 않는 작업에는 Resource: "*"가 필요할 수 있으므로 작업별 지원 범위를 확인하세요.
  2. 조건, 명시적 거부, 권한 경계와 다른 정책을 함께 검토하세요. 작업을 여러 문으로 나누는 것만으로 권한이 줄어들지는 않습니다.
  3. 변경한 버전을 검토한 뒤 의도한 기본 버전으로 적용하고 필요한 작업은 계속 허용되며 금지할 작업은 거부되는지 시험하세요.

예시

예시는 정책을 사용자나 역할에 연결하지 않습니다. Version: "2012-10-17"은 정책 언어 버전입니다. 변경 후의 log_group_arn에는 필요한 실제 로그 그룹 ARN을 제공하세요.

변경 전

yaml
- name: Create IAM Managed Policy
  community.aws.iam_managed_policy:
    policy_name: ManagedPolicy
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: "*"
          Resource: "*"
    make_default: false
    state: present

모든 작업과 리소스를 허용하는 문입니다. 기존 정책에서 make_default: false로 만든 버전은 자동으로 기본 버전이 되지 않지만, 새 정책의 첫 버전은 기본 버전이 됩니다.

변경 후

yaml
- name: Create IAM Managed Policy
  community.aws.iam_managed_policy:
    policy_name: ManagedPolicy
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: logs:CreateLogGroup
          Resource: "{{ log_group_arn }}"
    make_default: true
    state: present

필요한 로그 그룹 생성 작업으로 좁히고 해당 버전을 기본 버전으로 지정합니다. 적용 전에 연결된 주체와 필요한 작업을 확인하고 log_group_arn의 범위를 검토하세요.

참조