VPC Service Controls を構成する

Managed Airflow(Gen 3) | Managed Airflow(Gen 2) | Managed Airflow(レガシー Gen 1)

VPC Service Controls を使用すると、組織で Google Cloud リソースの周囲に境界を定義して、データ漏洩のリスクを軽減できます。

Managed Airflow 環境はサービス境界内にデプロイできます。VPC Service Controls を使用して環境を構成することにより、センシティブ データを非公開にしたまま、Managed Airflow のフルマネージド ワークフロー オーケストレーション機能を活用できます。

VPC Service Controls による Managed Airflow のサポートは次のことを意味します。

  • Managed Airflow を VPC Service Controls の境界内の安全なサービスとして選択できるようになりました。
  • Managed Airflow で使用されるすべての基盤となるリソースは、VPC Service Controls アーキテクチャをサポートし、そのルールに従うように構成されます。

VPC Service Controls で Managed Airflow 環境をデプロイすると、次のメリットが得られます。

  • データ漏洩のリスクの低減。
  • アクセス制御の構成ミスによるデータ漏洩に対する保護。
  • 悪意のあるユーザーが未承認の Google Cloud リソースにデータをコピーしたり、外部の攻撃者がインターネットから Google Cloud リソースにアクセスしたりするリスクの軽減。

Managed Airflow の VPC Service Controls について

  • すべての VPC Service Controls ネットワークの制約がマネージド Airflow 環境にも適用されます。詳細については、VPC Service Controls のドキュメントをご覧ください。

VPC Service Controls での Google API とサービスへの接続について

マネージド Airflow(Gen 3)は、restricted.googleapis.com を介して Google サービスにトラフィックを転送します。これにより、この範囲でサポートされている Google API、サービス、ドメインにアクセスできるようになります。

詳細と、 restricted.googleapis.com で使用可能なサービスとドメインの一覧については、Virtual Private Cloud ドキュメントのネットワーク構成をご覧ください。

Managed Airflow(Gen 3)環境は、必要な API とサービスのリストに含まれていない Google API、サービス、 ドメイン への呼び出しをブロックします。DAG から API を呼び出す場合は、次のことを確認してください。

  1. サービスが VPC Service Controls をサポートしていることを確認します。
  2. 制限付きサービスにサービスを追加します。
  3. VPC のアクセス可能なサービスにサービスを追加します。

たとえば、VertexAI Operator を使用する場合は、制限付きサービスと VPC のアクセス可能なサービスの両方に aiplatform.googleapis.com を追加します。

境界にサービスを追加する方法の詳細については、VPC Service Controls ドキュメントの サービス境界を管理する をご覧ください。

マネージド Airflow(Gen 3)では、VPC Service Controls を サポートしておらずrestricted.googleapis.com を介して利用できないサービスには、VPC Service Controls で保護された環境から アクセスできません。この制限は、環境のセキュリティを強化するために Managed Airflow(Gen 3)で追加されました。Managed Airflow(第 2 世代)では、サポートされていないサービスへのアクセスを構成できますが、VPC Service Controls で保護された環境では行わないことを強くおすすめします。

共有 VPC と CMEK を使用する環境の境界

環境がサービス境界で保護され、 共有 VPCカスタマー マネージド暗号鍵(CMEK)、またはその両方を使用している場合は、 次のプロジェクトが同じサービス境界 に配置されていることを確認してください。

  • サービス プロジェクト: Managed Airflow 環境を含むプロジェクト。
  • ホスト プロジェクト: 共有 VPC ネットワークを含むプロジェクト。
  • Cloud Key Management Service 鍵をホストするプロジェクト。

境界内に環境を作成する

境界内に Managed Airflow をデプロイするには、次の手順が必要です。

  1. プロジェクトに対して Access Context Manager APICloud Composer API を有効にします。参考として、API の有効化をご覧ください。

  2. VPC Service Controls のドキュメントの 境界の構成手順に沿って、境界を作成します。制限付きサービスのリストに、制限する他のサービスに加えて、Managed Airflow で使用されるすべてのサービスが含まれていることを確認します。

    • Cloud Composer API (composer.googleapis.com)
    • Artifact Registry API (artifactregistry.googleapis.com)
    • Compute Engine API(compute.googleapis.com)
    • Kubernetes Engine API (container.googleapis.com)
    • Container File System API(containerfilesystem.googleapis.com)
    • Cloud DNS API(dns.googleapis.com)
    • Service Account Credentials API(iamcredentials.googleapis.com)
    • Cloud Logging API (logging.googleapis.com)
    • Cloud Monitoring API (monitoring.googleapis.com)
    • Cloud Pub/Sub API (pubsub.googleapis.com)
    • Cloud SQL Admin API(sqladmin.googleapis.com)
    • Cloud Storage API(storage.googleapis.com)

    • DAG で使用される他のすべてのサービスの場合:

      1. 制限付きサービスにサービスを追加します。
      2. VPC のアクセス可能なサービスにサービスを追加します。
  3. 新しいマネージド Airflow 環境を作成します。

    1. Google Cloud CLI を使用して環境を作成します。
    2. --enable-private-environment 引数を使用してプライベート IP を有効にします。
    3. --web-server-allow-all--web-server-allow-ip、または --web-server-deny-all 引数を使用して、ウェブサーバーのアクセス パラメータを指定します。これらの引数の使用方法の詳細については、環境を作成するをご覧ください。保護を強化するには、特定の IP 範囲からのウェブサーバーへのアクセスのみを許可します。
    4. 公共のインターネット リポジトリからのパッケージのインストールを禁止します --enable-private-builds-only 引数を使用して。

      例:

      gcloud composer environments create example-environment \
        --location us-central1 \
        --enable-private-environment \
        --web-server-allow-all \
        --enable-private-builds-only
      
  4. デフォルトでは、Airflow UI と API へのアクセスはセキュリティ境界内からのみ許可されます。セキュリティ境界外で使用できるようにするには、アクセスレベルまたは 上り(内向き)ルールと下り(外向き)ルールを構成します。

既存の環境を境界に追加する

環境でプライベート IP を使用し、公共のリポジトリからの PyPI パッケージのインストールが無効になっている場合は、環境を含むプロジェクトを境界に追加できます。

既存の Managed Airflow(Gen 3)環境をこの構成に更新するには:

  1. 前のセクションで説明したように、境界をすでに作成または構成していることを確認します
  2. Google Cloud CLI を使用して環境を更新します。
  3. --enable-private-environment 引数を使用してプライベート IP を有効にします。
  4. --enable-private-builds-only 引数を使用して、公共のインターネット リポジトリからのパッケージのインストールを禁止します。
  5. 必要に応じて、 Airflow ウェブサーバーへのアクセスを構成します。 保護を強化するには、特定の IP 範囲からのウェブサーバーへのアクセスのみを許可します。

例:

gcloud composer environments update example-environment \
  --location us-central1 \
  --enable-private-environment \
  --enable-private-builds-only

VPC Service Controls に PyPI パッケージをインストールする

デフォルトの VPC Service Controls 構成では、Managed Airflow は、VPC ネットワークの内部 IP アドレス空間から到達可能なプライベート リポジトリからの PyPI パッケージのインストールのみをサポートしています。

VPC Service Controls 境界内のすべての Managed Airflow 環境は、デフォルトで公開 PyPI リポジトリにアクセスできません。

プライベート リポジトリからインストールする

推奨される構成は、プライベート PyPI リポジトリを設定することです。

  1. 組織で使用する信頼できるパッケージを導入してから、プライベート リポジトリから Python 依存関係を インストールするように Managed Airflow を構成します

パブリック リポジトリからインストールする

外部リポジトリから PyPI パッケージをインストールするには:

  1. Artifact Registry リモート リポジトリを作成します。
  2. このリポジトリにアップストリーム ソースへのアクセス権を付与します。
  3. Artifact Registry リポジトリからパッケージをインストールするように Airflow を構成します。

VPC Service Controls のログ

環境作成に関する問題のトラブルシューティングを行うときに、VPC Service Controls によって生成された監査ログを分析できます。

他のログメッセージに加えて、環境のコンポーネントを構成する cloud-airflow-prod@system.gserviceaccount.com および service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com サービス アカウントに関する情報のログを確認できます。

Managed Airflow サービスは、 cloud-airflow-prod@system.gserviceaccount.com サービス アカウントを使用して、 テナント プロジェクト コンポーネント を環境で管理します。

service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com サービス アカウント(Composer サービス エージェント サービス アカウント)は、 サービス プロジェクトとホスト プロジェクトの 環境コンポーネントを管理します

次のステップ