AWS 역할 전환의 MFA 보호 점검

사람이 민감한 역할을 전환할 때 MFA를 요구하고 실제 정책도 확인하세요.

설명

사람이 AWS 역할을 전환할 때 MFA를 요구하지 않으면 탈취된 자격 증명만으로 역할을 사용할 위험이 커집니다. 실제 전환에는 호출자의 권한과 역할 신뢰 정책 등도 충족해야 합니다.

MFA 값을 요청에 넣는 것과 MFA 없는 요청을 정책으로 거부하는 것은 다릅니다. 비대화형 워크로드는 사용자용 MFA 코드를 저장하기보다 해당 환경의 역할이나 연동된 단기 자격 증명을 사용하세요.

잠재적 영향

  • 탈취된 사용자 자격 증명으로 허용된 역할의 권한이 악용될 수 있습니다.
  • MFA 입력만 추가하고 신뢰 정책을 확인하지 않으면 다른 요청 경로에서 MFA 없이 전환할 수 있습니다.

해결 방법

  • MFA가 필요한 AssumeRole 요청에 올바른 mfa_serial_number와 현재 유효한 mfa_token을 함께 제공하세요. 토큰이나 반환된 자격 증명을 로그에 노출하지 마세요.
  • 해당 사용자 역할의 신뢰 정책에서 aws:MultiFactorAuthPresent 조건을 적절히 강제하고 실제 허용·거부 결과를 확인하세요. 워크로드 인증 방식은 별도로 설계하세요.

예시

기존 모듈 이름을 사용한 발췌입니다. 설치된 컬렉션의 지원 이름을 확인하세요. 현재 모듈은 amazon.aws.sts_assume_role입니다. 역할 ARN과 MFA 장치 목록을 실제 값으로 준비하고 current_mfa_token에는 실행 시 유효한 코드를 전달하세요.

변경 전

yaml
- name: 기존 역할 전환
  community.aws.sts_assume_role:
    mfa_serial_number: "{{ mfa_devices.mfa_devices[0].serial_number }}"
    role_arn: "arn:aws:iam::123456789012:role/someRole"
    role_session_name: "someRoleSession"
  register: assumed_role

- name: 역할 전환
  sts_assume_role:
    role_arn: "arn:aws:iam::123456789012:role/someRole"
    role_session_name: "someRoleSession"
  register: assumed_role

변경 후

yaml
- name: 기존 역할 전환
  community.aws.sts_assume_role:
    mfa_serial_number: "{{ mfa_devices.mfa_devices[0].serial_number }}"
    mfa_token: "{{ current_mfa_token }}"
    role_arn: "arn:aws:iam::123456789012:role/someRole"
    role_session_name: "someRoleSession"
  register: assumed_role
  no_log: true

설명:

  • 변경 전: 첫 작업은 장치 번호만 있고, 두 번째는 MFA 값이 없습니다. 실제 허용 여부는 IAM 정책에 달려 있습니다.
  • 변경 후: 장치 번호와 현재 토큰을 함께 보내고 로그 출력을 숨깁니다. 정책에서 MFA를 요구하는지도 별도로 확인해야 합니다.

참조