サーバーレス アーキテクチャでは、サーバーのプロビジョニングやメンテナンスを行うことなく、ソフトウェアやサービスを開発できます。サーバーレス アーキテクチャを使用して、幅広いサービスのアプリケーションを構築できます。
このドキュメントでは、DevOps エンジニア、セキュリティ アーキテクトを対象として、Cloud Functions(第 2 世代)を使用するサーバーレス アプリケーションを保護する方法に関する独自のガイダンスを提供します。このドキュメントは、以下で構成されるセキュリティ ブループリントの一部です。
- 一連の Terraform の構成とスクリプトを含む GitHub リポジトリ。
- ブループリント(このドキュメント)で実施するアーキテクチャ、設計、セキュリティ管理のガイド。
このブループリントは、最初に Google Cloud エンタープライズ基盤ブループリントをデプロイせずにデプロイできますが、このドキュメントでは、Google Cloud エンタープライズ基盤ブループリントで説明する基本的なセキュリティ管理の構成が完了していることを前提としています。このドキュメントで説明するアーキテクチャを使用すると、基盤に制御を追加して、サーバーレス アプリケーションを保護できます。
サーバーレス アプリケーションに関連する重要なセキュリティ管理の定義を支援するため、Cloud Security Alliance(CSA)はサーバーレス アプリケーションの 12 の重大リスクを公開しました。このブループリントで使用されるセキュリティ管理は、このドキュメントで説明するさまざまなユースケースに関連するリスクに対処するように設計されています。
サーバーレス ユースケース
このブループリントは、次のユースケースをサポートしています。
- Cloud Functions を使用したサーバーレス アーキテクチャのデプロイ(このドキュメント)
- Cloud Run を使用したサーバーレス アーキテクチャのデプロイ
Cloud Functions と Cloud Run の違いには、以下のような内容が含まれます。
- Cloud Functions は、データベース内のデータの変更や、Pub/Sub などのメッセージング システムからのメッセージの受信などのイベントによってトリガーされます。Cloud Run は、HTTP リクエストなどのリクエストによってトリガーされます。
- Cloud Functions は、サポート対象のランタイムに制限されています。Cloud Run は任意のプログラミング言語で使用できます。
- Cloud Functions はウェブサーバーや言語のランタイムを制御するコンテナやインフラストラクチャを管理するため、ユーザーはコードに集中できます。Cloud Run では、これらのサービスをユーザー自身で柔軟に実行できるので、コンテナ構成を制御できます。
Cloud Run と Cloud Functions の違いの詳細については、Google Cloud コンピューティング オプションの選択をご覧ください。
アーキテクチャ
このブループリントは、共有 VPC アーキテクチャを使用します。このアーキテクチャでは、Cloud Functions がサービス プロジェクトにデプロイされ、他の VPC ネットワークにあるリソースにアクセスできます。
次の図は、アーキテクチャの概要を示しています。詳細については、その後のアーキテクチャ例で説明します。
前の図のアーキテクチャでは、次の Google Cloud サービスと機能を組み合わせて使用しています。
- Cloud Functions を使用すると、関数をサービスとして実行し、ユーザーの代わりにインフラストラクチャを管理できます。デフォルトでは、このアーキテクチャは、公共のインターネットにアクセスせず、内部 IP アドレスのみを使用して Cloud Functions をデプロイします。
- トリガー イベントは、Cloud Functions をトリガーするイベントです。アーキテクチャ例で説明したように、これは Cloud Storage イベント、スケジュールされた間隔、BigQuery での変更のいずれかです。
- Artifact Registry は、Cloud Functions アプリケーション用のソースコンテナを格納します。
- 共有 VPC を使用すると、サービス プロジェクトのサーバーレス VPC アクセス コネクタをホスト プロジェクトに接続できます。環境(本番環境、非本番環境、開発環境)ごとに個別の共有 VPC ネットワークをデプロイします。このネットワーク設計では、異なる環境間でネットワークを分離できます。共有 VPC ネットワークを使用すると、ネットワーク リソースを共通のネットワークで一元管理しながら、サービス プロジェクトに対する管理責任を委任できます。
サーバーレス VPC アクセス コネクタは、サーバーレス VPC アクセスを使用して、サーバーレス アプリケーションを VPC ネットワークに接続します。サーバーレス VPC アクセスは、サーバーレス アプリケーションから VPC ネットワークへのリクエストがインターネットに公開されないようにするのに役立ちます。サーバーレス VPC アクセスを使用すると、Cloud Functions は VPC Service Controls をサポートする他のサービス、ストレージ システム、リソースと通信できます。
共有 VPC ホスト プロジェクトまたはサービス プロジェクトでサーバーレス VPC アクセスを構成できます。デフォルトでは、このブループリントは、共有 VPC ホスト プロジェクトにサーバーレス VPC アクセスをデプロイして、ネットワーク構成リソースを一元化する共有 VPC モデルに合わせます。詳細については、構成方法の比較をご覧ください。
VPC Service Controls は、承認、アクセス制御、安全なデータ交換を設定して、Cloud Functions のサービスとリソースを分離するセキュリティ境界を作成します。この境界は、追加のアクセス制御とモニタリングを設定してアプリケーションとマネージド サービスを分離し、Google Cloud のガバナンスをアプリケーションから分離するように設計されています。ガバナンスには鍵管理とロギングが含まれます。
コンシューマ サービスは、Cloud Functions で動作するアプリケーションです。コンシューマ サービスは、内部サーバーまたは Cloud SQL などの別の Google Cloud サービスになります。ユースケースによっては、このサービスが別のサブネット内、Cloud Functions と同じサービス プロジェクト内、または別のサービス プロジェクト内で Cloud Next Generation Firewall の背後にある可能性があります。
Secure Web Proxy は、必要に応じて下り(外向き)ウェブ トラフィックを保護するように設計されています。これにより、クラウド ID とウェブ アプリケーションに基づいた、柔軟できめ細かいポリシーを実現できます。このブループリントは、Secure Web Proxy を使用して、Cloud Functions のビルドフェーズでウェブ トラフィックを送信する詳細なアクセス ポリシーを作成します。このブループリントにより、URL の許可リストがゲートウェイのセキュリティ ポリシールールに追加されます。
Cloud NAT は、必要に応じてインターネットへの送信接続を提供します。Cloud NAT は、パブリック IP アドレスを持たないコンピューティング リソースに対して送信元ネットワーク アドレス変換(SNAT)をサポートしています。受信レスポンス パケットは、宛先ネットワーク アドレス変換(DNAT)を使用します。Cloud Functions がインターネットにアクセスする必要がない場合は、Cloud NAT を無効にできます。Cloud NAT は、Secure Web Proxy に接続されている下り(外向き)ネットワーク ポリシーを実装します。
Cloud Key Management Service(Cloud KMS)には、サーバーレス アプリケーション、Artifact Registry、Cloud Functions など、このブループリントのサービスで使用される顧客管理の暗号鍵(CMEK)が保存されます。
Secret Manager は、Cloud Functions の Secret を保存します。このブループリントは、Secret をボリュームとしてマウントし、Secret を環境変数として渡すよりも高いレベルのセキュリティを提供します。
Identity and Access Management(IAM)と Resource Manager は、アクセスを制限してリソースを分離するのに役立ちます。アクセス制御とリソース階層は、最小権限の原則に従います。
Cloud Logging は、Google Cloud サービスからすべてのログを収集し、分析ツールと調査ツールによって保存と取得を行います。
Cloud Monitoring は、Google Cloud サービスのパフォーマンス情報と指標を収集して保存します。
Cloud Storage を使用したサーバーレス アプリケーションでのアーキテクチャの例
次の図は、Cloud Storage で特定のイベントが発生したときに内部サーバーにアクセスするサーバーレス アプリケーションを実行する方法を示しています。
アーキテクチャで説明したサービスに加えて、このサンプル アーキテクチャでは、次の Google Cloud サービスと機能を組み合わせて使用しています。
- Cloud Storage は、任意のクラウド リソース、アプリケーション、またはユーザーがバケットにウェブ オブジェクトを作成すると、イベントを発行します。
- Eventarc は、さまざまなリソースからイベントをルーティングします。Eventarc は、転送中と保存中のイベントを暗号化します。
- Pub/Sub は、Cloud Functions の入力またはトリガーとして使用されるイベントをキューに入れます。
- Virtual Private Cloud(VPC)ファイアウォール ルールは、内部サーバーなどのリソースをホストするサブネットへのデータフローを制御します。
- 内部サーバーは Compute Engine または Google Kubernetes Engine で実行され、内部アプリケーションをホストします。内部サーバーの例で安全な Cloud Functions をデプロイする場合は、Hello World の HTML ページを使用して Apache サーバーをデプロイします。この例では、VM またはコンテナを実行する内部アプリケーションへのアクセスをシミュレートします。
Cloud SQL でのアーキテクチャの例
次の図は、Cloud Scheduler で定義された定期的な間隔で Cloud SQL でホストされているサービスにアクセスするサーバーレス アプリケーションを実行する方法を示しています。このアーキテクチャは、ログの収集やデータの集約などが必要な場合に使用できます。
アーキテクチャで説明したサービスに加えて、このサンプル アーキテクチャでは、次の Google Cloud サービスと機能を組み合わせて使用しています。
- Cloud Scheduler は、定期的にイベントを発行します。
- Pub/Sub は、Cloud Functions の入力またはトリガーとして使用されるイベントをキューに入れます。
- Virtual Private Cloud(VPC)ファイアウォール ルールは、Cloud SQL に保存されている会社のデータなど、リソースをホストするサブネットへのデータフローを制御します。
- Cloud SQL Auth Proxy は Cloud SQL へのアクセスを制御します。
- Cloud SQL は、VPC ネットワークにピアリングされるサービスと、サーバーレス アプリケーションがアクセスできるサービスをホストします。Cloud SQL サンプルで安全な Cloud Functions をデプロイする場合は、サンプル データベースを使用して MySQL データベースをデプロイします。
BigQuery データ ウェアハウスでのアーキテクチャ例
次の図は、BigQuery でイベント(データの追加やテーブルの作成など)が発生したときにトリガーされるサーバーレス アプリケーションの実行方法を示しています。
アーキテクチャで説明したサービスに加えて、このサンプル アーキテクチャでは、次の Google Cloud サービスと機能を組み合わせて使用しています。
- BigQuery はデータ ウェアハウスをホストします。BigQuery の例によってトリガーされる安全な Cloud Functions をデプロイする場合は、サンプルの BigQuery データセットとテーブルをデプロイします。
- Eventarc は、BigQuery で特定のイベントが発生すると Cloud Functions をトリガーします。
組織構造
Resource Manager を使用すると、プロジェクト、フォルダ、組織ごとに論理的にリソースをグループ化できます。
次の図に、ブートストラップ、共通、本番、非本番(テスト)、開発などのさまざまな環境を表すフォルダを持つリソース階層を示します。このリソース階層は、エンタープライズ基盤ブループリントで説明されている階層に基づいています。ブループリントで指定されたプロジェクトを Common
、Production
、Non-production
、Dev
のフォルダにデプロイします。
以下のセクションでは、この図について詳しく説明します。
フォルダ
フォルダを使用して、本番環境とガバナンス サービスを非本番環境やテスト環境から分離します。次の表に、このブループリントで使用されるエンタープライズ基盤ブループリントのフォルダを示します。
フォルダ | 説明 |
---|---|
Bootstrap
|
エンタープライズ基盤ブループリントをデプロイするために必要なリソースが含まれています。 |
Common
|
セキュリティ プロジェクトなど、組織の一元化されたサービスが含まれています。 |
Production
|
テスト済みですぐに使用できるクラウド リソースがあるプロジェクトが含まれています。このブループリントでは、Production フォルダにサービス プロジェクトとホスト プロジェクトが含まれています。 |
Non-production
|
テストとリリースのステージングが現在行われているクラウド リソースがあるプロジェクトが含まれます。このブループリントでは、Non-production フォルダにサービス プロジェクトとホスト プロジェクトが含まれています。 |
Development
|
現在開発されているクラウド リソースがあるプロジェクトが含まれています。このブループリントでは、Development フォルダにサービス プロジェクトとホスト プロジェクトが含まれています。 |
これらのフォルダの名前は、組織のフォルダ構造に合わせて変更できますが、同様の構造を維持することをおすすめします。詳細については、組織構造をご覧ください。他のフォルダ構造については、Google Cloud ランディング ゾーンのリソース階層を決定するをご覧ください。
プロジェクト
プロジェクトを使用して環境内のリソースを分離します。次の表に、組織内で必要なプロジェクトを示します。これらのプロジェクトの名前は変更できますが、同様のプロジェクト構造を維持することをおすすめします。
プロジェクト | 説明 |
---|---|
共有 VPC ホスト プロジェクト | このプロジェクトには、ファイアウォールの上り(内向き)ルールと、内部 IP アドレスを持つリソースが含まれます(VPC ネットワークへの接続を参照)。共有 VPC を使用する場合、1 つのプロジェクトをホスト プロジェクトとして指定し、他のサービス プロジェクトをホスト プロジェクトに接続します。 Terraform コードを適用するときには、このプロジェクトの名前を指定すると、ブループリントによってサーバーレス VPC アクセス コネクタ、Cloud NAT、Cloud Secure Web Proxy をデプロイします。 |
共有 VPC サービス プロジェクト | このプロジェクトには、サーバーレス アプリケーション、Cloud Functions、サーバーレス VPC アクセス コネクタが含まれています。ホスト プロジェクトにサービス プロジェクトを接続して、サービス プロジェクトが共有 VPC ネットワークに参加できるようにします。 Terraform コードを適用するときに、このプロジェクトの名前を指定します。このブループリントは、Cloud SQL、Cloud Scheduler、Cloud Storage、BigQuery などのユースケースに必要な Cloud Functions とサービスをデプロイします。 Terraform コードを適用するときには、このプロジェクトの名前を指定すると、ブループリントによって Cloud KMS がデプロイされます。Cloud Functions のサーバーレス ブループリントで Secure Serverless Harness モジュールを使用すると、Artifact Registry もデプロイされます。 |
セキュリティ プロジェクト | このプロジェクトには、Cloud KMS や Secret Manager などのセキュリティ固有のサービスが含まれています。
セキュリティ プロジェクトのデフォルト名は エンタープライズ基盤ブループリントを使用せずに、このブループリントの複数のインスタンスをデプロイする場合、各インスタンスはそれぞれ独自のセキュリティ プロジェクトを持つことになります。 |
ロールとグループをプロジェクトにマッピング
組織内のさまざまなユーザー グループに、サーバーレス アーキテクチャを構成するプロジェクトへのアクセス権を付与する必要があります。次の表に、作成するプロジェクトのユーザー グループとロールの割り当てに関するブループリントの推奨事項を示します。組織の既存の構造に合わせてグループをカスタマイズできますが、同様の職掌分散とロール割り当てを維持することをおすすめします。
グループ | プロジェクト | ロール |
---|---|---|
サーバーレス管理者 grp-gcp-serverless-admin@example.com |
サービス プロジェクト | |
サーバーレス セキュリティ管理者 grp-gcp-serverless-security-admin@example.com |
セキュリティ プロジェクト |
|
Cloud Functions デベロッパー grp-gcp-secure-cloud-run-developer@example.com |
セキュリティ プロジェクト | |
Cloud Functions ユーザー grp-gcp-secure-cloud-run-user@example.com |
共有 VPC サービス プロジェクト |
セキュリティ管理
このセクションでは、サーバーレス アーキテクチャの保護に使用する Google Cloud のセキュリティ管理について説明します。考慮すべき主なセキュリティ原則は次のとおりです。
- 最小権限の原則に沿ってアクセスを保護し、エンティティに必要な権限のみをプリンシパルに付与する。
- 信頼境界設計(ネットワーク セグメンテーション、組織のポリシー、ファイアウォール ポリシーなど)によってネットワーク接続を保護する。
- 各サービスの構成を保護します。
- サーバーレス ワークロードをホストし、リスクレベルを割り当てるインフラストラクチャのコンプライアンス要件や規制要件を特定する。
- セキュリティ オペレーションとインシデント管理の監査証跡をサポートするのに十分なモニタリングとロギングを構成する。
ビルドシステム制御
サーバーレス アプリケーションをデプロイする場合は、Artifact Registry を使用して、コンテナ イメージとバイナリを保存します。Artifact Registry では CMEK をサポートしているため、独自の暗号鍵を使用してリポジトリを暗号化できます。
ネットワークとファイアウォールのルール
Virtual Private Cloud(VPC)ファイアウォール ルールによって、境界へのデータフローが制御されます。restricted.googleapis.com の特別なドメイン名からの特定の TCP ポート 443 接続を除き、すべての下り(外向き)を拒否するファイアウォール ルールを作成します。restricted.googleapis.com ドメインを使用するメリットとしては、次のようなものが挙げられます。
- ワークロードが Google API およびサービスと通信する際に限定公開の Google アクセスを使用することで、ネットワーク攻撃の可能性を低減できます。
- これにより、VPC Service Controls をサポートするサービスのみを使用できます。
さらに、*.googleapis.com を restricted.googleapis.com に解決するための DNS レコードを作成します。
詳細については、限定公開の Google アクセスの構成をご覧ください。
境界制御
アーキテクチャ セクションに示すように、サーバーレス アプリケーションのリソースを別の VPC Service Controls セキュリティ境界に配置します。この境界により、システムやサービスの不正使用による広範な影響が軽減されます。ただし、Cloud Build がコードをコンテナ イメージに自動的にビルドし、そのイメージを Artifact Registry に push する場合、Cloud Functions のビルドプロセスにはこのセキュリティ境界が適用されません。このシナリオでは、サービス境界で Cloud Build サービス アカウントの上り(内向き)ルールを作成します。
アクセス ポリシー
特定のプリンシパル(ユーザーまたはサービス)のみがリソースとデータにアクセスできるようにするには、IAM のグループとロールを有効にします。
特定のリソースのみがプロジェクトにアクセスできるように、Google 組織でアクセス ポリシーを有効にします。詳しくは、アクセスレベル属性をご覧ください。
サービス アカウントとアクセス制御
サービス アカウントは、個々のエンドユーザーではなく、アプリケーションやコンピューティング ワークロードのアカウントです。最小権限の原則と職掌分散を実装するには、きめ細かい権限とリソースへのアクセスが制限されたサービス アカウントを作成します。サービス アカウントは次のとおりです。
次のロールを持つ Cloud Functions サービス アカウント(
cloudfunction_sa
)。- Compute ネットワーク閲覧者(
roles/compute.networkViewer
) - Eventarc イベント受信者(
roles/eventarc.eventReceiver
) - Cloud Run 起動元(
roles/run.invoker
) - Secret Manager シークレット アクセサー(
roles/secretmanager.secretAccessor
)
詳細については、Cloud Functions にシークレットへのアクセスを許可するをご覧ください。
Cloud Functions は、このサービス アカウントを使用して、特定の Pub/Sub トピックにのみ権限を付与し、Cloud Storage を使用したサーバーレス アプリケーションでのアーキテクチャの例および BigQuery データ ウェアハウスでのアーキテクチャ例の Cloud Functions のコンピューティング リソースから Eventarc イベント システムを制限します。
- Compute ネットワーク閲覧者(
Compute ネットワーク ユーザー(
roles/compute.networkUser
)ロールを持つサーバーレス VPC アクセス コネクタ アカウント(gcp_sa_vpcaccess
)。Compute ネットワーク ユーザー(
roles/compute.networkUser
)のロールを持つ 2 番目のサーバーレス VPC アクセス コネクタ アカウント(cloud_services
)。サーバーレス VPC アクセス コネクタのこれらのサービス アカウントは、コネクタがホスト プロジェクトで上り(内向き)および下り(外向き)のファイアウォール ルールを作成できるようにするために必要です。詳細については、サービス プロジェクトのサービス アカウントに権限を付与するをご覧ください。
サーバーレス VPC アクセス ユーザー(
roles/vpcaccess.user)](/iam/docs/understanding-roles#vpcaccess.user)
)のロールとサービス アカウント ユーザー(roles/iam.serviceAccountUser
)のロールを持つ Cloud Functions を実行するサービス ID(cloudfunction_sa
)。ユーザーに代わって内部 Google プロセスを実行するための Compute ネットワーク ユーザー(
roles/compute.networkUser
)のロールを持つ Google API のサービス アカウント(cloud_services_sa
)。Artifact Registry 読み取り(
roles/artifactregistry.reader
)ロールを持つ Cloud Functions(cloud_serverless_sa
)のサービス ID。このサービス アカウントによって、Artifact Registry と CMEK へのアクセスが可能になります。Cloud KMS CryptoKey Decrypter(roles/cloudkms.cryptoKeyDecrypter)のロールと Cloud KMS CryptoKey Encrypter(
roles/cloudkms.cryptoKeyEncrypter
)のロールを持つ Eventarc のサービス ID(eventarc_sa
)。CryptoKey Decrypter(
roles/cloudkms.cryptoKeyDecrypter
)と Cloud KMS CryptoKey Encrypter(roles/cloudkms.cryptoKeyEncrypter
)のロールを持つ Artifact Registry のサービス ID(artifact_sa
)。
鍵管理
整合性を検証し、保存データを保護するには、Artifact Registry、Cloud Functions、Cloud Storage、Eventarc で CMEK を使用します。CMEK では、暗号鍵をより詳細に制御できます。次の CMEK が使用されます。
- サーバーレス アプリケーションのコードを証明するための Artifact Registry のソフトウェア キー。
- Cloud Functions によってデプロイされるコンテナ イメージを暗号化する暗号鍵。
- 保存時のメッセージング チャネルを暗号化する Eventarc イベントの暗号鍵。
- Cloud Storage のデータを保護するための暗号鍵。
Terraform 構成を適用するときに、鍵が保存されている地理的なロケーションを決定する CMEK ロケーションを指定します。CMEK がリソースと同じリージョンにあることを確認する必要があります。デフォルトでは、CMEK は 30 日ごとにローテーションされます。
シークレット管理
Cloud Functions は、サーバーレス アプリケーションに必要なシークレットを格納する Secret Manager をサポートしています。これらの Secret には、API キーとデータベースのユーザー名とパスワードを含めることができます。Secret をマウントされたボリュームとして公開するには、メイン モジュールの service_configs
オブジェクト変数を使用します。
エンタープライズ基盤ブループリントを使用してこのブループリントをデプロイする場合は、Terraform コードを適用する前に、シークレット プロジェクトに Secret を追加する必要があります。このブループリントは、Secret Manager のシークレット アクセサー(roles/secretmanager.secretAccessor
)ロールを Cloud Functions サービス アカウントに付与します。詳細については、Secret の使用をご覧ください。
組織のポリシー
このブループリントは、エンタープライズ基盤ブループリントで使用する組織のポリシーの制約に制約を追加します。エンタープライズ基盤ブループリントで使用する制約の詳細については、組織のポリシーの制約をご覧ください。
次の表は、このブループリントの Cloud Functions のセキュリティを保護するモジュールで定義されている追加の組織のポリシーの制約を示しています。
ポリシーの制約 | 説明 | 推奨値 |
---|---|---|
許可される上り(内向き)設定(Cloud Functions)
constraints/cloudfunctions.allowedIngressSettings |
内部サービスまたは外部 HTTP(S) ロードバランサからの上り(内向き)トラフィックのみを許可します。
デフォルトは |
ALLOW_INTERNAL_ONLY
|
VPC コネクタが必須(Cloud Functions)
constraints/cloudfunctions.requireVPCConnector |
関数のデプロイ時に、サーバーレス VPC アクセス コネクタを指定する必要があります。この制約が適用される場合、関数はサーバーレス VPC アクセス コネクタを指定する必要があります。
デフォルトは |
true
|
許可される VPC コネクタの下り(外向き)設定(Cloud Functions
)cloudfunctions.allowedVpcConnectorEgressSettings |
サーバーレス VPC アクセス コネクタを使用するには、Cloud Functions のすべての下り(外向き)トラフィックが必要です。 デフォルト値は |
ALL_TRAFFIC
|
運用管理機能
ロギングと、Security Command Center のプレミアム ティアの機能(Security Health Analytics、脅威の検出など)を有効にできます。こうした制御により、次のことを実現できます。
- データアクセスをモニタリングする。
- 適切な監査を確実に実施する。
- 組織のセキュリティ運用とインシデント管理機能をサポートする。
ロギング
監査要件を満たしてプロジェクトの分析情報を得るには、追跡するサービスのデータログを使用して、Google Cloud Observability を構成します。Terraform コードを適用する前にプロジェクトに Cloud Logging をデプロイして、ブループリントがファイアウォール、ロードバランサ、VPC ネットワークのロギングを構成できるようにします。
ブループリントをデプロイした後、以下を構成することをおすすめします。
- すべてのプロジェクトにまたがる集約ログシンクの作成を行う。
- CMEK をログシンクに追加する。
プロジェクト内のすべてのサービスに対して、データ書き込みと管理アクセスに関する情報がログに含まれていることを確認します。ロギングのベスト プラクティスの詳細については、検出制御をご覧ください。
モニタリングとアラート
ブループリントをデプロイした後、セキュリティ イベントが発生したことをセキュリティ オペレーション センター(SOC)に通知するアラートを設定できます。たとえば、アラートを使用して、IAM ロールの権限が変更されたことをセキュリティ アナリストに知らせることができます。Security Command Center のアラートの構成の詳細については、検出通知の設定をご覧ください。
Cloud Functions Monitoring ダッシュボードを使用すると、Cloud Functions のパフォーマンスと健全性をモニタリングできます。さまざまな指標とログが用意されており、問題の特定やトラブルシューティングに使用できます。ダッシュボードには、アラートや割り当ての設定など、ファンクションのパフォーマンスを向上させるためのさまざまな機能が含まれています。
詳細は、Cloud Functions のモニタリングをご覧ください。
アラートをエクスポートするには、次のドキュメントをご覧ください。
デバッグとトラブルシューティング
接続テストを実行すると、Cloud Functions とサブネット内のリソースの間のネットワーク構成の問題をデバッグできます。接続テストはパケットの想定パスをシミュレートし、リソース間の接続分析など、接続の詳細を提供します。
Terraform コードでは、接続テストが有効になっていません。別途設定する必要があります。詳細については、接続テストを作成して実行するをご覧ください。
Terraform デプロイモード
次の表に、このブループリントをデプロイする方法と、各デプロイモードに適用される Terraform モジュールを示します。
デプロイモード | Terraform モジュール |
---|---|
エンタープライズ基盤ブループリントをデプロイした後に、このブループリントをデプロイします(推奨)。 このオプションは、エンタープライズ基盤ブループリントで使用されているのと同じ VPC Service Controls の境界に、このブループリントのリソースをデプロイします。詳細については、Secure Cloud Functions のデプロイ用に Foundation v3.0.0 をカスタマイズする方法をご覧ください。 このオプションでは、エンタープライズ基盤ブループリントをデプロイしたときに作成したシークレット プロジェクトも使用されます。 |
次の Terraform モジュールを使用します。 |
セキュリティ基盤ブループリントをインストールせずに、このブループリントをインストールします。 このオプションを使用するには、VPC Service Controls の境界を作成する必要があります。 |
次の Terraform モジュールを使用します。
|
まとめ
このドキュメントで説明されたアーキテクチャを実装する方法は次のとおりです。
- ブループリントの README を確認し、すべての前提条件を満たしていることを確認します。
- テスト環境でブループリントの動作を確認するには、例のいずれかをデプロイします。これらの例は、アーキテクチャで説明されているアーキテクチャの例と一致しています。テストプロセスの一環として、次のことを検討します。
- Security Command Center を使用して、一般的なコンプライアンス要件を基にプロジェクトをスキャンします。
- サンプル アプリケーションを実際のアプリケーション(例 1)に置き換え、一般的なデプロイ シナリオを実行します。
- 企業のアプリケーション エンジニアリング チームや運用チームと協力してプロジェクトへのアクセスをテストし、ソリューションが想定どおりにやり取りできるかどうかを確認します。
- ブループリントを環境にデプロイします。
次のステップ
- ベースラインの安全な環境について、Google Cloud エンタープライズ基盤ブループリントで確認する。
- ブループリントの詳細について、Terraform 構成の README を読む。
- Cloud Run を使用してサーバーレス アプリケーションをデプロイするには、Cloud Run を使用して安全なサーバーレス アーキテクチャをデプロイするをご覧ください。