ステップ5: コンソールでプロキシサービスの GCP セキュリティポリシーを作成する

前のステップでは、正しいGoogle Cloud API Gatewayエンドポイントのある人であれば誰でも呼び出すことができる、Google Cloud Functionを作成しました。エンドポイントを一般に公開する場合を除いて、Google Cloud API Gatewayでセキュリティポリシーを作成してエンドポイントを保護する必要があります。

このトピックでは、カスタマイズされた securityDefinitions セクションをAPI定義の構成ファイルに追加して、APIゲートウェイのセキュリティポリシーを作成する手順について説明します。

重要

Snowflakeは、APIゲートウェイのセキュリティポリシーを作成することを強くお勧めします。このステップを完了すると、SnowflakeのみがAPIゲートウェイを介して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: コンソールでプロキシサービス(Google Cloud API Gateway)を作成する)で仮のセキュリティ定義を追加した場合、これはすでに行われています。

    • さらに、この名前を追跡ワークシートの Security Definition Name フィールドに記録します。

    • <Gmailサービスアカウント> をトラッキングワークシートの API_GCP_SERVICE_ACCOUNT フィールドからの値に置き換えます。構成ファイルの2つの場所に値を追加します。

      • 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 Gatewayのページに戻るはずです。 Config フィールドに古いAPI Configファイルの表示名が表示されている場合は、次のようにします。

    1. EDIT をクリックします。

    2. API Config の下で、もう一度 Select a Config ボックスを見つけて、ボックスをクリックします。

    3. 新しい API Configを選択します。

    4. UPDATE ボタンをクリックします。これにより、 API Gatewayのリストに戻ります。

    API Gatewayが更新されるまでに数分かかる場合があります。APIゲートウェイ名の左側に、ゲートウェイが更新中であることを示すアイコンが表示される場合があります。

更新がまだ進行中であるかどうかを確認するには、Gateway名の上にある REFRESH ボタンをクリックします。Gateway名の左側にあるアイコンが消えたら、Gatewayを全体的に更新する必要があります。そうすると、次のステップに進むことができます。

外部関数をテストする

外部関数が新しいセキュリティ構成ファイルで正しく機能することを確認するには、外部関数を再度呼び出します。

詳細については、 GCP 用の外部関数の呼び出し をご参照ください。

次のステップ

なし。GCPの外部関数が正常に作成されました。