IAP を有効にして、プライベート オンプレミス、Compute Engine、GKE、その他のエンドポイントを呼び出す

エンドポイントに対して Identity-Aware Proxy(IAP)を有効にすると、Workflows からプライベート オンプレミス、Compute Engine、Google Kubernetes Engine(GKE)、その他の Google Cloud エンドポイントを呼び出すことができます。IAP を使用してアクセス制御ポリシーを適用すると、HTTPS によってアクセスされるアプリケーションの一元的な承認レイヤを確立できるため、ネットワーク レベルのファイアウォールに依存することなく、アプリケーション レベルのアクセス制御モデルを使用できます。詳細については、IAP の概要と以下をご覧ください。

また、Workflows で Service Directory のサービス レジストリを使用すると、ワークフローの実行から HTTP 呼び出しのプライベート エンドポイントをターゲットにできます。Virtual Private Cloud(VPC)ネットワーク内にプライベート エンドポイントを作成することで、エンドポイントを VPC Service Controls に準拠させることが可能です。詳細については、VPC Service Controls 準拠のプライベート エンドポイントを呼び出すをご覧ください。

HTTP リクエストを行う

Workflows からのプライベート エンドポイントの呼び出しは、HTTP リクエストを介して行われます。最も一般的な HTTP リクエスト メソッドには、呼び出しショートカット(http.gethttp.post など)がありますが、call フィールドを http.request に設定し、method フィールドでリクエストのタイプを指定することであらゆるタイプの HTTP リクエストを作成できます。 詳細については、HTTP リクエストを行うをご覧ください。

必要な権限を持つサービス アカウントを使用する

他の Google Cloud サービス対してリクエストを行う場合は、ワークフローに、リクエストされたリソースへのアクセスに必要な権限を持つ 1 つ以上の Identity and Access Management(IAM)ロールが付与されているサービス アカウントに関連付けられている必要があります。既存のワークフローに関連付けられているサービス アカウントについては、ワークフローに関連付けられたサービス アカウントの確認をご覧ください。

サービス アカウントを設定するときに、リクエスト対象の ID とアクセス権を付与するリソースを関連付けます。リクエスト元 ID は、そのリソースのプリンシパルとし、適切なロールを指定します。このロールでは、リソースのコンテキストで ID が持つ権限を定義します。IAP により保護されているアプリケーションまたはリソースには、適正なロールを持つプリンシパルのみがプロキシを介してアクセスできます。

たとえば、認証後、IAP は関連する許可ポリシーを適用して、プリンシパルがリクエストされたリソースにアクセスする権限を持っているかどうかをチェックします。プリンシパルは、リソースが存在する Google Cloud コンソールプロジェクトの IAP で保護されたウェブアプリ ユーザーのロール(roles/iap.httpsResourceAccessor)がある場合、アプリケーションにアクセスする権限があります。

IAP ページから IAP で保護されたリソースへのアクセスを構成するには、Workflows サービス アカウントをプリンシパルとして追加します。詳細については、IAP で保護されたリソースへのアクセスを管理するをご覧ください。

ワークフローに認証情報を追加する

デフォルトでは、セキュリティ上の理由から、HTTP リクエストには ID やアクセス トークンが含まれていません。認証情報は、明示的にワークフロー定義に追加する必要があります。プライベート エンドポイントにリクエストを送信する場合は、OIDC を使用して IAP 経由で認証します。

OIDC を使用して HTTP リクエストを行うには、URL を指定した後に、ワークフローの定義の args セクションに auth セクションを追加します。

YAML

  - step_A:
      call: http.get
      args:
          url: https://www.example.com/endpoint
          body:
              someValue: "Hello World"
              anotherValue: 123
          auth:
              type: OIDC
              audience: OIDC_AUDIENCE
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://www.example.com/endpoint",
            "body": {
              "someValue": "Hello World",
              "anotherValue": 123
            },
            "auth": {
              "type": "OIDC",
              "audience": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      

audience パラメータを使用して、トークンの OIDC オーディエンスを指定できます。 IAP 対応エンドポイントを呼び出すときは、アプリケーション用に構成した OAuth 2.0 クライアント ID を指定する必要があります。これは [認証情報] ページで取得できます。

次のステップ