Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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 リソースにアクセスするリスクの軽減。
VPC Service Controls モードの Airflow ウェブサーバー
VPC Service Controls モードでは、ウェブサーバーへのアクセスは境界で保護され、境界外からのアクセスはブロックされます。
サービス境界外からのアクセスを許可するには、アクセスレベルを適切に構成します。
サービス境界の作成
サービス境界を作成して構成する方法を確認するには、サービス境界の作成をご覧ください。境界内で保護されるサービスの 1 つとして Cloud Composer を確実に選択してください。
境界内の環境の作成
境界内に Cloud Composer をデプロイするには、追加の手順を行う必要があります。Cloud Composer 環境を作成する場合:
プロジェクトに対して Access Context Manager API と Cloud Composer API を有効にします。参考として、API の有効化をご覧ください。
サービス境界に次の VPC のアクセス可能なサービスがあることを確認します。ない場合、環境の作成に失敗する可能性があります。
- Cloud Composer API (composer.googleapis.com)
- Compute Engine API(compute.googleapis.com)
- Kubernetes Engine API (container.googleapis.com)
- Container Registry API (containerregistry.googleapis.com)
- Artifact Registry API (artifactregistry.googleapis.com)
- Cloud Storage API(storage.googleapis.com)
- Cloud SQL Admin API(sqladmin.googleapis.com)
- Cloud Logging API (logging.googleapis.com)
- Cloud Monitoring API (monitoring.googleapis.com)
- Cloud Pub/Sub API (pubsub.googleapis.com)
- Security Token Service API (sts.googleapis.com)
- Cloud Resource Manager API (cloudresourcemanager.googleapis.com)
- Service Directory API (servicedirectory.googleapis.com)
- Cloud Key Management Service API (cloudkms.googleapis.com)、Cloud KMS または CMEK 鍵を使用する場合
- Secret Manager API (secretmanager.googleapis.com)、Secret Manager をシークレットのバックエンドとして 使用している場合
プライベート IP を有効にして、新しい Cloud Composer 環境を作成します。環境の作成時に、この設定を構成する必要があります。
デフォルトでは、Airflow UI と API へのアクセスはセキュリティ境界内からのみ許可されます。セキュリティ境界外で使用できるようにする場合は、境界の外部から保護されたリソースへのアクセスを許可するを参照して、アクセスレベルを適切に構成します。
VPC Service Controls による既存の環境の構成
次の場合は、環境を含むプロジェクトを境界に追加できます。
PyPI パッケージのインストール
デフォルトの VPC Service Controls 構成では、Cloud Composer は、VPC ネットワークの内部 IP アドレス空間から到達可能なプライベート リポジトリからの PyPI パッケージのインストールのみをサポートしています。
プライベート リポジトリからインストールする
推奨の構成は、プライベート PyPI リポジトリを設定し、組織で使用する信頼できるパッケージを導入してから、プライベート リポジトリから Python 依存関係をインストールするように Cloud Composer を構成することです。
パブリック リポジトリからインストールする
リモート リポジトリ
これは、パブリック リポジトリからパッケージをインストールする場合に推奨される方法です。
プライベート IP 空間外のリポジトリから PyPI パッケージをインストールする手順は次のとおりです。
- Artifact Registry リモート リポジトリを作成します。
- このリポジトリにアップストリーム ソースへのアクセス権を付与します。
- Artifact Registry リポジトリからパッケージをインストールするように Airflow を構成します。
外部接続
プライベート IP 空間外のリポジトリから PyPI パッケージをインストールする手順は次のとおりです。
プライベート IP 空間で実行中の Cloud Composer が外部の PyPI リポジトリと接続できるように Cloud NAT を構成します。
Composer クラスタからリポジトリへの送信側の接続を許可するようにファイアウォール ルールを構成します。
Cloud Composer データプレーンで使用されるサービス アカウントには、Composer.Worker
と iam.serviceAccountUser
の権限のロールが必要です。
Google API とサービスへの接続
VPC Service Controls 構成でネットワーク トラフィックを制御するには、restricted.googleapis.com
を介して Google API とサービスへのアクセスを構成します。このドメインは、VPC Service Controls をサポートしていない Google API とサービスへのアクセスをブロックします。
Cloud Composer 環境は次のドメインを使用します。
*.googleapis.com
は、他の Google サービスへのアクセスに使用されます。*.composer.cloud.google.com
は、環境の Airflow ウェブサーバーにアクセスできるようにするために使用されます。このルールは、環境を作成する前に適用する必要があります。- 別の方法として、特定のリージョンに対するルールを作成することもできます。その場合は、
REGION.composer.cloud.google.com
を使用します。REGION
は、環境が配置されているリージョン(us-central1
など)に置き換えます。
- 別の方法として、特定のリージョンに対するルールを作成することもできます。その場合は、
(省略可)
*.composer.googleusercontent.com
は、環境の Airflow ウェブサーバーにアクセスするときに使用されます。このルールは、VPC ネットワークで実行されているインスタンスから Airflow ウェブサーバーにアクセスする場合にのみ必要です。それ以外の場合は必須ではありません。このルールの一般的なシナリオは、VPC ネットワーク内から Airflow REST API を呼び出す場合です。- 代わりに、特定の環境に対するルールを作成することもできます。その場合は、
ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com
を使用します。ENVIRONMENT_WEB_SERVER_NAME
は、環境の Airflow UI URL の一意の部分(bffe6ce6c4304c55acca0e57be23128c-dot-us-central1
など)に置き換えます。
- 代わりに、特定の環境に対するルールを作成することもできます。その場合は、
*.pkg.dev
は、環境の作成または更新時などに、環境イメージを取得するために使用されます。*.gcr.io
GKE では、Cloud Composer のバージョンに関係なく Container Registry ドメインへの接続が必要です。
restricted.googleapis.com
エンドポイントへの接続を構成します。
ドメイン | DNS 名 | CNAME レコード | A レコード |
---|---|---|---|
*.googleapis.com
|
googleapis.com. |
DNS 名: *.googleapis.com. リソース レコードのタイプ: CNAME 正規名: googleapis.com. |
リソース レコードのタイプ: A IPv4 アドレス: 199.36.153.4 、199.36.153.5 、199.36.153.6 、199.36.153.7
|
*.composer.cloud.google.com
|
composer.cloud.google.com. |
DNS 名: *.composer.cloud.google.com. リソース レコードのタイプ: CNAME 正規名: composer.cloud.google.com. |
リソース レコードのタイプ: A IPv4 アドレス: 199.36.153.4 、199.36.153.5 、199.36.153.6 、199.36.153.7
|
*.composer.googleusercontent.com
(省略可、説明を参照) |
composer.googleusercontent.com. |
DNS 名: *.composer.googleusercontent.com. リソース レコードのタイプ: CNAME 正規名: composer.googleusercontent.com. |
リソース レコードのタイプ: A IPv4 アドレス: 199.36.153.4 、199.36.153.5 、199.36.153.6 、199.36.153.7
|
*.pkg.dev
|
pkg.dev. |
DNS 名: *.pkg.dev. リソース レコードのタイプ: CNAME 正規名: pkg.dev. |
リソース レコードのタイプ: A IPv4 アドレス: 199.36.153.4 、199.36.153.5 、199.36.153.6 、199.36.153.7
|
*.gcr.io
|
gcr.io. |
DNS 名: *.gcr.io. リソース レコードのタイプ: CNAME 正規名: gcr.io. |
リソース レコードのタイプ: A IPv4 アドレス: 199.36.153.4 、199.36.153.5 、199.36.153.6 、199.36.153.7
|
DNS ルールを作成するには:
新しい DNS ゾーンを作成し、このゾーンの DNS 名として DNS 名を使用します。
例:
pkg.dev.
CNAME レコードのレコードセットを追加します。
例:
- DNS 名:
*.pkg.dev.
- リソース レコードのタイプ:
CNAME
- 正規名:
pkg.dev.
- DNS 名:
レコードセットを追加するをレコードに置き換えます:
例:
- リソース レコードのタイプ:
A
- IPv4 アドレス:
199.36.153.4
、199.36.153.5
、199.36.153.6
、199.36.153.7
- リソース レコードのタイプ:
詳細については、Google API およびサービスへのプライベート接続を設定するをご覧ください。
ファイアウォール ルールを構成する
プロジェクトにデフォルト以外のファイアウォール ルールがある場合(暗黙のファイアウォール ルールをオーバーライドする、またはデフォルトのネットワークで事前入力ルールを変更するルールなど)、次のファイアウォール ルールが構成されていることを確認します。
たとえば、すべての外向きトラフィックを拒否するファイアウォール ルールがある場合、Cloud Composer は環境の作成に失敗する可能性があります。問題を回避するには、上記のリストに従って、グローバル deny
ルールよりも優先度が高い選択的な allow
ルールを定義します。
環境からのトラフィックを許可するように VPC ネットワークを構成します。
- VPC ネットワークのルールを確認、追加、更新する方法を学ぶには、ファイアウォール ルールの使用をご覧ください。
- 接続ツールを使用して、IP 範囲間の接続性を検証します。
- ネットワーク タグを使用して、アクセスをさらに制限できます。これらのタグは、環境を作成するときに設定できます。
説明 | 方向 | アクション | 送信元または宛先 | プロトコル | ポート |
---|---|---|---|---|---|
DNS Cloud DNS の VPC Service Controls サポートの説明に沿って構成します。 |
- | - | - | - | - |
Google API とサービス | Egress | 許可 | Google API とサービスに使用する restricted.googleapis.com の IPv4 アドレス。 |
TCP | 443 |
環境のクラスタノード | Egress | 許可 | 環境のサブネットワークのプライマリ IP アドレス範囲 | TCP、UDP | すべて |
環境のクラスタ Pod | Egress | 許可 | 環境のサブネットワーク内の Pod のセカンダリ IP アドレス範囲 | TCP、UDP | すべて |
環境のクラスタ コントロール プレーン | Egress | 許可 | GKE コントロール プレーンの IP 範囲 | TCP、UDP | すべて |
(環境で Private Service Connect を使用している場合)接続サブネットワーク | Egress | 許可 | Cloud Composer 接続サブネットワークの範囲 | TCP | 3306, 3307 |
(環境で VPC ピアリングを使用している場合)テナント ネットワーク | Egress | 許可 | Cloud Composer テナント ネットワークの IP 範囲 | TCP | 3306, 3307 |
IP 範囲を取得するには:
Pod、Service、コントロール プレーンのアドレス範囲は、環境のクラスタの [クラスタ] ページで確認できます。
Google Cloud コンソールで [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[クラスタの詳細を表示] リンクをクリックします。
環境の Cloud Composer テナント ネットワークの IP 範囲は、[環境の構成] タブで確認できます。
環境のサブネットワーク ID と Cloud Composer 接続サブネットワーク ID は、[環境の構成] タブで確認できます。サブネットワークの IP 範囲を取得するには、[VPC ネットワーク] ページに移動し、ネットワークの名前をクリックして詳細を表示します。
VPC Service Controls のログ
環境作成に関する問題のトラブルシューティングを行うときに、VPC Service Controls によって生成された監査ログを分析できます。
他のログメッセージに加えて、環境のコンポーネントを構成する cloud-airflow-prod@system.gserviceaccount.com
および service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com
サービス アカウントに関する情報のログを確認できます。
Cloud Composer サービスは、cloud-airflow-prod@system.gserviceaccount.com
サービス アカウントを使用して、環境のテナント プロジェクト コンポーネントを管理します。
service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com
サービス アカウントは Composer Service Agent Service Account
とも呼ばれ、サービスとホスト プロジェクトの環境コンポーネントを管理します。
制限事項
- すべての VPC Service Controls ネットワークの制約が Cloud Composer 環境にも適用されます。詳細については、VPC Service Controls のドキュメントをご覧ください。
- Cloud Composer が境界内で実行中は、一般公開 PyPI リポジトリへのアクセスは制限されます。PyPI モジュールをプライベート IP モードでインストールする方法を確認するには、Python 依存関係のインストールをご覧ください。