認証済みの 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 -
Authorization
リクエスト ヘッダーを使用して、サードパーティ API で認証します。このドキュメントでは、外部 API に認証済みリクエストを行うをご覧ください。Google Cloud APIs - 可能であれば、Workflows コネクタを使用します。このコネクタにより、ワークフローのサービス アカウントを使用して必要な認証が自動的に行われます。コネクタを使用できない場合は、OAuth 2.0 で HTTP リクエストを使用して他の Google Cloud API に接続します。ホスト名が
.googleapis.com
で終わる API のすべてが、この認証方法を受け入れます。このドキュメントでは、Google Cloud APIs に認証済みリクエストを行うをご覧ください。Cloud Run 関数または Cloud Run - OIDC を使用して Cloud Run または Cloud Run 関数に接続します。このドキュメントの Cloud Run または Cloud Run 関数にリクエストを行うをご覧ください。
プライベート オンプレミス、Compute Engine、Google Kubernetes Engine(GKE)、その他の Google Cloud エンドポイント - エンドポイントへのアクセス制御ポリシーを適用するために、OIDC で Identity-Aware Proxy(IAP)を使用します。詳細については、オンプレミス、Compute Engine、GKE、その他エンドポイントを呼び出すと、ユーザーまたはサービス アカウントから IAP で保護されたリソースへ認証する方法を学ぶをご確認ください。
外部 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_AUDIENCE
は url
と同じ値に設定されます。
Workflows は、上り(内向き)が内部トラフィックに制限されている Cloud Run 関数や Cloud Run サービスを呼び出すことができます。この構成では、インターネットからサービスにアクセスできませんが、Workflows からはサービスにアクセスできます。
詳細については、Cloud Run 関数または Cloud Run を呼び出すをご覧ください。