API Gateway의 프라이빗 API에 대한 VPC 종단점 정책 사용 - Amazon API Gateway

API Gateway의 프라이빗 API에 대한 VPC 종단점 정책 사용

프라이빗 API의 보안을 강화하기 위해 VPC 엔드포인트 정책을 생성할 수 있습니다. VPC 엔드포인트 정책은 VPC 엔드포인트에 연결할 수 있는 IAM 리소스 정책입니다. 자세한 정보는 VPC 종단점을 통해 서비스에 대한 액세스 제어를 참조하십시오.

VPC 엔드포인트 정책을 생성하여 다음을 생성하는 것이 좋습니다.

  • 특정 조직 또는 리소스만 VPC 엔드포인트에 액세스하고 API를 간접적으로 호출하도록 허용합니다.

  • 단일 정책을 사용하고 세션 기반 또는 역할 기반 정책을 피하여 API로 향하는 트래픽을 제어합니다.

  • 온프레미스에서 AWS로 마이그레이션하는 동안 애플리케이션의 보안 경계를 강화합니다.

VPC 엔드포인트 정책 고려 사항

다음은 VPC 엔드포인트 정책에 대한 고려 사항입니다.

  • 호출자의 ID는 Authorization 헤더 값을 기반으로 평가됩니다. 사용자의 authorizationType에 따라 다르지만 이로 인해 403 IncompleteSignatureException 또는 403 InvalidSignatureException 오류가 발생할 수 있습니다. 다음 표에는 각 authorizationTypeAuthorization 헤더 값이 나와 있습니다.

    authorizationType

    Authorization 헤더 평가 여부

    허용되는 Authorization 헤더 값

    NONE(기본 전체 액세스 정책 사용) 아니요 전달되지 않음
    NONE(사용자 지정 액세스 정책 사용) 유효한 SigV4 값이어야 함
    IAM 유효한 SigV4 값이어야 함
    CUSTOM 또는 COGNITO_USER_POOLS 아니요 전달되지 않음
  • 정책에서 특정 IAM 보안 주체(예: arn:aws:iam::account-id:role/developer)에 대한 액세스를 제한하는 경우 API 메서드의 authorizationTypeAWS_IAM 또는 NONE으로 설정해야 합니다. 메서드에 authorizationType을 설정하는 방법에 대한 자세한 지침은 API Gateway의 REST API 메서드 섹션을 참조하세요.

  • VPC 종단점 정책은 API Gateway 리소스 정책과 함께 사용할 수 있습니다. API Gateway 리소스 정책은 API에 액세스할 수 있는 보안 주체를 지정합니다. 엔드포인트 정책은 VPC에 액세스할 수 있는 사용자와 VPC 엔드포인트에서 직접적으로 호출할 수 있는 API를 지정합니다. 프라이빗 API에는 리소스 정책이 필요하지만 사용자 지정 VPC 엔드포인트 정책을 생성할 필요는 없습니다.

VPC 엔드포인트 정책 예제

Amazon API Gateway에 대한 Amazon Virtual Private Cloud 엔드포인트 정책을 생성하여 다음을 지정할 수 있습니다.

  • 작업을 수행할 수 있는 보안 주체.

  • 수행할 수 있는 작업입니다.

  • 수행되는 작업을 가질 수 있는 리소스입니다.

VPC 종단점에 정책을 첨부하려면 VPC 콘솔을 사용해야 합니다. 자세한 정보는 VPC 종단점을 통해 서비스에 대한 액세스 제어를 참조하십시오.

예제 1: 두 API에 대한 액세스 권한을 부여하는 VPC 종단점 정책

다음 예제 정책은 정책이 첨부된 VPC 종단점을 통해 두 개의 특정 API로만 액세스 권한을 부여합니다.

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*", "arn:aws:execute-api:us-east-1:123412341234:aaaaa11111/*" ] } ] }

예제 2: GET 메서드에 대한 액세스 권한을 부여하는 VPC 종단점 정책

다음 예제 정책은 해당 정책이 연결된 VPC 종단점을 통해 특정 API에 대한 GET 메서드에 대한 액세스 권한을 사용자에게 부여합니다.

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/stageName/GET/*" ] } ] }

예제 3: 특정 API에 특정 사용자 액세스 권한을 부여하는 VPC 종단점 정책

다음 예제 정책은 정책이 연결된 VPC 종단점을 통한 특정 API에 대한 특정 사용자 액세스 권한을 부여합니다.

이 경우 정책에서 특정 IAM 보안 주체에 대한 액세스를 제한하기 때문에 메서드의 authorizationTypeAWS_IAM 또는 NONE으로 설정해야 합니다.

{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/MyUser" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*" ] } ] }