API Gateway 리소스 정책 예제 - Amazon API Gateway

API Gateway 리소스 정책 예제

이 페이지에서는 API Gateway 리소스 정책의 일반적인 사용 사례에 대한 몇 가지 예제를 제시합니다.

다음 예제 정책은 간소화된 구문을 사용하여 API 리소스를 지정합니다. 이 간소화된 구문은 전체 Amazon 리소스 이름(ARN)을 지정하는 대신 API 리소스를 참조할 수 있는 약식 방법입니다. API Gateway는 정책을 저장할 때 약어 구문을 전체 ARN으로 변환합니다. 예를 들어 리소스 정책에서 execute-api:/stage-name/GET/pets 리소스를 지정할 수 있습니다. API Gateway는 리소스 정책을 저장할 때 이 리소스를 arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets로 변환합니다. API Gateway는 현재 리전, AWS 계정 ID 및 리소스 정책이 연결된 REST API의 ID를 사용하여 전체 ARN을 구축합니다. execute-api:/*를 사용하여 현재 API의 모든 단계, 메서드 및 경로를 나타낼 수 있습니다. 액세스 정책 언어에 대한 자세한 내용은 Amazon API Gateway에 대한 액세스 정책 언어 개요 단원을 참조하세요.

예제: 다른 AWS 계정의 역할이 API를 사용하도록 허용

다음의 리소스 정책 예제는 Signature Version 4(SigV4) 프로토콜을 통해 한 AWS 계정의 API 액세스 권한을 다른 AWS 계정의 두 역할에 부여합니다. 예를 들면 account-id-2로 식별된 AWS 계정의 개발자와 관리자 역할에 AWS 계정의 pets 리소스(API)에서 GET 작업을 실행할 수 있는 execute-api:Invoke 작업에 대한 권한이 부여됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id-2:role/developer", "arn:aws:iam::account-id-2:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/stage/GET/pets" ] } ] }

예제: 소스 IP 주소 또는 범위에 따라 API 트래픽 거부

아래의 리소스 정책 예제에서는 2개의 지정된 소스 IP 주소 블록에서 API로 들어오는 트래픽을 거부(차단)합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

예: 프라이빗 API를 사용할 때 소스 IP 주소 또는 범위를 기반으로 API 트래픽 거부

아래의 리소스 정책 예제에서는 2개의 지정된 소스 IP 주소 블록에서 프라이빗 API로 들어오는 트래픽을 거부(차단)합니다. 프라이빗 API를 사용할 때 execute-api의 VPC 종단점은 원래 소스 IP 주소를 다시 기록합니다. aws:VpcSourceIp 조건은 원래 요청자 IP 주소를 기준으로 요청을 필터링합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "IpAddress": { "aws:VpcSourceIp": ["192.0.2.0/24", "198.51.100.0/24"] } } } ] }

예제: 소스 VPC 또는 VPC 종단점에 따라 프라이빗 API 트래픽 허용

다음 예제의 리소스 정책에서는 지정된 Virtual Private Cloud(VPC) 또는 VPC 종단점에서 오는 수신 트래픽만 프라이빗 API에 액세스하도록 허용합니다.

이 리소스 정책 예제는 소스 VPC를 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

이 리소스 정책 예제는 소스 VPC 종단점을 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }