개발 환경 구성

이 문서에서는 API 게이트웨이 개발 환경을 구성하는 방법을 설명합니다.

기본 요건

API 게이트웨이에서 API를 만들려면 다음 단계를 따라야 합니다.

배포용 Google Cloud CLI 준비

배포용으로 gcloud를 준비하려면 다음 안내를 따르세요.

  1. gcloud CLI를 설치하고 초기화합니다.
  2. gcloud CLI를 업데이트합니다.
    gcloud components update
  3. gcloud CLI가 데이터와 서비스에 액세스할 수 있는 권한이 있는지 확인합니다.
    gcloud auth login

    새 브라우저 탭이 열리고 계정을 선택하라는 메시지가 나타납니다.

  4. 기본 프로젝트를 설정합니다. PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.
    gcloud config set project PROJECT_ID 

필수 Google 서비스 사용 설정

API 게이트웨이를 사용하려면 다음 Google Cloud 서비스를 사용 설정해야 합니다.

이름 서비스 이름
API 게이트웨이 API apigateway.googleapis.com
Service Management API servicemanagement.googleapis.com
Service Control API servicecontrol.googleapis.com

필수 서비스를 사용 설정하려면 다음 단계를 따르세요.

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 API 및 서비스 > API 라이브러리 페이지로 이동합니다.

    API 라이브러리로 이동

  2. API 라이브러리 페이지의 검색창에 필요한 API 이름을 입력합니다.
  3. 검색 결과에서 API 페이지를 선택합니다.
  4. API 페이지에서 사용 설정을 클릭합니다.
  5. 위 표에 나열된 각 서비스에 대해 이 단계를 반복합니다.

Google Cloud CLI

다음 명령어를 사용하여 서비스를 사용 설정합니다.

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

gcloud 서비스에 대한 자세한 내용은 gcloud 서비스를 참조하세요.

API 구성을 만드는 데 사용되는 서비스 계정 구성

게이트웨이에 배포된 API 구성은 게이트웨이 서비스 계정에 연결된 권한으로 실행됩니다.

일반적으로는 API 게이트웨이에 사용되는 것과 동일한 프로젝트에 개별 서비스 계정을 만드는 것이 좋습니다. 그런 후 백엔드 서비스에 액세스하는 데 필요한 권한만 서비스 계정에 할당합니다. 이런 방식으로 API 구성과 연결되는 권한을 제한합니다.

API 게이트웨이의 경우 API 구성 또는 게이트웨이를 만들거나 업데이트하려면 서비스 계정 객체에 대한 iam.serviceAccounts.actAs 권한이 필요합니다. 이 권한은 서비스 계정 사용자 역할에 포함되어 있습니다.

게이트웨이 서비스 계정에 필요한 역할과 권한을 추가하려면 다음 단계를 따르세요.

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. 필요한 프로젝트를 선택하거나 새 프로젝트를 만듭니다.
  3. 필요한 서비스 계정을 클릭합니다.
  4. 권한 탭을 클릭합니다.
  5. 액세스 관리를 클릭합니다.
  6. 역할 추가를 클릭하고 API 구성을 만드는 동안 서비스 계정을 참조할 주 구성원에게 Service Account User 역할을 할당합니다.
  7. 저장을 클릭합니다.

Google Cloud CLI

사용자의 서비스 계정에 역할 및 권한을 추가하기 위한 명령어는 다음과 같습니다.

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
--member user:USER_EMAIL \
--role roles/iam.serviceAccountUser

각 항목의 의미는 다음과 같습니다.

  • SERVICE_ACCOUNT_EMAILSA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정의 이메일입니다.
  • USER_EMAIL은 사용자의 이메일 주소입니다.

예를 들면 다음과 같습니다.

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
--member user:myemail@email.com \
--role roles/iam.serviceAccountUser

또한 백엔드 서비스에 액세스하는 데 필요한 권한이 게이트웨이 서비스 계정에 있어야 합니다. 예를 들면 다음과 같습니다.

  • Cloud Function 백엔드의 경우 서비스 계정에 Cloud Functions 호출자 역할을 할당해야 합니다.
  • Cloud Run 백엔드의 경우 서비스 계정에 Cloud Run 호출자 역할을 할당해야 합니다.
  • App Engine 백엔드의 경우 IAP 액세스 설정의 단계에 따라 게이트웨이에 연결된 서비스 계정에 IAP 보안 웹앱 사용자 역할을 부여해야 합니다.

API 구성과 연결된 권한을 제한하면 백엔드 시스템의 보안 수준을 높일 수 있습니다. 자세한 내용은 Identity and Access Management(IAM) 문서를 참조하세요.

서비스 계정을 만든 후에는 --backend-auth-service-account 옵션을 사용하여 API 구성을 만들 때 서비스 계정의 이메일 주소를 지정합니다.

gcloud api-gateway api-configs create CONFIG_ID \
--api=API_ID --openapi-spec=API_DEFINITION \
--backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

API 구성 만들기에 대한 자세한 내용은 API 구성 만들기를 참고하세요.

기본 서비스 계정 사용

일부 Google Cloud 제품은 기본 서비스 계정을 정의합니다. 예를 들어 Compute Engine을 사용 중이고 프로젝트에 Compute Engine API를 사용 설정했으면 기본 Compute Engine 서비스 계정이 생성됩니다. 기본 서비스 계정은 해당 이메일 주소로 식별될 수 있습니다.

PROJECT_NUMBER-compute@developer.gserviceaccount.com

기본 서비스 계정에 필요한 권한을 할당하는 경우 API 구성을 만들 때 --backend-auth-service-account 옵션을 생략할 수 있습니다.

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION 

자세한 내용은 Compute Engine 기본 서비스 계정을 참고하세요.

OpenID Connect 사용

API 게이트웨이에서 백엔드 서비스로의 요청에는 인증이 사용될 수 있습니다. 이러한 요청은 게이트웨이의 서비스 계정으로 서명된 OpenID Connect(OIDC) 토큰을 사용하여 보호됩니다. 인증 및 승인을 위해 OIDC 토큰을 허용하도록 백엔드 서비스가 올바르게 구성되었는지 확인합니다. Cloud Run 함수, Cloud Run, IAP(Identity Aware Proxy)에서 이 옵션이 제공됩니다.

다음 단계