このドキュメントでは、 Google Cloud の AlloyDB for PostgreSQL のセキュリティをサポートするさまざまなコントロールの概要について説明します。また、コントロールの構成方法に関する詳細情報のリンク先も示します。ネットワーク セキュリティ オプション、ポリシー、アクセス制御などによるセキュリティ管理は、ビジネスリスクに対処し、ビジネスに適用されるプライバシーなどの規制要件を満たすうえでも役立ちます。
AlloyDB for PostgreSQL のセキュリティ、プライバシー、リスク、コンプライアンスには、責任共有モデルが使用されています。Google は AlloyDB for PostgreSQL などの Google Cloud サービスが実行されるインフラストラクチャを保護し、サービスとリソースへのアクセスを管理するための機能を提供します。Google によるインフラストラクチャの保護の詳細については、Google インフラストラクチャのセキュリティ設計の概要をご覧ください。
AlloyDB アーキテクチャ
次の図は、AlloyDB アーキテクチャのコンポーネントを示しています。
コンポーネントは次のとおりです。
- AlloyDB インスタンス。複数のゾーンにデプロイされ、高可用性と復元力を実現します。
- Google Cloud または AlloyDB のプライマリ インスタンスに接続する別の環境内のアプリケーション。この図は、AlloyDB と同じ Google Cloud プロジェクトで実行されているアプリケーションを示しています。ただし、Google Cloud 組織内の別のプロジェクトでアプリケーションを実行することもできます。
- ハイブリッド環境では、Cloud VPN または Cloud Interconnect を介して、企業ネットワーク上のリソースにアクセスできます。
- VPC Service Controls を使用して作成されたサービス境界。VPC Service Controls を使用すると、Google サービスまたはリソース間でのデータの移動を制御し、コンテキスト ベースの境界セキュリティを設定できます。
AlloyDB エンドポイントの詳細については、AlloyDB API をご覧ください。デフォルトでは、このエンドポイントはパブリックにルーティング可能なエンドポイントではなく、パブリック ネットワークからのインバウンド トラフィックは受信できません。AlloyDB インスタンスがパブリック ネットワーク経由でインバウンド トラフィックを受信できるようにするには、パブリック IP を使用して接続するをご覧ください。
AlloyDB コネクタの詳細については、アプリケーション接続をご覧ください。
プロビジョニングされたサービス
AlloyDB の使用を始めるときに、次の API を有効にします。
alloydb.googleapis.com
compute.googleapis.com
cloudresourcemanager.googleapis.com
servicenetworking.googleapis.com
詳細については、クイックスタート: データベースを作成して接続するをご覧ください。
Google Cloud に対する認証の管理
AlloyDB インスタンスを作成して管理する管理者とデベロッパーは、自身の ID とアクセス権限を検証するため、 Google Cloud に対して認証を行う必要があります。各ユーザーに、Cloud Identity、Google Workspace、または Cloud Identity、Google Workspace と連携させた ID プロバイダによって管理されるユーザー アカウントを設定する必要があります。詳細については、Identity and Access Management の概要をご覧ください。
ユーザー アカウントを作成したら、シングル サインオンや 2 段階認証プロセスなどのセキュリティに関するベスト プラクティスを実装します。認証のベスト プラクティスについては、ID とアクセスを管理するをご覧ください。
Identity and Access Management
管理者とデベロッパーの Identity and Access Management(IAM)ロールを大規模に管理するには、さまざまなデータベース ユーザーロールとアプリケーションに個別の機能グループを作成することを検討してください。AlloyDB の管理に必要な IAM ロールまたは権限をグループに付与します。グループにロールを割り当てるときは、最小権限の原則やその他の IAM セキュリティのベスト プラクティスに従ってください。詳細については、Google グループの使用に関するベスト プラクティスをご覧ください。
IAM の設定の詳細については、IAM の概要をご覧ください。
クライアントが IAM データベース認証を使用して AlloyDB にアクセスする場合は、IAM を使用して AlloyDB へのアクセスを制御することもできます。AlloyDB に必要な IAM ロールの詳細については、AlloyDB の IAM ロールと権限をご覧ください。
Auth Proxy または言語コネクタを使用している場合(アプリケーション接続を参照)、IAM を使用して、AlloyDB に接続するアプリケーションのワークロードを制御できます。Auth Proxy で IAM を使用する方法については、IAM プリンシパルを選択して認可の準備を行うをご覧ください。AlloyDB 言語コネクタで IAM の自動認証を使用するには、IAM 認証を管理するをご覧ください。
デフォルトのサービス アカウントとサービス エージェント
サービス アカウントは、インタラクティブでない特別なタイプの Google アカウントで、Google API のデータにアクセスして認証を受ける必要がある人間以外のユーザーを表します。AlloyDB はフルマネージド サービスであるため、Google が AlloyDB サービス アカウントを管理します。AlloyDB を有効にすると、プロジェクトに AlloyDB サービス アカウント(service-PROJECT_NUMBER-gcp-sa-alloydb-iam.gserviceaccount.com
)が作成されます。このサービス アカウントは、PostgreSQL サーバーなどの AlloyDB リソースの実行時に使用されます。
サービス エージェントは、一部の Google Cloudサービスがリソースにアクセスしてユーザーに代わって操作できるようにするための IAM ロールと権限です。マネージド AlloyDB サービス アカウントは、AlloyDB サービス エージェントの IAM 権限を使用します。
AlloyDB のポリシー
AlloyDB に適用される事前定義の組織のポリシーでは、AlloyDB が顧客管理の暗号鍵(CMEK)を使用してデータを暗号化できるかどうかを定義します。規制により、AlloyDB の保存データの暗号化に使用する鍵をきめ細かく制御することが義務付けられている場合は、CMEK を使用するように AlloyDB を構成します。ポリシーでは次のことを制御できます。
- CMEK を使用せずにリソースを作成できるサービスの制限(
constraints/gcp.restrictNonCmekServices
) - CMEK 用の Cloud KMS CryptoKey を提供できるプロジェクトの制限(
constraints/gcp.restrictCmekCryptoKeyProjects
)
詳細については、事前定義の組織のポリシーを使用するをご覧ください。
カスタムの組織のポリシーを使用して、プロジェクト、フォルダ、組織レベルで AlloyDB の制限を構成できます。パブリック IP アドレスを有効にする場合は、パブリック IP アドレスを使用できるユーザーを適用するように、カスタム ポリシー制約を構成することをおすすめします。ポリシーを絞り込むには、ポリシーに AlloyDB インスタンスのフィールド(パブリック IP アドレスの有効化、アウトバウンド パブリック IP アドレスの有効化など)を追加します。詳細については、カスタムの組織のポリシーを使用するをご覧ください。
ネットワーク セキュリティ
デフォルトでは、 Google Cloudで実行されている AlloyDB インスタンスを含むすべてのGoogle Cloud サービスで、転送中のデータにデフォルトの保護が適用されます。デフォルトのネットワーク保護の詳細については、転送データの暗号化をご覧ください。
AlloyDB は、データベース インスタンスとクライアント間の通信に TLS 1.3 暗号化をサポートしています。AlloyDB は、この接続のサーバー証明書を自動的に生成します。相互認証にクライアント証明書を使用するには、AlloyDB Language Connector(mTLS 認証を使用)または AlloyDB Auth Proxy を構成する必要があります。
組織で必要に応じて、追加のセキュリティ管理を構成し、 Google Cloud ネットワーク上のトラフィックと、 Google Cloud ネットワークと企業ネットワーク間のトラフィックをさらに保護できます。次の点を考慮してください。
AlloyDB は VPC Service Controls をサポートしています。VPC Service Controls を使用すると、Google サービス内のデータの移動を制御し、コンテキスト ベースの境界セキュリティを設定できます。VPC Service Controls の設定の詳細については、VPC Service Controls を構成するをご覧ください。
- パブリック IP アドレスを有効にする場合は、AlloyDB Language コネクタとカスタムの組織のポリシーを使用して、AlloyDB インスタンスにアクセスできるユーザーを制御します。
Google Cloudでは、ネットワーク トポロジとして共有 VPC を検討してください。共有 VPC により、環境の分離を維持しながら、ネットワーク構成管理を一元化できます。
Cloud VPN または Cloud Interconnect を使用して、企業ネットワークとGoogle Cloudの間の接続のセキュリティと信頼性を最大化します。詳細については、Network Connectivity プロダクトの選択をご覧ください。
ネットワーク セキュリティのベスト プラクティスの詳細については、ゼロトラストを実装すると Google Cloud ランディング ゾーンのネットワーク設計を決定するをご覧ください。
アプリケーションの接続
アプリケーションと AlloyDB 間の接続を保護するには、次の方法を使用します。
- AlloyDB Auth Proxy または AlloyDB Language Connector。AlloyDB インスタンスへの安全な TCP トンネルを構成します。
- データベース認証。
- サーバーレス VPC アクセス。AlloyDB を Cloud Run に直接接続します。
- Private Service Connect またはプライベート サービス アクセスにより、AlloyDB のプライベート IP アドレスを使用して、 Google Cloud の別の VPC 内のアプリケーションに接続します。この方法は、トラフィックを Google Cloud内に保持する場合に使用します。Private Service Connect を使用する場合は、AlloyDB データベース クラスタの作成時に Private Service Connect を構成する必要があります。
次の図に、接続オプションを示します。
外部 IP アドレスのないサービスへの接続を設定するオプションの詳細については、サービスのプライベート アクセスのオプションをご覧ください。
データベース認証
AlloyDB では、データベース クライアント用に次の認証方法を用意しています。
- ユーザー名とパスワードを使用した組み込みデータベース認証。認可は、
GRANT
またはREVOKE
ステートメントを使用して決定されます。詳細については、AlloyDB ユーザーロールを管理するをご覧ください。 - ユーザーやサービス アカウントなどの IAM プリンシパルを使用した IAM 認証。AlloyDB Language Connector を使用すると、IAM 認証のプロセスを自動化できます。詳細については、AlloyDB Language Connector の概要をご覧ください。IAM 認証には次の利点があります。
- 統合されたアクセス制御: IAM は、データベースを含むすべての Google Cloud リソースでアクセス制御を一元化します。統合されたアクセス制御により、一貫したポリシーが適用され、ユーザーとロールの管理が容易になります。
- 認証情報の管理作業の軽減: 個別のデータベース パスワードは必要ありません。IAM 認証では、既存の Google アカウント認証情報が使用されます。
- 有効期間の短いトークン: IAM 認証では有効期間の短いアクセス トークンを使用するため、パスワードの漏洩や認証情報の不正使用のリスクを軽減できます。
コネクタ
AlloyDB Auth Proxy または AlloyDB Language Connector を使用して、データベース クライアントに対する暗号化された接続を構成できます。AlloyDB Auth Proxy は、TLS 以外の接続を TLS 1.3 接続に透過的にアップグレードするクライアントサイド プロキシです。Language Connector は、AlloyDB クラスタのプロキシ サーバーに接続するクライアント ライブラリです。どちらのコネクタも IAM を使用して接続を認証し、mTLS を使用して接続を保護します。また、IAM 認証の代わりにパスワードレス認証を構成できます。
Auth Proxy を使用している場合は、AlloyDB Auth Proxy の使用に関するベスト プラクティスをご覧ください。
データ保護とプライバシー
このセクションでは、AlloyDB がデータとそのプライバシーの保護方法について説明します。
AlloyDB は、クラスタに保存されているデータ(インスタンス名、インスタンス構成、テーブルの内容、行名、カスタム関数など)をデフォルトの暗号化を使用して暗号化します。このデータにアクセスできるのは AlloyDB インスタンスのみです。
顧客管理の暗号鍵(CMEK)を有効にして、保存中のクラスタデータを暗号化できます。CMEK では、鍵はソフトウェアで保護された鍵またはハードウェアで保護された鍵(Cloud HSM を使用)として Cloud KMS に保存されますが、管理はユーザーが行います。暗号鍵を自動的にプロビジョニングするには、Cloud KMS Autokey を有効にします。Autokey を有効にすると、デベロッパーは Cloud KMS から鍵をリクエストできます。サービス エージェントは、デベロッパーの意図に一致する鍵をプロビジョニングします。Cloud KMS Autokey を使用すると、鍵はオンデマンドで使用でき、一貫性があり、業界標準のプラクティスに準拠しています。
さらに、AlloyDB は Cloud External Key Manager(Cloud EKM)をサポートしているため、 Google Cloudの外部にある外部鍵マネージャーに鍵を保存できます。Cloud EKM を使用している場合、Key Access Justifications は、Cloud EKM リクエストにフィールドを追加し、各リクエストの理由を確認できるようにします。一部の外部鍵管理パートナーでは、この理由に基づいて、これらのリクエストを自動的に承認または拒否できます。
データ処理の場所
AlloyDB は、クラスタに保存されているデータのデータ所在地をサポートしています。データ所在地では、リソース ロケーション制限ポリシーの制約を使用して、データを保存するリージョンを選択できます。Cloud Asset Inventory を使用して、AlloyDB リソースのロケーションを確認できます。
使用中のデータにデータ所在地が必要な場合は、Assured Workloads を構成できます。詳細については、Assured Workloads とデータ所在地をご覧ください。
データのプライバシー
データのプライバシーを保護するため、AlloyDB は共通のプライバシー原則に準拠しています。
AlloyDB は、顧客データのデータ処理者として機能します。Google は、請求、アカウント管理、不正行為の検出などの情報に対するデータ管理者としても機能します。詳しくは、Google Cloud のプライバシーに関するお知らせをご覧ください。
監査ロギング
AlloyDB は、次の種類の監査ログを書き込みます。
- 管理アクティビティ監査ログ: メタデータまたは構成情報を書き込む
ADMIN WRITE
オペレーションが記録されます。 - データアクセス監査ログ: メタデータまたは構成情報を読み取る
ADMIN READ
オペレーションが記録されます。ユーザー提供のデータの読み取りまたは書き込みを行うDATA READ
オペレーションとDATA WRITE
オペレーションが記録されます。 - システム イベント監査ログ: リソースの構成を変更する Google Cloud 自動化アクションを特定します。
詳細については、AlloyDB 監査ロギングをご覧ください。
また、規制要件を満たすために、pgAudit 拡張機能を使用してデータベース コマンドの監査証跡を有効にできます。pgAudit 拡張機能のログには、実行されたコマンド、実行されたコマンドの日時、実行したユーザーに関する詳細情報が記録されます。
アクセスの透明性
アクセス承認とアクセスの透明性を使用すると、サービスをサポートする Google 社員による AlloyDB インスタンスへのアクセスを制御できます。アクセス承認では、Google 社員からのアクセス リクエストを確認した後、必要に応じてリクエストを承認または拒否できます。アクセスの透明性ログは、Google Cloud 管理者がリソースにアクセスした際の分析情報をほぼリアルタイムで提供します。
モニタリングとインシデント対応
AlloyDB のパフォーマンスとセキュリティをモニタリングするために、さまざまなツールを使用できます。次の点を考慮してください。
- ログ エクスプローラを使用して、イベントログを表示して分析し、カスタム指標とアラートを作成します。
- AlloyDB システム分析情報ダッシュボードまたは Cloud Monitoring ダッシュボードを使用して、AlloyDB インスタンスのパフォーマンスをモニタリングします。詳細については、インスタンスをモニタリングするをご覧ください。
- pgAudit 拡張機能を有効にして、AlloyDB オペレーション(AlloyDB インスタンスで実行されるコマンドやクエリなど)を監査します。これらのログには、PostgreSQL データベース ログとデータプレーン エージェントのコンテナログが含まれます。
- AlloyDB に対する SQL の脆弱性と脅威(権限昇格など)を検出するように Security Command Center を構成します。セキュリティ オペレーション センター(SOC)アナリストが検出結果に対応できるように、アラートとハンドブックを設定できます。
認証とコンプライアンス
規制要件への対応は、お客様と Google の共有責任です。
AlloyDB は、次のような多くの認定を受けています。
- 国際標準化機構(ISO)27001、ISO 27017、ISO 27018、ISO 27701
- Service and Organization Controls(SOC)1、SOC 2、SOC 3
- Payment Card Industry データ セキュリティ基準(PCI DSS)
- 医療保険の相互運用性と説明責任に関する法律(HIPAA)
Google Cloud が準拠しているさまざまな規制の枠組みと認証について詳しくは、コンプライアンス リソース センターをご覧ください。
AlloyDB は Assured Workloads もサポートしています。これにより、規制、地域、主権の要件をサポートする Google 組織内の特定のフォルダにコントロールを適用できます。詳細については、コントロール パッケージ別のサポート対象プロダクトをご覧ください。
次のステップ
- クラスタを使用して復元力を構成する。
- バックアップを有効にする。
- Terraform を使用して AlloyDB をデプロイする。
- Google Threat Intelligence を使用して、ビジネスに対する外部脅威を追跡する。