Amazon API Gateway
개발자 안내서

IAM 권한을 사용하여 API에 대한 액세스 제어

다음 두 API Gateway 구성 요소 프로세스에 대한 액세스를 제어하여 IAM 권한을 통해 Amazon API Gateway API에 대한 액세스를 제어합니다.

  • API Gateway에서 API를 생성, 배포, 관리하려면 API 개발자에게 API Gateway의 API 관리 구성 요소에서 지원되는 필수 작업을 수행할 수 있는 권한을 부여해야 합니다.

  • 배포된 API를 호출하거나 API 캐시를 새로 고치려면 API Gateway의 API 실행 구성 요소에서 지원되는 필요한 IAM 작업을 수행할 권한을 API 호출자에게 부여해야 합니다.

두 프로세스에 대한 액세스 제어에는 다음에 설명하는 서로 다른 권한 모델이 포함됩니다.

API 생성 및 관리를 위한 API Gateway 권한 모델

API 개발자에게 API Gateway에서 API를 생성 및 관리하도록 허용하려면 지정된 API 개발자에게 필요한 API 개체를 생성, 업데이트, 배포, 보기 또는 삭제할 수 있도록 허용하는 IAM 권한 정책을 생성해야 합니다. 개발자를 나타내는 IAM 사용자, 사용자를 포함하는 IAM 그룹 또는 사용자가 가정하는 IAM 역할에 권한 정책을 연결합니다.

이 IAM 정책 문서에서 IAM Resource 요소는 API Gateway 리소스​ 및 API Gateway 링크 관계를 비롯한 API Gateway API 개체 목록을 포함합니다. IAM Action 요소는 필요한 API Gateway API 관리 작업을 포함합니다. 이러한 작업은 apigateway:HTTP_VERB 형식으로 선언됩니다. 여기서 apigateway는 API Gateway의 기본 API 관리 구성 요소를 지정하고, HTTP_VERB는 API Gateway에서 지원되는 HTTP 동사를 나타냅니다.

이 권한 모델을 사용하는 방법에 대한 자세한 내용은 API 관리를 위한 액세스 제어 단원을 참조하십시오.

API 호출을 위한 API Gateway 권한 모델

API 호출자가 API를 호출하거나 캐싱을 새로 고치도록 허용하려면 지정된 API 호출자에게 IAM 사용자 인증이 사용되는 API 메서드를 호출하도록 허용하는 IAM 정책을 생성해야 합니다. API 개발자는 메서드의 authorizationType 속성을 AWS_IAM으로 설정하여 호출자에게 인증할 IAM 사용자의 액세스 키를 제출하도록 요구합니다. 그런 다음 API 호출자를 나타내는 IAM 사용자, 그 사용자를 포함하는 IAM 그룹 또는 그 사용자가 맡은 IAM 역할에 정책을 연결합니다.

이 IAM 권한 정책 설명에서 IAM Resource 요소는 지정된 HTTP 동사와 API Gateway 리소스 경로로 식별되는 배포된 API 메서드 목록을 포함합니다. IAM Action 요소는 필요한 API Gateway API 실행 작업을 포함합니다. 이러한 작업은 execute-api:Invoke 또는 execute-api:InvalidateCache를 포함합니다. 여기서 execute-api는 API Gateway의 기본 API 실행 구성 요소를 지정합니다.

이 권한 모델을 사용하는 방법에 대한 자세한 내용은 API 호출을 위한 액세스 제어 단원을 참조하십시오.

API가 백엔드에서 AWS 서비스(예: AWS Lambda)와 통합될 경우 API Gateway에서 API 호출자를 대신하여 통합된 AWS 리소스에 액세스하려면(예: Lambda 함수 호출) 권한이 있어야 합니다. 이러한 권한을 부여하려면 API Gateway용 AWS 서비스 유형의 IAM 역할을 생성합니다. IAM 관리 콘솔에서 이 역할을 생성하면 이 결과 역할에는 API Gateway를 역할을 수임하도록 허용되는 신뢰할 수 있는 개체로 선언하는 다음 IAM 신뢰 정책이 포함됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

CLI create-role 명령 또는 동등한 SDK 메서드를 호출하여 IAM 역할을 생성할 경우 assume-role-policy-document의 입력 파라미터로 상기 신뢰 정책을 제공해야 합니다. IAM 관리 콘솔에서 직접, 또는 AWS CLI create-policy 명령 또는 동등한 SDK 메서드를 호출하여 그러한 정책을 생성하려 하지 마십시오.

API Gateway가 통합된 AWS 서비스를 호출하려면, 이 역할에 통합된 IAM 서비스를 호출하는 데 적절한 AWS 권한 정책도 연결해야 합니다. 예를 들어 Lambda 함수를 호출하려면 IAM 역할에 다음 IAM 권한 정책을 포함시켜야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

Lambda는 신뢰 정책과 권한 정책을 결합한 리소스 기반 액세스 정책을 지원합니다. API Gateway 콘솔을 사용하여 API를 Lambda 함수와 통합할 경우 콘솔에서 사용자의 동의를 받아 Lambda 함수에 대한 리소스 기반 권한을 자동으로 설정하므로 이 IAM 역할을 명시적으로 설정하라는 메시지가 표시되지 않습니다.

참고

AWS 서비스에 대한 액세스 제어를 적용하려면 권한 정책이 호출자의 IAM 사용자 또는 그룹에 직접 연결되는 호출자 기반 권한 모델을 사용하거나 권한 정책이 API Gateway에서 가정할 수 있는 IAM 역할에 연결되는 역할 기반 권한 모델을 사용할 수 있습니다. 두 모델의 권한 정책은 다를 수 있습니다. 예를 들어 호출자 기반 정책에서는 액세스를 차단하고 역할 기반 정책에서는 액세스를 허용할 수 있습니다. 이를 활용하여 IAM 사용자에게 API Gateway API를 통해서만 AWS 서비스에 액세스하도록 요구할 수 있습니다.