티스토리 뷰

반응형


API Gateway에서 리소스 및 메소드별 엑세스 제어하는 방법에는 여러가지 방법이 있다. (AWS의 서비스들은 항상 최종의 솔루션을 제공하지 않는다. 다양한 수단과 방법만 제공하고 최종 결정은 사용자의 몫으로 남겨둔다.)

1. 리소스 정책 사용
- 특정 IAM 권한이나 역할을 부여 받은 사용자가 리소스별 API 호출 여부를 제어하기 위해 사용된다.
- 리소스 정책은 JSON 정책 문서를 작성하여 API에 연결하여 사용한다.
- 리소스 정책은 아래와 같이 크게 3가지 형태로 제공된다.
1> 지정된 AWS 계정의 사용자
2> 지정된 원본 IP 주소 범위 또는 CIDR(사이더) 블록
3> 지정된 가상 사설 클라우드 (VPC) 또는 VPC 엔드포인트(계정 무관)

*[참고 CIDR : https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%EB%8D%94_(%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9)]

2. Lambda 권한 부여자 사용
- API에 대한 액세스 권한을 제어하기 위해 Lambda를 사용한다. 요청 받은 API 정보 (Token or 요청 파라미터)를 기반으로 Lambda에 사용자가 작성한 정책에 따라 접근 권한이 주어진다. (단, 여기에는 Token의 발행과 사용자 관리에 대한 부분은 포함되어 있지 않다. 이 부분은 별도로 관리를 해야 한다.)



3. REST API에 권한 부여자로 Cognito 사용자 풀 사용
- IAM 및 Lambda에서 사용자 인증과 인가를 확인하는 부분을 Cognito(AWS에서 제공하는 사용자 관리 서비스)에 위임하는 방식이다. Cognito를 사용하게 되면 서비스 제공자가 사용자 관리를 위한 별도 서비스를 구축할 필요가 없어지게 된다. (보안이나 사용자 정보 유출에 대한 걱정을 별도로 하지 않아도 됨.) 단, Cognito에서 제공하는 서비스 방식을 따라야 함으로 자유도는 떨어진다.

4. REST API 리소스에 대한 CORS 활성화
- REST API의 리소스가 API 자체 도메인 이외의 도메인에서 요청을 받으면 리소스에 선택된 메서드에 대해 CORS가 활성되어 있어야 한다.
*[참고 CORS : https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS]

5. SSL 인증서 사용
- API Gateway와 백엔드 서버간의 통신 신뢰를 위해 사용된다.
- SSL 인증서는 API Gateway에서 생성하고 관리된다. 그리고 백엔드에서는 그 퍼블릭 키정보를 공유 받는다. SSL 인증서와 키정보를 기반으로 백엔드 시스템에서는 해당 HTTP요청이 API Gateway에서부터 온 것인지 여부를 알 수 있게 된다.

6. API Key를 이용한 사용량 계획의 사용
- API Key를 생성하여 원하는 API에 연결함으로서 프로젝트별(KEY는 대부분 프로젝트별로 관리됨)로 고객이 원하는 요청 속도, 할당량을 설정하여 사용할 수 있다.
- API Key는 영숙자 문자열로 되어 있다.
- 주로 API Key와 사용량 계획, Lambda 권한 부여자를 함께 사용함으로서 API 엑세스를 제어 한다.
- 주의 : API Key를 인증과 인가 목적으로 사용하는 것은 권장하지 않는다. API Key는 보안상 안전하지 않기 때문이다. (쉽게 도난이 가능하고 운영자가 만료시점에 맞게 별도로 관리해 주지 않으면 무한대로 사용이 가능하다.) 인증과 인가는 인증 토큰(Lambda 또는 Cognito)을 기반으로 구현하는 것이 좋다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함