Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
機密データを保護し、不正アクセスを防止するには、Cloud Composer 環境を保護することが不可欠です。このページでは、ネットワーク セキュリティ、Identity and Access Management、暗号化、環境構成管理に関する推奨事項など、重要なベスト プラクティスについて説明します。
Cloud Composer で利用可能なセキュリティ機能の詳細については、セキュリティの概要をご覧ください。
バージョン管理を使用して環境構成と DAG を管理する
Terraform を使用して環境を作成します。 これにより、環境の構成をコードとしてリポジトリに保存できます。これにより、環境構成の変更を適用する前に確認できます。また、権限の少ないロールを割り当てることで、構成を変更する権限を持つユーザーの数を減らすことができます。
CI / CD パイプラインを使用して DAG を環境にデプロイし、DAG コードがリポジトリから取得されるようにします。このようにして、変更がバージョン管理システムにマージされる前に DAG が審査され、承認されます。レビュー プロセス中に、承認者は DAG がチーム内で確立されたセキュリティ基準を満たしていることを確認します。確認のステップは、環境のバケットの内容を変更する DAG のデプロイを防ぐために重要です。
Identity and Access Management で、Identity and Access Management セクションで説明されているように、DAG への直接アクセスと、通常のユーザーによる環境の構成を無効にします。
ネットワーク セキュリティ
プライベート IP 環境を使用すると、環境のクラスタを実行する Airflow コンポーネントにパブリック IP アドレスが割り当てられず、Google の内部ネットワーク経由でのみ通信できます。
厳格なファイアウォール ルールを実装して、環境のクラスタとの間のトラフィックを制御します。
private.googleapis.com
ドメインを介して Google API とサービスへの接続を構成して、環境が Google Cloud 内からのみ転送可能な IP アドレスを使用して Google API とサービスにアクセスできるようにします。プロジェクトと、環境が配置されている VPC ネットワークの一般的なファイアウォール ルールを確認します。構成方法によっては、DAG を実行する Airflow ワーカーなど、環境の Airflow コンポーネントがインターネットにアクセスする場合があります。
Identity and Access Management
権限を分離します。環境のサービス アカウントを作成し、環境ごとに異なるサービス アカウントを使用します。これらのサービス アカウントには、これらの環境の運用と、実行する Airflow DAG で定義されたオペレーションの実行に厳密に必要な権限のみを割り当てます。
権限が広範なサービス アカウントの使用は避けてください。編集者の基本ロールによって付与される権限など、幅広い権限を持つアカウントを使用する環境を作成することは可能ですが、DAG が意図したよりも広範な権限を使用するリスクが生じます。
Cloud Composer で使用される Google サービスのデフォルトのサービス アカウントに依存しないでください。多くの場合、プロジェクト内の他の Google サービスに影響を与えることなく、これらのサービス アカウントで使用できる権限を減らすことは不可能です。
環境のサービス アカウントのセキュリティに関する考慮事項を理解し、このアカウントがプロジェクト内の個々のユーザーに付与する権限とロールとどのように連携するかを理解してください。
最小権限の原則を遵守します。ユーザーには必要最小限の権限のみを付与します。たとえば、IAM のロールを割り当てます。管理者のみが環境のバケットと環境のクラスタにアクセスし、通常のユーザーに対して直接アクセスができないようにします。たとえば、Composer ユーザーのロールは DAG UI と Airflow UI へのアクセスのみを有効にします。
Airflow UI のアクセス制御を適用します。これにより、ユーザーの Airflow ロールに基づいて Airflow UI と DAG UI の可視性を低減できます。また、個々の DAG に DAG レベルの権限を割り当てることもできます。
定期的に確認します。IAM の権限とロールを定期的に監査して、過剰な権限や未使用の権限を特定して削除します。
機密データの受け渡しと保存には注意してください。
個人情報やパスワードなどの機密データを渡す場合は、慎重に行ってください。必要に応じて、Secret Manager を使用して、Airflow 接続と Airflow シークレット、API キー、パスワード、証明書を安全に保存します。この情報は DAG または環境変数に保存しないでください。
環境のバケットに対する IAM 権限は、信頼できるユーザーにのみ付与します。可能であれば、オブジェクトごとの権限を使用します。環境のサービス アカウントのセキュリティに関する考慮事項では、環境のバケットにアクセスできるユーザーが環境のサービス アカウントに代わってアクションを実行できる方法をいくつか示します。
スナップショットに保存されるデータをよく理解し、環境スナップショットを作成して保存先のバケットにアクセスする権限を、信頼できるユーザーにのみ付与してください。
Cloud Composer のすべての外部インターフェースは、デフォルトで暗号化を使用します。外部プロダクトやサービスに接続する場合は、暗号化された通信(SSL/TLS)を使用していることを確認してください。