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

IAM 권한을 사용하여 REST 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 권한 정책을 생성해야 합니다. 사용자, 역할 또는 그룹에 권한 정책을 연결합니다.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:

  • AWS IAM Identity Center의 사용자 및 그룹:

    권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서권한 세트 생성의 지침을 따릅니다.

  • 보안 인증 공급자를 통해 IAM에서 관리되는 사용자:

    ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서서드 파티 자격 증명 공급자의 역할 만들기(페더레이션)의 지침을 따릅니다.

  • IAM 사용자:

    • 사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서에서 IAM 사용자의 역할 생성의 지침을 따릅니다.

    • (권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 사용자(콘솔)에 권한 추가의 지침을 따르십시오.

이 권한 모델을 사용하는 방법에 대한 자세한 내용은 API Gateway 자격 증명 기반 정책 단원을 참조하십시오.

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

API 호출자가 API를 호출하거나 캐싱을 새로 고치도록 허용하려면 지정된 API 호출자에게 사용자 인증이 사용되는 API 메서드를 호출하도록 허용하는 IAM 정책을 생성해야 합니다. API 개발자는 메서드의 authorizationType 속성을 AWS_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 서비스를 호출하려면, 이 역할에 통합된 AWS 서비스를 호출하는 데 적절한 IAM 권한 정책도 연결해야 합니다. 예를 들어 Lambda 함수를 호출하려면 IAM 역할에 다음 IAM 권한 정책을 포함해야 합니다.

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

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

참고

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