リソース ロケーションの制限を構成する

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、Cloud Composer で保存されたデータを指定したロケーション内に保持するようにリソース ロケーションの制限を構成する方法について説明します。

ロケーション制限の仕組み

Cloud Composer のロケーション制限は、Cloud Composer 環境が作成されたプロジェクトに適用される組織のポリシーに基づいて決定されます。このポリシーは、プロジェクト内で割り当てられるか、組織から継承されます。

ロケーション制限を有効にすると、ポリシーで禁止されているリージョンに環境を作成できなくなります。リージョンが拒否リストに含まれている場合、またはリージョンが許可リストに含まれていない場合、このリージョンに環境を作成することはできません。

環境の作成を有効にするには、このリージョン内の特定のゾーンではなく、リージョン全体をポリシーで許可する必要があります。たとえば、europe-west3 リージョンで Cloud Composer 環境を作成するには、ポリシーでこのリージョンを許可する必要があります。

Cloud Composer は、次のタイミングでロケーションの制限を確認します。

  • 環境の作成時。
  • 環境のアップグレード時、オペレーション中に追加のリソースが作成された場合。
  • 環境のアップデート時、Cloud Composer の依存関係にロケーション制限を適用しない古い環境の場合。

Cloud Composer は、ロケーションの制限を確認するだけでなく、次の処理も行います。

  • ユーザーがカスタマイズした Airflow イメージをリージョンの Artifact Registry リポジトリに保存する。
  • ポリシーで US マルチリージョンが明示的に禁止されている場合、Cloud Build の使用を無効にする。この場合、ユーザーがカスタマイズした Airflow イメージは、GKE クラスタ内に構築されます。

リソース ロケーションの制限を有するプライベート IP 環境に Python 依存関係をインストールする

プロジェクトにリソース ロケーションの制限を設定している場合、Cloud Build を使用して Python パッケージをインストールすることはできません。その結果、公共のインターネット上のリポジトリへの直接アクセスは無効になります。

ロケーションの制限で US マルチリージョンが許可されていない場合にプライベート IP 環境に Python 依存関係をインストールするには、次に挙げる選択肢のいずれかを使用します。

Cloud Composer ログに対してロケーションを制限する

Cloud Composer ログに機密データが含まれている場合は、Cloud Composer ログをリージョンの Cloud Storage バケットにリダイレクトすることをおすすめします。そうするには、ログシンクを使用します。ログを Cloud Storage バケットにリダイレクトすると、ログは Cloud Logging に送信されません。

gcloud

  1. Cloud Storage バケットを新規作成する

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
    

    以下のように置き換えます。

    • LOCATION は、環境が配置されているリージョン。
    • BUCKET_NAME をバケット名に置き換えます。例: composer-logs-us-central1-example-environment
  2. ログシンクを新規作成します。

    gcloud logging sinks create \
    composer-log-sink-ENVIRONMENT_NAME \
    storage.googleapis.com/BUCKET_NAME \
    --log-filter "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    

    以下のように置き換えます。

    • ENVIRONMENT_NAME を環境の名前にする。
    • BUCKET_NAME をバケット名に置き換えます。
    • LOCATION は、環境が配置されているリージョン。
  3. 上記のコマンドの出力には、サービス アカウント番号が含まれます。このサービス アカウントに Storage オブジェクト作成者のロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' \
    --condition=None
    

    以下のように置き換えます。

    • PROJECT_ID は、プロジェクト ID に置き換えます。
    • SA_NUMBER は、前のステップの gcloud logging sinks create コマンドによって指定されたサービス アカウント番号に置き換えます。
  4. 環境のログを Monitoring から除外します。

    gcloud logging sinks update _Default \
    --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter=\
    "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    

    以下のように置き換えます。

    • ENVIRONMENT_NAME を環境の名前にする。
    • LOCATION は、環境が配置されているリージョン。

次のステップ