API 호출을 위한 액세스 제어 - Amazon API Gateway

API 호출을 위한 액세스 제어

이 단원에서는 API Gateway에서 배포된 API를 호출할 수 있는 사용자를 제어하는 IAM 정책 설명을 작성하는 방법을 알아봅니다. 또한 API 실행 서비스와 관련된 ActionResource 필드의 형식을 비롯하여 정책 설명 참조도 찾을 수 있습니다. API Gateway 리소스 정책이 권한 부여 워크플로우에 미치는 영향의 IAM 섹션도 알아보아야 합니다.

프라이빗 API의 경우 API Gateway 리소스 정책과 VPC 종단점 정책을 조합하여 사용해야 합니다. 자세한 정보는 다음 주제를 참조하세요.

IAM 정책을 사용하여 API Gateway API 메서드를 호출할 수 있는 사용자 제어

IAM 권한을 사용하여 배포된 API를 호출할 수 있는 사용자와 호출할 수 없는 사용자를 제어하려면 필요한 권한을 사용하여 IAM 정책 문서를 생성합니다. 그런 정책 문서에 대한 템플릿은 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Permission", "Action": [ "execute-api:Execution-operation" ], "Resource": [ "arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path" ] } ] }

여기서 포함된 권한을 부여할지 취소할지 여부에 따라 PermissionAllow 또는 Deny로 대체됩니다. Execution-operation은 API 실행 서비스에서 지원되는 작업으로 대체됩니다. METHOD_HTTP_VERB는 지정된 리소스에서 지원되는 HTTP 동사를 나타냅니다. Resource-path는 해당 METHOD_HTTP_VERB를 지원하는 배포된 API Resource 인스턴스의 URL 경로에 대한 자리 표시자입니다. 자세한 내용은 API Gateway에서 API 실행을 위한 IAM 정책의 설명 참조 단원을 참조하십시오.

참고

IAM 정책을 적용하려면 메서드의 AWS_IAM 속성에 대한 authorizationType을 설정하여 API 메서드에서 IAM 인증을 활성화해야 합니다. 그렇지 않은 경우 API 메서드에 공개적으로 액세스할 수 있습니다.

예를 들어 사용자에게 지정된 API 노출 반려 동물 목록을 볼 수 있는 권한을 부여하고, 목록에 반려 동물을 추가할 수 있는 권한을 거부하려면 IAM 정책에 다음 명령문을 포함하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/pets" ] }, { "Effect": "Deny", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/POST/pets" ] } ] }

사용자에게 GET /pets/{petId}로 구성된 API를 통해 공개된 특정 반려 동물을 볼 수 있는 권한을 부여하려면, IAM 정책에 다음 명령문을 포함합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/pets/a1b2" ] } ] }

API Gateway에서 API 실행을 위한 IAM 정책의 설명 참조

다음은 API 실행을 위한 액세스 권한에 대한 IAM 정책 설명의 작업 및 리소스 형식입니다.

API Gateway의 API 실행 권한 작업 형식

API 실행 Action 표현식의 일반적인 형식은 다음과 같습니다.

execute-api:action

여기서 작업은 사용 가능한 API 실행 작업입니다.

  • *는 다음의 모든 작업을 나타냅니다.

  • 호출은 클라이언트 요청에 따라 API를 호출하는 데 사용됩니다.

  • InvalidateCache는 클라이언트 요청에 따라 API 캐시를 무효화하는 데 사용됩니다.

API Gateway의 API 실행 권한 리소스 형식

API 실행 Resource 표현식의 일반적인 형식은 다음과 같습니다.

arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path-specifier

여기서 각 항목은 다음과 같습니다.

  • region은 메서드에 대해 배포된 API에 해당하는 AWS 리전(예: us-east-1 또는 *(모든 AWS 리전))입니다.

  • account-id는 REST API 소유자의 12자리 AWS 계정 ID입니다.

  • api-id는 API Gateway에서 메서드에 대한 API에 할당한 식별자입니다.

  • stage-name은 메서드와 연결된 스테이지의 이름입니다.

  • HTTP-VERB는 메서드에 대한 HTTP 동사입니다. GET, POST, PUT, DELETE, PATCH 중 하나일 수 있습니다.

  • resource-path-specifier는 원하는 메서드의 경로입니다.

참고

와일드카드(*)를 지정하는 경우 Resource 표현식에서 표현식의 나머지에 와일드카드가 적용됩니다.

다음은 리소스 표현식의 몇 가지 예입니다.

  • arn:aws:execute-api:*:*:*는 모든 단계의 모든 리소스 경로와 모든 AWS 리전의 모든 API를 나타내며,

  • arn:aws:execute-api:us-east-1:*:*는 모든 단계의 모든 리소스 경로와 us-east-1의 AWS 리전의 모든 API를 나타내며,

  • arn:aws:execute-api:us-east-1:*:api-id/*는 모든 단계의 모든 리소스 경로와 AWS 리전(us-east-1)에서 식별자가 api-id인 API를 나타냅니다.

  • arn:aws:execute-api:us-east-1:*:api-id/test/*test 단계의 리소스 경로와 AWS 리전(us-east-1)에서 식별자가 api-id인 API를 나타냅니다.

자세한 내용은 API Gateway Amazon 리소스 이름(ARN) 참조을 참조하십시오.