백엔드 서비스 보안
배포된 게이트웨이에 대한 최종 사용자 요청 인증뿐만 아니라 API 게이트웨이와 백엔드 서비스 사이의 액세스 보안도 중요합니다. Cloud Run, Cloud Functions, App Engine과 같은 백엔드 관리형 서비스에 대해 공개 액세스를 방지하기 위한 방법은 다음과 같습니다.
- 백엔드 서비스에 대해 인증된 액세스만 허용합니다.
- 게이트웨이의 백엔드 호출이 승인되도록 게이트웨이 API 구성과 연결된 서비스 계정에 필요한 권한을 부여합니다.
이 페이지에서는 백엔드 서비스 보안을 위해 필요한 단계에 대해 설명하고 게이트웨이 서비스 계정이 이러한 서비스에 액세스하기 위해 필요한 역할 및 권한에 대해 설명합니다.
Cloud Run
모든 Cloud Run 완전 관리형 서비스는 기본적으로 비공개로 배포됩니다. 즉, 요청에 인증 사용자 인증 정보를 제공하지 않으면 서비스에 액세스할 수 없습니다.
Cloud Run 서비스는 IAM으로 보호됩니다. 기본적으로 run.routes.invoke
권한이 포함된 모든 역할이 Cloud Run 서비스를 호출할 수 있습니다.
추가 사용자에게 액세스를 부여하도록 Cloud Run(완전 관리형) 서비스에서 IAM을 구성할 수 있습니다.
API 게이트웨이의 경우 Cloud Run 서비스 액세스는 게이트웨이의 서비스 계정에 roles/run.invoker
역할 또는 run.routes.invoke
권한이 포함된 역할과 같이 적절한 역할 및 권한을 부여함으로써 사용 설정됩니다.
개별 서비스에 대한 게이트웨이 액세스는 서비스 수준 IAM을 사용하여 제어하고 프로젝트 내에 있는 모든 서비스에 대한 게이트웨이 액세스는 프로젝트 수준 IAM을 사용하여 제어할 수 있습니다.
Cloud Run 서비스에 대한 게이트웨이 요청이 거부되면 roles/run.invoker
역할이 게이트웨이의 서비스 계정에 부여되었고 게이트웨이의 서비스 계정에 run.routes.invoke
권한이 있는지 확인합니다. 호출자 역할 및 권한에 대한 자세한 내용은 Cloud Run IAM 참조를 확인하세요.
Cloud Functions
Cloud Functions 백엔드 서비스의 경우 함수 보기, 만들기, 업데이트, 삭제 기능을 제어하기 위해 Identity and Access Management(IAM)이 사용됩니다. IAM은 역할 부여를 통해 API 게이트웨이와 같은 Cloud Functions 서비스에 대한 호출자 인증을 적용합니다.
IAM으로 역할 및 권한을 부여하면 다음 두 가지 작업을 제어할 수 있습니다.
- 개발자 작업: 함수 만들기, 업데이트, 삭제는 물론 함수 액세스 관리
- 함수 호출: 함수 실행
함수 호출 기능 부여는 HTTP 함수 및 백그라운드 함수에 따라 다릅니다.
- HTTP 함수에는 기본적으로 인증이 필요합니다. 함수에서 인증되지 않은 호출을 허용할지 여부를 지정하도록 HTTP 함수에서 IAM을 구성할 수 있습니다.
- 백그라운드 함수는 구독 중인 이벤트 소스로만 호출할 수 있습니다.
API 게이트웨이가 Cloud Functions 백엔드 서비스를 호출할 수 있으려면 게이트웨이의 서비스 계정에 roles/cloudfunctions.invoker
역할 또는 cloudfunctions.functions.invoke
권한이 포함된 역할을 부여합니다.
개별 함수에 대한 게이트웨이 액세스는 서비스 수준 IAM을 사용하여 제어하고 프로젝트의 모든 함수에 대한 게이트웨이 액세스는 프로젝트 수준 IAM을 사용하여 제어할 수 있습니다.
Cloud Functions 서비스에 대한 게이트웨이 요청이 거부되면 roles/cloudfunctions.invoker
역할이 게이트웨이의 서비스 계정에 부여되었고 게이트웨이의 서비스 계정에 cloudfunctions.functions.invoke
권한이 있는지 확인합니다. 호출자 역할 및 권한에 대한 자세한 내용은 Cloud Functions IAM 참조를 확인하세요.
App Engine
App Engine 앱 보안을 위해 IAP(Identity-Aware Proxy)를 사용하여 요청이 인증되었는지 확인해야 합니다.
App Engine 백엔드 서비스가 배포된 프로젝트에 대해 IAP 사용 설정 단계를 수행합니다. IAP를 사용 설정하면 App Engine 백엔드 애플리케이션에 대한 액세스가 보호됩니다.
API 게이트웨이가 App Engine 백엔드 서비스를 호출할 수 있도록 하려면 IAP 액세스 설정의 단계에 따라 게이트웨이와 연결된 서비스 계정에 IAP-secured Web App User
역할을 부여합니다. 또한 서비스 계정에 다음 권한이 포함된 역할을 부여합니다.
appengine.applications.update
clientauthconfig.clients.create
clientauthconfig.clients.getWithSecret