Google Cloud 콘솔로 서비스 트래픽 보호

이 페이지에서는 API 게이트웨이에 API를 배포하여 백엔드 서비스 트래픽을 보호하는 방법을 보여줍니다.

아래 단계에 따라 Google Cloud 콘솔을 사용해서 새 API를 배포하여 Cloud Functions에서 백엔드 서비스에 액세스합니다. 이 빠른 시작에서는 또한 API 키를 사용하여 무단 액세스로부터 백엔드를 보호하는 방법을 설명합니다.

시작하기 전에

  1. Google Cloud 콘솔에서 API 게이트웨이 페이지로 이동하고 Google Cloud 프로젝트를 선택하거나 만듭니다.

    API 게이트웨이 페이지로 이동

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

    이름 제목
    apigateway.googleapis.com API 게이트웨이 API
    servicemanagement.googleapis.com Service Management API
    servicecontrol.googleapis.com Service Control API

    선택한 프로젝트에 대해 이전에 이러한 서비스를 사용 설정하지 않았으면 프롬프트 안내가 표시됩니다.

  3. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

    결제 사용 설정 방법 알아보기

API 백엔드 배포

API 게이트웨이는 배포된 백엔드 서비스 앞에 설정되어 모든 수신 요청을 처리합니다. 이 빠른 시작에서는 API 게이트웨이가 수신 호출을 아래 표시된 함수를 포함하는 helloGET이라는 Cloud 함수 백엔드로 라우팅합니다.

/**
 * HTTP Cloud Function.
 * This function is exported by index.js, and is executed when
 * you make an HTTP request to the deployed function's endpoint.
 *
 * @param {Object} req Cloud Function request context.
 *                     More info: https://expressjs.com/en/api.html#req
 * @param {Object} res Cloud Function response context.
 *                     More info: https://expressjs.com/en/api.html#res
 */

exports.helloGET = (req, res) => {
  res.send('Hello World!');
};

빠른 시작: Google Cloud CLI 사용의 단계에 따라 샘플 Cloud Functions 코드를 다운로드하고 Cloud Function 백엔드 서비스를 배포합니다.

API 정의 만들기

API 게이트웨이는 API 정의를 사용하여 호출을 백엔드 서비스로 라우팅합니다. 특수한 주석이 포함된 OpenAPI 사양을 사용해서 원하는 API 게이트웨이 동작을 정의할 수 있습니다. 이 빠른 시작의 OpenAPI 사양에는 Cloud 함수 백엔드에 대한 라우팅 명령이 포함되어 있습니다.

# openapi2-functions.yaml
swagger: '2.0'
info:
  title: API_ID optional-string
  description: Sample API on API Gateway with a Google Cloud Functions backend
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: https://us-central1-PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

위에 표시된 OpenAPI 사양을 사용해서 API를 정의하려면 다음 안내를 따르세요.

  1. 명령줄에서 openapi2-functions.yaml이라는 새 파일을 만듭니다.

  2. 위에 표시된 OpenAPI 사양의 콘텐츠를 복사해서 새로 생성된 파일에 붙여넣습니다.

  3. 다음과 같이 파일을 수정합니다.

    1. title 필드에서 API_ID를 API 이름(다음 단계에서 생성)으로 바꾸고 optional-string을 간단한 설명으로 바꿉니다. 이 필드 값은 이 API에 대해 액세스 권한을 부여하는 API 키를 만들 때 사용됩니다. API ID 이름 지정 가이드라인은 API ID 요구사항을 참조하세요.
    2. address 필드에서 PROJECT_ID를 Google Cloud 프로젝트의 이름으로 바꿉니다.

게이트웨이 만들기

이제 API 게이트웨이에서 게이트웨이를 만들고 배포할 준비가 완료되었습니다.

  1. Google Cloud 콘솔에서 API 게이트웨이 페이지를 엽니다.

    API 게이트웨이 페이지로 이동

  2. 게이트웨이 만들기를 클릭합니다.

  3. API 섹션에서 다음을 수행합니다.

    1. 새 API를 만들거나 API 선택 드롭다운에서 기존 API를 선택할 수 있습니다. 이 튜토리얼에서는 새 API 만들기를 선택합니다.
    2. API의 표시 이름을 입력합니다.
    3. API의 API ID를 입력합니다.
    4. (선택사항) 키-값 형식을 사용해서 API에 라벨을 추가합니다. 라벨을 2개 이상 추가하려면 라벨 추가를 클릭하고 추가 값을 입력합니다.
  4. API 구성 섹션에서 다음을 수행합니다.

    1. 새 API 구성을 만들거나 구성 선택 드롭다운에서 기존 API 구성을 선택할 수 있습니다. 이 튜토리얼에서는 새 API 구성 만들기를 선택합니다.
    2. 파일 브라우저를 사용하여 API를 정의하는 데 사용되는 openapi2-functions.yaml을 업로드합니다.
    3. API 구성의 표시 이름을 입력합니다.
    4. 드롭다운 목록에서 서비스 계정을 선택합니다. 선택한 서비스 계정이 API 게이트웨이의 ID로 사용됩니다.

    5. (선택사항) 키-값 형식을 사용해서 API 구성에 라벨을 추가합니다. 라벨을 2개 이상 추가하려면 라벨 추가를 클릭하고 추가 값을 입력합니다.

  5. 게이트웨이 세부정보 섹션에서 다음을 수행합니다.

    1. 게이트웨이의 표시 이름을 입력합니다. 게이트웨이에 대한 URL이 자동으로 생성됩니다.
    2. 드롭다운 메뉴에서 게이트웨이 위치를 선택합니다.
    3. (선택사항) 키-값 형식을 사용해서 게이트웨이에 라벨을 추가합니다. 라벨을 2개 이상 추가하려면 라벨 추가를 클릭하고 추가 값을 입력합니다.
  6. 게이트웨이 만들기를 클릭합니다.

그러면 새로 생성된 게이트웨이에 API 구성이 배포됩니다. 게이트웨이에 API 구성을 배포하면 API 클라이언트가 API에 액세스하기 위해 사용할 수 있는 외부 URL이 정의됩니다.

이 작업은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 만들기 및 배포 프로세스 상태를 확인하려면 아래 이미지에 표시된 것처럼 기본 탐색 메뉴에서 알림 아이콘을 클릭하여 상태 알림을 표시할 수 있습니다.

알림 패널

성공적으로 완료되면 게이트웨이 방문 페이지에서 게이트웨이에 대한 세부정보를 볼 수 있습니다.

게이트웨이 페이지로 이동

게이트웨이 URL을 기록해 둡니다. 다음 단계에서 배포를 테스트할 때 사용됩니다.

API 배포 테스트

이제 게이트웨이 배포 후 생성된 URL을 사용해서 API로 요청을 보낼 수 있습니다.

브라우저에 다음 URL을 입력합니다. 각 항목의 의미는 다음과 같습니다.

  • GATEWAY_URL은 배포된 게이트웨이 URL을 지정합니다.
  • hello는 API 구성에 지정된 경로입니다.
https://GATEWAY_URL/hello

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

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

브라우저에 Hello World! 메시지가 표시됩니다.

지금까지 API 게이트웨이 만들기와 배포를 성공적으로 완료했습니다!

API 키를 사용하여 액세스 보안

API 백엔드 액세스를 보호하기 위해서는 프로젝트와 연결된 API 키를 생성하고 이 키에 API 호출 액세스 권한을 부여할 수 있습니다. 자세한 내용은 API 키를 사용하여 API 액세스 제한을 참조하세요.

이 빠른 시작에서 사용되는 Google Cloud 프로젝트와 연결된 API 키가 아직 없으면 API 키 만들기의 단계에 따라 하나 추가할 수 있습니다.

API 키를 사용하여 게이트웨이에 대한 액세스를 보호하려면 다음 안내를 따르세요.

  1. 서비스에 대해 API 키 지원을 사용 설정합니다.
    1. Google Cloud 콘솔에서 API 및 서비스 > 라이브러리로 이동합니다.
    2. 검색창에서 바로 전에 만든 API의 관리형 서비스 이름을 입력합니다. 이 값은 API 방문 페이지에 있는 API의 관리형 서비스 열에서 찾을 수 있습니다. 예를 들면 다음과 같습니다.
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. 서비스의 방문 페이지에서 사용 설정을 클릭합니다.
  2. 모든 트래픽에 대해 API 키 검증 보안 정책을 적용하도록 API 구성을 만드는 데 사용된 OpenAPI 사양을 수정합니다. 아래와 같이 security 유형 및 securityDefinitions를 추가합니다.
        # openapi2-functions.yaml
        swagger: '2.0'
        info:
          title: API_ID optional-string
          description: Sample API on API Gateway with a Google Cloud Functions backend
          version: 1.0.0
        schemes:
          - https
        produces:
          - application/json
        paths:
          /hello:
            get:
              summary: Greet a user
              operationId: hello
              x-google-backend:
                address:https://us-central1.PROJECT_ID.cloudfunctions.net/helloGET
              security:
              - api_key: []
              responses:
                '200':
                  description: A successful response
                  schema:
                    type: string
        securityDefinitions:
          # This section configures basic authentication with an API key.
          api_key:
            type: "apiKey"
            name: "key"
            in: "query"
    securityDefinition은 사양에 정의된 모든 경로에 액세스를 요청할 때 key라는 쿼리 매개변수로 API 키가 전달되도록 API를 구성합니다.
  3. 새 API 구성을 만들고 이를 기존 게이트웨이에 배포합니다.
    1. 게이트웨이 방문 페이지로 이동합니다.

      게이트웨이 페이지로 이동

    2. 목록에서 세부정보를 보려는 게이트웨이를 선택합니다.
    3. 수정을 클릭하여 게이트웨이 구성 창을 엽니다.
    4. API 구성 섹션에서 다음을 수행합니다.
      1. 사용 가능한 드롭다운에서 새 API 구성을 선택합니다.
      2. 파일 탐색기를 사용해서 수정된 OpenAPI 사양을 업로드합니다.
      3. 새 API 구성의 표시 이름을 입력합니다.
      4. 드롭다운 목록에서 서비스 계정을 선택합니다. 선택한 서비스 계정이 API 게이트웨이의 ID로 사용됩니다.
      5. (선택사항) 키-값 형식을 사용해서 API 구성에 라벨을 추가합니다. 라벨을 2개 이상 추가하려면 라벨 추가를 클릭하고 추가 값을 입력합니다.
    5. 업데이트를 클릭합니다.

API 키 테스트

수정된 API를 만들고 배포한 후 요청을 시도합니다.

브라우저에 다음 URL을 입력합니다. 각 항목의 의미는 다음과 같습니다.

  • GATEWAY_URL은 배포된 게이트웨이 URL을 지정합니다.
  • hello는 API 구성에 지정된 경로입니다.
https://GATEWAY_URL/hello

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

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

이렇게 하면 다음 오류가 발생합니다.

UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.

이제 브라우저에서 다음 URL을 입력합니다. 각 항목의 의미는 다음과 같습니다.

  • GATEWAY_URL은 배포된 게이트웨이 URL을 지정합니다.
  • hello는 API 구성에 지정된 경로입니다.
  • API_KEYAPI 키를 사용하여 액세스 보안에서 만든 API 키를 지정합니다.
https://GATEWAY_URL/hello?key=API_KEY

이제 브라우저에 Hello World!가 표시됩니다.

수고하셨습니다. 지금까지 API 게이트웨이를 사용한 API 백엔드 보호가 성공적으로 완료되었습니다. 이제 추가 API 키를 생성하여 새 API 클라이언트 온보드를 시작할 수 있습니다.

API 활동 추적

  1. Google Cloud 콘솔의 API 게이트웨이 페이지에서 API의 활동 그래프를 확인합니다. API를 클릭하여 개요 페이지에서 활동 그래프를 확인합니다. 요청이 그래프에 반영되는 데 잠시 시간이 걸릴 수 있습니다.

  2. 로그 탐색기 페이지에서 API의 요청 로그를 확인합니다. 로그 탐색기 페이지 링크는 Google Cloud 콘솔의 API 게이트웨이 페이지에서 찾을 수 있습니다.

    API 게이트웨이 페이지로 이동

    API 게이트웨이 페이지에서 다음을 수행합니다.

    1. 확인할 API를 선택합니다.
    2. 세부정보 탭을 클릭합니다.
    3. 로그 아래의 링크를 클릭합니다.

삭제

이 빠른 시작에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.

또는 튜토리얼에 사용된 Google Cloud 프로젝트를 삭제할 수도 있습니다.

다음 단계