VPC Service Controls の構成

Virtual Private Cloud Service Controls(VPC Service Controls)により、組織が Google Cloud リソースの周囲に境界を定義して、データ漏洩のリスクを軽減できます。

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

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

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

VPC Service Controls で Cloud Composer 環境をデプロイすると、次のことが得られます。

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

サービス境界の作成

サービス境界を作成して構成する方法を学ぶには、サービス境界の作成をご覧ください。境界内で保護されるサービスの 1 つとして Cloud Composer を確実に選択してください。

境界内の環境の作成

境界内に Cloud Composer をデプロイするには、追加の手順を行う必要があります。Cloud Composer 環境を作成する場合:

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

  2. 次のサービス アカウントを許可リストに登録するには、AccessLevel に追加して、サービス境界に関連付けます。

    • cloud-logs@system.gserviceaccount.com - このサービス アカウントにより、Cloud Composer でプロジェクトの Cloud Monitoring サービスにログを格納できます。
  3. 環境を最大限に保護するために、Cloud SQL、Pub/Sub、Monitoring、Cloud Storage、Kubernetes Engine、Container Registry のサービスを境界に追加します。

  4. バージョン composer-1.10.4 以降を使用します。

  5. Airflow データベースの DAG シリアル化を有効にします。それには、環境を作成するときに core セクションに [core] store_serialized_dags=True[core] store_dag_code=True の構成のオーバーライドを追加します。詳しくは、DAG のシリアル化をご覧ください。

  6. プライベート IP を有効にして、新しい Cloud Composer 環境を作成します。環境の作成時にこの設定を構成する必要があることに注意してください。

  7. 環境の作成時には、必ず Airflow ウェブサーバーへのアクセスを構成してください。最大限の保護のために、特定の IP 範囲からのウェブサーバーへのアクセスのみを許可します。詳細については、新しい環境の作成のステップ 5 をご覧ください。

VPC Service Controls による既存の環境の構成

環境が特定の条件を満たしている場合は、境界内で動作するように Cloud Composer を構成できます。

  1. 環境は、プライベート IP を有効にして Composer ベータ版 API を使用して作成されました。

  2. DAG のシリアル化がオンである。

これらの条件が満たされている場合は、上記のセクションで説明したように境界が作成されたことを前提として、環境を含むプロジェクトを境界に追加できます。

PyPI パッケージのインストール

デフォルトの VPC Service Controls 構成(上記)では、Cloud Composer は、VPC ネットワークのプライベート IP アドレス空間から到達可能なプライベート リポジトリからの PyPI パッケージのインストールのみをサポートしています。このプロセスの推奨構成では、プライベート PyPI リポジトリを設定し、組織で使用する信頼できるパッケージを導入してから、プライベート リポジトリから Python 依存関係をインストールするように Cloud Composer を構成します

プライベート IP 空間外のリポジトリから PyPI パッケージをインストールすることもできます。手順は次のとおりです。

  1. プライベート IP 空間で実行中の Composer が外部の PyPI リポジトリと接続できるように Cloud NAT を構成します。
  2. Composer クラスタからリポジトリへの送信側の接続を許可するようにファイアウォール ルールを構成します。

この設定の使用時は、確実に外部リポジトリを使用するリスクを理解し、それを受け入れてください。外部リポジトリのコンテンツと整合性が信頼できることを確認してください。これらの接続は、抜き取りベクターとして使用される可能性があります。

ネットワーク構成のチェックリスト

境界内で Cloud Composer 環境を作成するように VPC ネットワークが適切に構成されている必要があります。確実に以下の構成要件に従ってください。

  • Cloud Console で [VPC ネットワーク] -> [ファイアウォール] セクションに移動し、次のファイアウォール ルールが構成されていることを確認します。

    • GKE ノード IP 範囲から任意の場所への外向き(下り)を許可する、ポート 53
    • GKE ノード IP 範囲から GKE ノード IP 範囲への外向き(下り)を許可する、すべてのポート
    • GKE ノード IP 範囲から GKE マスター IP 範囲への外向き(下り)を許可する、すべてのポート
    • GKE ノード IP 範囲から 199.36.153.4/30 への外向き(下り)を許可する、ポート 443(restricted.googleapis.com)
    • GCP ヘルスチェック 130.211.0.0/22,35.191.0.0/16 からノード IP 範囲への内向き(上り)を許可する、TCP ポート 80 と 443
    • ノード IP 範囲から GCP ヘルスチェックへの外向き(下り)を許可します。TCP ポート 80 と 443。

    VPC ネットワークのルールを確認、追加、更新する方法を学ぶには、ファイアウォール ルールの使用をご覧ください。

  • restricted.googleapis.com エンドポイントへの接続を構成します。

    • *.googleapis.com から restricted.googleapis.com への DNS マッピングが存在していることを確認する
    • DNS *.gcr.iogoogleapis.com エンドポイントと同様に 199.36.153.4/30 に解決されます。それを行うために、CNAME *.gcr.io -> gcr.io. A gcr.io. -> 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7 のように新しいゾーンを作成します。

    詳細については、Google API とサービスへのプライベート接続の設定をご覧ください。

制限事項

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

  • DAG のシリアル化を有効にすると、ウェブ UI の機能とともにレンダリングされたテンプレートは表示されません。これは、Airflow と Cloud Composer の今後のバージョンで修正される可能性があります。

  • DAG のシリアル化が有効の場合、async_dagbag_loader フラグを True に設定することはサポートされていません。

  • DAG のシリアル化を有効にすると、Cloud Composer がデプロイされている VPC ネットワークのセキュリティを損なう可能性があるため、すべての Airflow ウェブサーバー プラグインが無効になります。これは、Airflow 演算子、センサーなどを含む、スケジューラまたはワーカーのプラグインには影響しません。

  • Cloud Composer が境界内で実行中は、一般公開 PyPI リポジトリへのアクセスは制限されます。PyPi モジュールをプライベート IP モードでインストールする方法を学ぶには、Python 依存関係のインストールをご覧ください