5단계: Console에서 프록시 서비스에 대한 GCP 보안 정책 만들기

이전 단계에서 올바른 Google Cloud API Gateway 엔드포인트가 있는 사용자가 호출할 수 있는 Google Cloud Function을 만들었습니다. 엔드포인트를 일반에 공개하지 않으려면 Google Cloud API Gateway에서 보안 정책을 만들어 엔드포인트를 보호해야 합니다.

이 항목에서는 API 정의에 대한 구성 파일에 사용자 지정 securityDefinitions 섹션을 추가하여 API Gateway에 대한 보안 정책을 만드는 지침을 제공합니다.

중요

API Gateway에 대한 보안 정책을 반드시 만드는 것이 좋습니다. 이 단계를 완료하면 Snowflake만 API Gateway를 통해 Cloud Function을 호출할 수 있습니다.

이 항목의 내용:

구성 파일 업데이트하기

참고

구성 파일의 이름은 추적 워크시트의 Configuration File Name 필드에 기록됩니다.

  1. 구성 파일에서 다음 securityDefinitions 섹션을 추가하거나 업데이트합니다. 구성 파일의 schemes 섹션 바로 위에 똑같은 들여쓰기 수준에서 추가합니다.

    securityDefinitions:
      <security-def-name>:
        authorizationUrl: ""
        flow: "implicit"
        type: "oauth2"
        x-google-issuer: "<gmail service account>"
        x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<gmail service account>"
    
    Copy

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

    • <보안-정의-이름> 을 고유한 보안 정의 이름(예: snowflakeAccess01)으로 바꿉니다. 본 자습서의 2단계(2단계: Console에서 프록시 서비스(Google Cloud API Gateway) 만들기)에서 임시 보안 정의를 추가했다면 이미 완료된 것입니다.

    • 또한, 추적 워크시트의 Security Definition Name 필드에 이 이름을 기록합니다.

    • <gmail 서비스 계정> 을 추적 워크시트에 있는 API_GCP_SERVICE_ACCOUNT 필드의 값으로 바꿉니다. 구성 파일에서 두 곳에 이 값을 추가합니다.

      • x-google-issuer 필드

      • x-google-jwks_uri 필드(필드 끝에 추가됨)

  2. 위에서 만든 보안 정의를 참조하도록 구성 파일의 post: 섹션을 업데이트합니다.

    operationId 필드 아래에 다음을 추가합니다.

    security:
      - <security-def-name>: []
    
    Copy

    operationId 필드와 같은 수준으로 들여쓰기를 해야 합니다.

    • <보안-정의-이름> 을 추적 워크시트에 있는 Security Definition Name 필드의 값으로 아직 바꾸지 않은 경우 바꿉니다.

    • 위에 나타낸 것처럼, 보안 정의 이름 앞에 하이픈과 공백을 포함해야 합니다.

    • 콜론 뒤에 빈 대괄호([])를 포함해야 합니다.

    예:

    security:
      - snowflakeAccess01: []
    
    Copy
  3. 구성 파일을 저장합니다.

업데이트된 구성 파일은 다음과 비슷한 형태여야 합니다.

swagger: '2.0'
info:
  title: API Gateway config for Snowflake external function
  description: This configuration file connects the API Gateway resource to the remote service (Cloud Function).
  version: 1.0.0
securityDefinitions:
  snowflakeAccess01:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "<API_GCP_SERVICE_ACCOUNT>"
    x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<API_GCP_SERVICE_ACCOUNT>"
schemes:
  - https
produces:
  - application/json
paths:
  /demo-func-resource:
    post:
      summary: Echo the input
      operationId: operationID
      security:
        - snowflakeAccess01: []
      x-google-backend:
        address: <Cloud Function Trigger URL>
        protocol: h2
      responses:
        '200':
          description: <DESCRIPTION>
          schema:
            type: string
Copy

업데이트된 파일 다시 로딩하기

구성 파일을 업데이트한 후 다음과 같이 Google Cloud Console에서 파일을 다시 로딩해야 합니다.

  1. Gateways 페이지에서 게이트웨이의 이름을 클릭합니다.

  2. EDIT 를 클릭합니다.

  3. API Config 에서 Select a Config 라는 제목의 상자를 클릭합니다.

  4. Create new API config 옵션을 선택합니다.

  5. Upload an API Spec 이 포함된 상자에서 BROWSE 버튼을 클릭합니다.

  6. 이전에 만든 파일 중 원하는 YAML 파일을 선택합니다. 확장명이 .yaml 또는 .yml 인지 확인합니다.

  7. Display Name 을 입력합니다. 이전에 사용한 이름이 아니라 새롭고 고유한 이름을 사용합니다.

  8. Select a Service Account 라는 메시지가 표시되면 App Engine default service account 를 선택합니다.

    (샘플로 사용할 것이 아니라) 프로덕션 환경에서 사용할 함수를 만들 경우 다른 서비스 계정을 선택할 수 있습니다.

    선택한 서비스 계정은 Google Cloud Function을 호출할 권한을 포함한 알맞은 권한이 있어야 합니다.

  9. 이제 API 게이트웨이 페이지로 다시 돌아가게 됩니다. Config 필드에 기존 API 구성 파일의 표시 이름이 표시되는 경우 다음을 수행합니다.

    1. EDIT 를 클릭합니다.

    2. API Config 에서 Select a Config 상자를 다시 찾아 상자를 클릭합니다.

    3. 새 API 구성을 선택합니다.

    4. UPDATE 버튼을 클릭합니다. 그러면 API 게이트웨이 목록으로 다시 돌아갑니다.

    API Gateway가 업데이트되는 동안 몇 분 정도 기다려야 할 수도 있습니다. 게이트웨이를 새로 고치는 중임을 나타내는 아이콘이 API 게이트웨이 이름 왼쪽에 나타날 수 있습니다.

새로 고침이 아직 진행 중인지 확인하려면 게이트웨이 이름 위에 있는 REFRESH 버튼을 클릭하십시오. 게이트웨이 이름 왼쪽에 있는 아이콘이 사라진 후 게이트웨이를 완전히 새로 고쳐야 하며, 그러면 다음 단계로 계속 진행할 수 있습니다.

외부 함수 테스트하기

새 보안 구성 파일에서 외부 함수가 올바르게 작동하는지 확인하려면 외부 함수를 다시 호출하십시오.

자세한 내용은 GCP용 외부 함수 호출하기 섹션을 참조하십시오.

다음 단계

없습니다. GCP용 외부 함수를 성공적으로 만들었습니다.