API 호출을 위한 액세스 제어
이 섹션에서는 IAM 권한을 사용하여 API에 대한 액세스를 제어하는 권한 모델에 대해 알아봅니다. 템플릿 IAM 정책 설명과 정책 설명 참조를 보여줍니다. 정책 설명 참조에는 API 실행 서비스와 관련된 Action
및 Resource
필드의 형식도 포함되어 있습니다. 이러한 참조를 사용하여 IAM 정책 설명을 생성합니다. IAM 정책 설명을 생성할 때 API Gateway 리소스 정책이 권한 부여 워크플로에 미치는 영향을 고려해야 할 수 있습니다. 자세한 내용은 API Gateway 리소스 정책이 권한 부여 워크플로우에 미치는 영향 단원을 참조하십시오.
프라이빗 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
" ] } ] }
여기서 포함된 권한을 부여할지 취소할지 여부에 따라
은 Permission
Allow
또는 Deny
로 대체됩니다.
은 API 실행 서비스에서 지원되는 작업으로 대체됩니다. Execution-operation
는 지정된 리소스에서 지원되는 HTTP 동사를 나타냅니다. METHOD_HTTP_VERB
는 해당 Resource-path
를 지원하는 배포된 API METHOD_HTTP_VERB
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/
로 구성된 API를 통해 공개된 특정 반려 동물을 볼 수 있는 권한을 부여하려면, IAM 정책에 다음 명령문을 포함합니다.{petId}
{ "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:*:
는 모든 단계의 모든 리소스 경로와 AWS 리전(us-east-1)에서 식별자가api-id
/*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) 참조을 참조하십시오.