정책 시뮬레이션 방법

정책 시뮬레이션 방법

IAM 콘솔이나 AWS CLI, AWS API에서 시뮬레이션을 실행할 수 있어요. 시뮬레이터가 무엇을 평가하는지, 두 모드가 무엇인지, 어떻게 결과에 도달하는지는 IAM 정책 시뮬레이터로 IAM 정책 테스트하기를, 필요한 권한은 정책 시뮬레이터 사용 권한을 참고하세요.

출처: 문서

본문

콘솔에서 정책 시뮬레이션

IAM 콘솔의 정책 시뮬레이터에서 시뮬레이션을 실행할 수 있어요. 탐색 창에서 Policy simulator 를 선택하세요.

참고

https://policysim.aws.amazon.com/ 의 독립형 정책 시뮬레이터 콘솔은 더 이상 유지되지 않아요. IAM 콘솔의 정책 시뮬레이터를 사용하세요.

Principal 모드

  • 아이덴티티 선택 — 먼저 아이덴티티를 선택해요. 해당 계정의 IAM 사용자, 역할, 그룹을 선택할 수 있어요. 선택하면 사이드 패널에 이 아이덴티티들에 연결된 정책이 채워져요.
  • 정책 포함·제외 — 사이드 패널은 인라인, AWS 관리형, 고객 관리형 정책과 권한 경계를 포함해 시뮬레이션 범위 안의 정책을 나열해요. 정책을 제외하면 그 정책 없이 결과가 어떻게 달라지는지 볼 수 있고, 다시 포함할 수도 있어요. 액세스를 부여했던 정책을 제외하면 결과가 암묵적 거부(implicit deny)로 바뀌어요.
  • 작업과 리소스 추가 — 왼쪽 패널에서 아이덴티티와 정책을 고른 뒤 테스트할 작업을 추가해요. 리소스 선택을 지원하는 작업은 모든 리소스에 대해 테스트하거나 특정 리소스 ARN을 하나 이상 입력할 수 있어요. 여러 작업이 같은 리소스 유형을 쓰면 리소스 하나를 모두에 적용하거나 단일 작업으로 범위를 한정할 수 있어요.
  • 일부 작업은 시뮬레이터가 평가하기 전에 관련 리소스 유형 묶음이 필요해요. 예를 들어 ec2:RunInstances를 시뮬레이션하면 콘솔이 이미지, 인스턴스, 보안 그룹을 함께 지정하도록, 시나리오에 따라 서브넷이나 볼륨도 지정하도록 안내해요.
  • 조건 키 값 제공 — 테스트하는 정책이 조건 키를 포함하면 시뮬레이터가 관련 키를 나열하고 시뮬레이션 실행 전에 값을 설정하게 해줘요. 표시되는 키는 현재 선택된 정책을 반영하므로 정책을 선택·해제하면 해당 키가 추가·제거돼요. 값이 조건을 충족하지 않으면 작업이 거부돼요.
  • 시뮬레이터는 두 곳에서 조건 키 값을 제공해요. 글로벌 요청 조건(global request conditions)은 시뮬레이션된 요청 전체에 적용돼요. aws:MultiFactorAuthPresent나 aws:PrincipalServiceNamesList처럼 aws:로 시작하는 키이며 글로벌 조건 영역에서 값을 한 번 설정해요. 서비스별 조건(service-specific conditions)은 단일 작업에 적용돼요. 각 작업 행은 참조하는 조건 수를 보여주고, 행을 열어 cloudwatch:PutMetricData의 cloudwatch:namespace나 ram:ListPermissionAssociations의 ram:PermissionResourceType 같은 해당 작업의 서비스별 키를 설정해요. 작업 행이 글로벌 키와 서비스별 키를 모두 가질 수 있고, 어떤 값이든 조건을 충족하지 않으면 해당 작업이 거부돼요.
  • IAM 정책 시뮬레이터는 일부 principal 및 조직 컨텍스트 키를 자동으로 채워주고 나머지는 직접 제공해요. 자동 채워지는 키 목록과 조건 키 평가 방식은 IAM 정책 시뮬레이터에서 조건 키 평가 방식을 참고하세요.
  • 권한 경계 테스트 — 아이덴티티에 권한 경계가 있으면 사이드 패널에 나타나고 기본적으로 포함돼요. 경계 때문에 작업이 거부됐는지 확인하려면 경계를 제외하고 시뮬레이션을 다시 실행할 수도 있어요. 예를 들어 경계가 허용하지 않는 iam:DeleteRole을 시뮬레이션하면 결과는 권한 경계에 기인한 거부예요. 이후 작업을 허용하는 정책을 추가하고 경계를 제외하면 결과가 허용으로 바뀌어요. 이로써 경계만이 작업을 막는 유일한 통제였음을 확인할 수 있어요.
  • 서비스 제어 정책 포함 — 계정이 조직의 멤버라면 사이드 패널에서 SCP를 시뮬레이션에 포함할 수 있어요. 시뮬레이터는 결과를 결정할 때 SCP의 자동 채워진 조건 키와 리소스 범위 지정을 평가해요. SCP가 작업을 명시적으로 거부하면 결과는 AWS Organizations에 기인한 explicit deny이며, 다른 정책의 허용이 이를 덮어쓰지 못해요. 조직의 통제를 제외하고 시뮬레이션을 다시 실행하면 통제가 없는 결과를 볼 수 있어요.
  • 참고 — 보안상의 이유로 시뮬레이터는 SCP 평가의 세부 내용을 표면화하지 않아요. SCP에만 참조되는 조건 키는 값 설정을 위해 나열되지 않고, 결과에 반환되는 매칭 구문도 SCP의 구문을 포함하지 않아요. 키와 매칭 구문은 아이덴티티에 연결된 아이덴티티 기반 정책과 직접 제공한 정책에서 나와요.
  • 리소스 기반 정책 테스트 — 콘솔 시뮬레이션에 리소스 기반 정책을 포함하려면 특정 리소스 ARN을 입력하고 리소스의 정책을 포함하는 옵션을 선택해요. 리소스 기반 정책이 사이드 패널에 나타나 결과에 평가돼요. 콘솔에서는 Amazon S3 버킷, Amazon SQS 대기열, Amazon SNS 주제, Amazon Glacier 볼트에서 사용할 수 있어요.
  • 참고 — IAM 역할에 대해서는 리소스 기반 정책 시뮬레이션이 지원되지 않아요.
  • 결과 읽기 — 결과 표의 각 행은 작업이 허용, 암묵적 거부, 명시적 거부 중 무엇인지와 결과에 대한 짧은 설명을 보여줘요. 설명을 사용해 explicit allow, 매칭 구문 없음, 권한 경계, 조직 통제 등 어떤 정책이나 통제가 결과를 결정했는지 파악하세요.

Custom 모드

Custom 모드에서는 IAM 정책 편집기를 사용해 아이덴티티 기반 정책과 권한 경계를 작성하거나 붙여 넣을 수 있어요. 이 정책들은 아이덴티티에 연결되지 않으며 적용하기 전에 평가할 수 있어요. 여러 아이덴티티 기반 정책을 포함할 수 있지만, 시뮬레이션용 권한 경계는 하나만 넣을 수 있어요.

참고

Custom 모드에서 콘솔은 사용자 지정 SCP 전달이나 리소스 기반 정책 시뮬레이션을 지원하지 않아요. 사용자 지정 SCP나 리소스 기반 정책을 시뮬레이션하려면 AWS CLI나 AWS API를 사용하세요.

AWS CLI 및 AWS API로 정책 시뮬레이션

AWS CLI나 AWS API로 정책을 시뮬레이션하는 건 일반적으로 두 단계로 진행돼요.

  1. 정책을 평가하고 참조하는 컨텍스트 키 목록을 반환해, 어떤 컨텍스트 키 값을 제공해야 하는지 알아내요. 이 단계는 선택 사항이에요.
  2. 시뮬레이션 중 사용할 작업, 리소스, 컨텍스트 키 값을 제공하며 정책을 시뮬레이션해요.

각 작업은 각 리소스와 짝지어지고, 시뮬레이션은 그 리소스에 대해 정책이 작업을 허용하는지 거부하는지 결정해요. 정책이 참조하는 컨텍스트 키에 값을 제공할 수 있어요. 컨텍스트 키 값을 제공하지 않으면 시뮬레이션은 여전히 실행되고 implicit deny를 반환하며, 누락된 키는 missingContextValues로 반환되어 어떤 값을 추가해야 할지 알 수 있어요. 누락된 컨텍스트 키가 SCP에만 참조된다면 보안상의 이유로 그 키는 반환되지 않지만 결정은 여전히 받을 수 있어요.

API 작업은 두 그룹으로 나뉘어요.

  • API에 문자열로 직접 전달한 정책만 시뮬레이션 — GetContextKeysForCustomPolicy, SimulateCustomPolicy.
  • 지정된 IAM 사용자, 사용자 그룹, 역할, 리소스에 연결된 정책 시뮬레이션 — GetContextKeysForPrincipalPolicy, SimulatePrincipalPolicy. 이 작업은 다른 IAM 엔티티에 할당된 권한을 드러낼 수 있으므로 액세스를 제한하는 게 좋아요.

다음 기능도 지원돼요.

  • SimulateCustomPolicy의 OrderedOrganizationPolicyInputList를 사용하면 실제 principal을 사용하지 않고도 조직의 SCP 계층 효과를 시뮬레이션할 수 있어요.
  • SimulatePrincipalPolicy의 PolicyExclusionList를 사용하면 principal에 연결된 정책을 바꾸지 않고 "이 정책을 제거하면 어떻게 될까" 시나리오를 테스트할 수 있어요.

응답은 작업당 단일 EvaluationResult를 반환하며, 최상위 수준에 집계 결정이, ResourceSpecificResults에 리소스별 세부 정보가 담겨요.

AWS CLI 및 AWS API 레퍼런스

정책을 시뮬레이션하는 AWS CLI 명령 예시는 다음을 참고하세요.

  • AWS CLI: get-context-keys-for-custom-policy, get-context-keys-for-principal-policy, simulate-custom-policy, simulate-principal-policy
  • AWS API: GetContextKeysForCustomPolicy, GetContextKeysForPrincipalPolicy, SimulateCustomPolicy, SimulatePrincipalPolicy

더 알아보기 (Learn more)