今回も、Professional Cloud Data Engineer認定取得するために、私が勉強した内容をアウトプットしていきます。
今回は、Cloud Composer、Cloud ComposerでDAGを作成・実行する基本ガイド、Cloud Composer のセキュリティについて説明します!
ぜひ、最後までご覧いただけると嬉しいです!
Cloud Composer
Cloud Composerは、Google Cloudが提供するフルマネージドのワークフローオーケストレーションサービスです。データ分析、ETLパイプライン、機械学習のワークフローなど、複雑なタスクの順序や依存関係を管理し、自動化することができます。
Apache Airflowをベースとした強力な基盤
Cloud Composerは、オープンソースで人気のワークフロー管理システム「Apache Airflow」をベースに構築されています。これにより、Airflowの持つ柔軟性と拡張性を活用しながら、インフラストラクチャの管理という煩わしさから解放されます。ユーザーは使い慣れたPythonを使用して、ワークフローをプログラムで定義し、Airflowの豊富なオペレータやフックを利用して、様々なサービスとの連携を容易に実現できます。
主な特徴とメリット
- フルマネージド:サーバーのセットアップやソフトウェアのインストール、運用管理といったインフラに関する作業はGoogle Cloudに任せることができます。これにより、開発者は本来の目的であるワークフローの構築に集中できます。
- ハイブリッド・マルチクラウド対応:オンプレミスのデータセンターや他のパブリッククラウドにまたがるワークフローも一元的に管理・実行することが可能です。
- Pythonによる定義:ワークフローはPythonで記述されるため、柔軟性が高く、複雑なロジックも表現できます。また、既存のPythonライブラリやツールとシームレスに連携できます。
- Airflowネイティブな体験:Airflowの強力なウェブインターフェースやコマンドラインツールがそのまま利用できるため、ワークフローの実行状況の監視、ログの確認、タスクの再実行などを直感的に行うことができます。
どのようなシーンで役立つか
- ETL処理の自動化:複数のデータソースからデータを抽出し、変換・加工してデータウェアハウスにロードする一連の処理を自動化します。
- データ分析パイプライン:データの収集、前処理、分析、レポート生成までの一連の流れを管理します。
- 機械学習のワークフロー:モデルのトレーニング、評価、デプロイといったステップを自動化し、MLOpsを推進します。
- インフラの自動化:複数のシステムにまたがるインフラのプロビジョニングや構成管理を自動化します。
Cloud Composerを活用することで、複雑なワークフローの管理を簡素化し、ビジネスの俊敏性を高めることができます。
Cloud Composerのまとめ
Cloud Composerは、Apache AirflowをベースにしたGoogle Cloudのフルマネージドなワークフローオーケストレーションサービスです。インフラ管理の負担を軽減しながら、Pythonで柔軟なワークフローを構築できます。ETL処理や機械学習パイプライン、インフラの自動化など、さまざまな業務に対応可能で、ビジネスの効率と俊敏性を向上させます。
Cloud ComposerでDAGを作成・実行する基本ガイド
Cloud Composerは、ワークフローオーケストレーションツールであるApache AirflowをGoogle Cloud上で利用できるマネージドサービスです。その中核をなすのがDAG (Directed Acyclic Graph)です。この記事では、ComposerでDAGを作成し、デプロイするための基本的な方法とベストプラクティスを解説します。
DAGとは?
DAGとは、一言でいうと「実行したいタスクの流れを定義したPythonスクリプト」です。
- タスク (Task):「データをコピーする」「処理を実行する」といった個々の作業単位です。
- 有向 (Directed):タスクには実行順序があり、矢印のように一方向に処理が流れます。
- 非巡回 (Acyclic):タスクの流れはループせず、必ず終わりがあります。
このDAGファイルによって、「どのタスクを、どの順番で、いつ実行するか」を定義します。
DAGファイルの基本的な構造
DAGは、以下の要素で構成されるシンプルなPythonファイルです。
- ライブラリのインポート:DAGの定義やタスク(Operator)に必要なライブラリをインポートします。
- DAGの定義:DAG全体のID、開始日、実行スケジュールなどを設定します。
- タスクの定義:
BashOperator
やPythonOperator
などを使って、個々のタスクが何をするかを定義します。 - タスク依存関係の設定:タスクを実行する順序(依存関係)を定義します。
シンプルなコード例
以下は、「Hello World」と表示するだけの簡単なDAGの例です。
# 1. ライブラリのインポート
from __future__ import annotations
import pendulum
from airflow.models.dag import DAG
from airflow.operators.bash import BashOperator
# 2. DAGの定義
with DAG(
dag_id="hello_world_dag", # DAGのユニークなID
start_date=pendulum.datetime(2025, 7, 1, tz="Asia/Tokyo"), # DAGの初回実行日
schedule="@once", # 実行スケジュール(@onceは1回のみ)
catchup=False, # 過去分の未実行タスクをまとめて実行しない設定
tags=["example"],
) as dag:
# 3. タスクの定義
hello_task = BashOperator(
task_id="hello_task", # タスクのユニークなID
bash_command="echo 'Hello World from Airflow!'",
)
DAGのデプロイ方法
作成したDAGをCloud Composerで実行するには、以下の手順でデプロイします。
- Google Cloud Storage (GCS) バケットを開く:各Cloud Composer環境には、専用のGCSバケットが関連付けられています。
/dags
フォルダにアップロード:バケット内にある/dags
フォルダに、作成したDAGのPythonファイル(例:hello_world_dag.py
)をアップロードします。
これだけでデプロイは完了です。Cloud ComposerはGCSバケットを定期的にスキャンし、新しいDAGを自動的に検知してAirflow UIに反映します。
DAG作成のベストプラクティス
効率的で安定したDAGを作成するために、以下の点を意識することが推奨されます。
catchup=False
を設定する:start_date
が過去の日付の場合、Airflowはスケジュールに沿って実行されなかった分のタスクをすべて実行しようとします。意図しない大量実行を防ぐため、catchup=False
に設定するのが一般的です。- DAGファイルはシンプルに保つ:DAGファイルはスケジューラによって頻繁に読み込まれます。ファイル内で重い処理(API呼び出し、大規模な計算など)を行うと、全体のパフォーマンスが低下する原因になります。重い処理は必ずタスク内で行いましょう。
- Google Cloud Operatorを活用する:BigQueryでのクエリ実行、Dataflowジョブの起動など、他のGoogle Cloudサービスと連携する場合は、専用に用意されたProvider Operator(例:
BigQueryInsertJobOperator
)を利用するのが最も簡単で確実です。 - 動的なDAG生成は慎重に:ループ処理で動的にDAGを生成することも可能ですが、管理が複雑になりがちです。Airflowのベストプラクティスをよく理解した上で利用してください。
これらの基本を押さえることで、Cloud Composer上で信頼性の高いデータワークフローを構築することができます。
Cloud ComposerでDAGを作成・実行する基本ガイドのまとめ
この記事では、Cloud Composerを使ってDAGを作成・実行する基本的な手順とベストプラクティスを紹介しました。DAGの構造やデプロイ方法を理解することで、効率的なワークフローの構築が可能になります。特に、catchupの設定や処理の分離といったポイントを押さえることで、パフォーマンスや運用性を高めることができます。
Cloud Composer のセキュリティ
この記事では、Cloud Composer のセキュリティ機能の概要、ベストプラクティス、そして Airflow UI のアクセス制御について解説します。
Cloud Composer の主要なセキュリティ機能
Cloud Composer は、企業の厳しいセキュリティ要件を満たすために、デフォルトで有効な基本的な機能から、要件に応じてカスタマイズ可能な高度な機能まで、多層的なセキュリティを提供しています。
基本的なセキュリティ機能
以下の機能は、Cloud Composer 環境でデフォルトで利用できます。
- 保存時の暗号化:環境のメタデータが保存されている Cloud SQL データベースや、DAG やタスクログが保存されている環境のバケットなど、環境に関連するデータはすべて、Google が管理する暗号鍵を使用して保存時に暗号化されます。
- 均一なバケットレベルのアクセス:環境のバケットへのアクセスは、オブジェクトごとの ACL ではなく、IAM 権限のみを使用して均一に管理されます。
- プライベート IP 環境:Airflow のコンポーネント(ウェブサーバー、スケジューラ、ワーカー)にはパブリック IP アドレスが割り当てられず、Google の内部ネットワーク経由でのみ通信します。これにより、外部からの不正なアクセスリスクを低減します。
- Shielded VM の使用:環境の GKE クラスタノードで Shielded VM が使用され、改ざんや不正な起動から保護されます。
高度なセキュリティ機能
より厳格なセキュリティ要件に対応するため、以下の機能を構成できます。
- 顧客管理暗号鍵 (CMEK):デフォルトの Google 管理の暗号鍵の代わりに、Cloud Key Management Service で管理する独自の暗号鍵を使用して、環境のデータを暗号化できます。
- VPC Service Controls (VPC SC):サービス境界を設定し、プロジェクト内外からのデータ漏洩を防ぎます。Cloud Composer 環境をサービス境界で保護することで、承認されていないネットワークからのアクセスをブロックできます。
- ウェブサーバーのアクセス制御:Airflow UI にアクセスできる IPv4 または IPv6 の範囲を構成し、アクセス元を制限できます。
- Secret Manager との連携:パスワードや証明書などの機密データを Secret Manager に保存し、Airflow の接続情報などから安全に参照できます。
セキュリティのベストプラクティス
Cloud Composer 環境を安全に運用するためには、以下のベストプラクティスを遵守することが推奨されます。
構成と DAG の管理
- コードによるインフラ管理:Terraform を使用して環境構成をコードとしてリポジトリで管理し、変更履歴の追跡とレビューを徹底します。
- CI/CD パイプラインの導入:DAG のデプロイは CI/CD パイプライン経由で行い、コードレビューと承認プロセスを経てからマージされるようにします。これにより、ユーザーによる環境への直接アクセスを無効化します。
ネットワークセキュリティ
- プライベート IP 環境の利用:前述の通り、パブリック IP アドレスを無効化し、セキュリティを強化します。
- 厳格なファイアウォールルールの適用:環境のクラスタと外部との通信を必要最小限に制御します。
- 限定公開の Google アクセス:
private.googleapis.com
ドメインを利用して、Google API やサービスへのアクセスを内部ネットワーク経由で行います。
Identity and Access Management (IAM)
- 最小権限の原則:ユーザーやサービスアカウントには、業務に必要な最小限の IAM ロールのみを付与します。
- 権限の分離:環境ごとに専用のサービスアカウントを作成し、幅広い権限を持つデフォルトのサービスアカウントへの依存を避けます。
機密データの取り扱い
- Secret Manager の活用:Airflow の接続情報、API キー、パスワードなどの機密データは、直接コードに記述せず、Secret Manager を使用して安全に管理します。
- 環境バケットへのアクセス制限:環境のバケットへのアクセス権限は、信頼できるユーザーにのみ付与します。
Airflow UI のアクセス制御 (RBAC)
Cloud Composer では、IAM と Airflow のロールベースアクセス制御(RBAC)の 2 段階で Airflow UI へのアクセスを制御します。
- IAM:まず、IAM によってユーザーが Airflow UI にアクセスできるかどうかが決まります。適切な IAM ロールを持たないユーザーは、UI にアクセスできません。
- Airflow RBAC:IAM でアクセスが許可された後、Airflow 内部のロールに基づいて UI のどの部分を閲覧・操作できるかが決まります。
Admin
、User
、Op
、Viewer
、Public
といったデフォルトのロールがあり、管理者はユーザーごとに適切なロールを割り当てることができます。
Airflow 2 では RBAC が常に有効です。管理者は初めて Airflow UI にアクセスした後、他のユーザーを事前登録し、適切なロールを割り当てることが重要です。また、「フォルダ単位のロール登録」機能を使えば、DAGs フォルダ内のサブフォルダに基づいてカスタムロールを自動生成し、特定の DAG へのアクセス権をチームごとに効率的に管理することも可能です。
コンプライアンス
Cloud Composer は、以下の主要な業界標準に準拠しています。
- HIPAA (医療保険の相互運用性と説明責任に関する法律)
- PCI DSS (ペイメントカード業界データセキュリティ基準)
- ISO/IEC 27001, 27017, 27018
- SOC 1, 2, 3
- NIST 800-53
これらのコンプライアンスにより、規制の厳しい業界でも安心して Cloud Composer を利用できます。
Cloud Composer のセキュリティのまとめ
この記事では、Cloud Composer におけるセキュリティ機能やベストプラクティス、Airflow UI のアクセス制御について詳しく解説しました。保存時の暗号化やプライベート IP 環境などの基本機能に加え、CMEK や VPC SC など高度な対策も可能です。IAM や Airflow のRBACを活用することで、アクセス権限を細かく制御できます。コンプライアンスにも対応しており、安全性の高いワークフロー運用が実現できます。
まとめ
今回は、下記3点について説明しました。
- Cloud Composer
- Cloud ComposerでDAGを作成・実行する基本ガイド
- Cloud Composer のセキュリティ
今回は、Cloud Composerの基本からDAGの作成・実行方法、セキュリティ対策までを網羅的に解説しました。Airflowベースの柔軟なワークフロー構築に加え、Google Cloudならではのセキュリティ機能や運用ベストプラクティスにより、安全かつ効率的なデータパイプラインの実現が可能です。Cloud Composerを活用することで、信頼性の高いワークフロー自動化をシンプルに実現できます。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!