ワークフローからの認証済みリクエスト

認証済みの HTTP リクエストを行うには、適切な認証情報を持つサービス アカウント(メールアドレスで識別される)にワークフローを関連付ける必要があります。Identity and Access Management(IAM)サービス アカウントをワークフローに接続し、リソースへのアクセスに必要な権限を付与する方法については、Google Cloud リソースにアクセスするための権限をワークフローに付与するをご覧ください。

認証トークン

デフォルトでは、セキュリティ上の理由から、HTTP リクエストには ID やアクセス トークンが含まれていません。認証情報は、明示的にワークフロー定義に追加する必要があります。

このような認証が必要な HTTP ターゲットと Workflows の間で認証を行うために、Workflows はワークフローに接続されているサービス アカウントの認証情報に基づいて認可ヘッダーでトークンを使用し、HTTPS を使用してトークンをターゲット サービスに送信します。Cloud Run 関数や Cloud Run と接続するときは、ID トークン(OIDC)を使用します。googleapis.com でホストされている API の場合は、アクセス トークン(OAuth 2.0)を使用します。

ワークフロー内から認証済みリクエストを行うには、呼び出すサービスに応じて、次のいずれかを行います。

外部 API に認証済みリクエストを行う

サードパーティの API を統合する場合は、Authorization リクエスト ヘッダーを含め、そこに認証の実施に必要な認証情報を加えます。たとえば、サービスに対するリクエストで、ID トークンを Authorization: Bearer ID_TOKEN ヘッダーに含めます。詳細については、API プロバイダのドキュメントをご覧ください。

Google Cloud APIs に認証済みリクエストを行う

ワークフローのサービス アカウントでは、そのワークフローで任意の Google Cloud API に対する認証に使用できる OAuth 2.0 トークンを生成できます。この認証方法を使用すると、ワークフローは関連付けられたサービス アカウントとして認証します。OAuth 2.0 プロトコルを使用して HTTP リクエストを行うには、URL を指定した後に、ワークフローの定義の args セクションに auth セクションを追加します。この例では、VM を停止するために、リクエストが Compute Engine API に送信されます。

YAML

  - step_A:
      call: http.post
      args:
          url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
          auth:
              type: OAuth2
              scopes: OAUTH_SCOPE
    

JSON

    [
      {
        "step_A": {
          "call": "http.post",
          "args": {
            "url": "https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop",
            "auth": {
              "type": "OAuth2",
              "scopes": "OAUTH_SCOPE"
            }
          }
        }
      }
    ]
      
scopes キーは省略できますが、これを使用することで、トークンの OAuth 2.0 スコープを指定できます。OAUTH_SCOPE は、文字列または文字列のリストに置き換えます。スペースとカンマ区切りの文字列もサポートされています。デフォルトでは、値は https://www.googleapis.com/auth/cloud-platform に設定されています。

Cloud Run 関数や Cloud Run にリクエストを行う

Cloud Run 関数や Cloud Run にリクエストを送信するときは、OIDC を使用して認証します。

OIDC を使用して HTTP リクエストを行うには、URL を指定した後に、ワークフローの定義の args セクションに auth セクションを追加します。この例では、Cloud Run 関数を呼び出すために、リクエストが送信されます。

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              audience: OIDC_AUDIENCE
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              "audience": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      
audience キーは省略できますが、これを使用することで、トークンの OIDC オーディエンスを指定できます。デフォルトでは、OIDC_AUDIENCEurl と同じ値に設定されます。

Workflows は、上り(内向き)が内部トラフィックに制限されている Cloud Run 関数や Cloud Run サービスを呼び出すことができます。この構成では、インターネットからサービスにアクセスできませんが、Workflows からはサービスにアクセスできます。

詳細については、Cloud Run 関数または Cloud Run を呼び出すをご覧ください。

次のステップ