サービス接続の自動化について
サービス接続の自動化により、サービス ユーザーはマネージド サービスへの接続のデプロイを自動化できます。
データベース インスタンスをデプロイし、サービス コンシューマーが Private Service Connect エンドポイントを介してそのデータベースにアクセスできるようにしたいデータベース管理者について考えてみましょう。データベース管理者は、ネットワーキング リソースをデプロイするために必要な Identity and Access Management(IAM)の認証情報や専門知識を持っていない可能性があります。
マネージド サービスがサービス接続の自動化をサポートしている場合、サービス インスタンスの構成とネットワーキングの構成を適切な管理者に委任できます。
サービス インスタンス管理者は、サービスにアクセスできるネットワークを制御できます。
ネットワーク管理者は、接続を許可するサービスを制御できます。
これらの構成が一致すると、サービス接続の自動化によって適切なネットワークにエンドポイントが作成され、マネージド サービス インスタンスへの接続が許可されます。
サービス接続の自動化の概要
次のセクションでは、サービス接続の自動化を使用する単一の VPC ネットワークの基本構成について説明します。他の構成については、共有 VPC とカスタム サービス インスタンス スコープの Google サービスをご覧ください。
サービス接続の自動化をサポートするマネージド サービスのインスタンスをデプロイするには、次の操作を行います。
ネットワーク管理者が VPC ネットワークのサービス接続ポリシーを作成します。
サービス接続ポリシーは、サービスクラス(特定のプロデューサー サービスを識別するグローバルに一意のリソース)を参照します。1 つのサービス接続ポリシーは、1 つのサービスクラスと 1 つのコンシューマー VPC ネットワークをスコープとし、そのスコープ内で接続を構成する機能を委任します。
サービス インスタンス管理者は、サービスの管理 API または UI を使用してマネージド サービス インスタンスをデプロイします。サービス インスタンス構成では、サービス接続の自動化を介してサービスにアクセスできるネットワークを指定します。
サービス接続の自動化により、コンシューマー VPC ネットワークにエンドポイントが作成されます。このエンドポイントは、サービス インスタンスにリクエストを送信するために使用できます。
プロデューサーの構成
以降のセクションでは、サービス プロデューサーがサービス接続性の自動化を構成するために使用するリソースについて説明します。
サービスクラス
サービスクラスは、マネージド サービスタイプのグローバルに一意な表現です。各プロデューサーは、自身のサービスクラスを排他的に所有しています。コンシューマーは、サービス接続ポリシーでサービスクラスを参照し、デプロイを承認してプロデューサーへの接続性を委任します。
サービス接続ポリシーは、サービスクラスを持つサービスに対してのみ作成できます。
Google が公開するサービス用のサービスクラスがあります。サービスクラスは、サードパーティ サービスと自己ホスト型の内部マネージド サービス向けの制限付きプレビューでも使用できます。詳細については、サポートされているサービスをご覧ください。
サービス接続マップ
サービス接続マップはプロデューサーが管理するリソースで、ここには、コンシューマー VPC ネットワークとプロデューサー マネージド サービス インスタンス間の Private Service Connect 接続の承認と確立の詳細が保存されます。このマップは、プロデューサー サービス インスタンス(サービス アタッチメント)と、サービス インスタンスへの接続が承認されているコンシューマー プロジェクトと VPC ネットワーク間で許可される関係を定義します。
認可モデル
サービス接続ポリシーを使用すると、コンシューマーは接続性のデプロイをマネージド サービスに委任できます。サービス プロデューサーには、コンシューマー プロジェクトに対する直接アクセス権や IAM 権限がありません。代わりに、プロデューサーは自身のプロジェクトでサービス接続マップを構成します。
サービス接続マップが作成または更新されると(通常は、コンシューマー サービス管理者によるマネージド サービスの管理 API または UI へのリクエストに応じて)、サービス接続の自動化が一連の認可チェックを実行します。すべてのチェックに合格すると、リクエストで指定されたとおりに Private Service Connect エンドポイントが作成されます。
ネットワーク構成(サービス接続ポリシー):
- ネットワークの承認。コンシューマー VPC ネットワークには、リクエストで指定された VPC ネットワーク、リージョン、サービスクラスを認可する有効なサービス接続ポリシーが必要です。このチェックにより、VPC ネットワークに対する IAM 権限を持つコンシューマー ネットワーク管理者が、指定したサービスタイプの Private Service Connect エンドポイントを作成する権限を明示的に委任できます。
- サービス インスタンスのスコープ。マネージド サービス インスタンスが Google サービスであり、サービス接続ポリシーでカスタム サービス インスタンス スコープ(
custom-resource-hierarchy-levels
)が指定されている場合、サービス接続の自動化は、指定された Resource Manager ノードのリスト(--allowed-google-producers-resource-hierarchy-level
)をチェックします。サービス インスタンスのデプロイと管理のために、サービス インスタンス管理者がマネージド サービスの UI または API で指定したプロジェクトは、このリストで定義された許可スコープ内にある必要があります。スコープには、組織、フォルダ、プロジェクトを混在させることができます。 - エンドポイント プロジェクトの検証。接続ポリシーが作成されるプロジェクトは、エンドポイントが作成される VPC ネットワークに関連付けられている必要があります。プロジェクトには VPC ネットワークが含まれているか、共有 VPC ネットワークに接続されているサービス プロジェクトである必要があります。
サービス インスタンスの構成:
サービス管理者の IAM 認可。コンシューマー サービス管理者は、プロデューサー サービス インスタンスの作成または更新に必要な IAM 権限を持っている必要があります。これらの権限は、デプロイされるサービスによって異なります。
サービス インスタンス管理者の承認。サービスの管理 API で、サービス インスタンスを作成したサービス インスタンス管理者は、接続をリクエストする VPC ネットワークからの接続を許可するようにインスタンスを構成する必要があります。
プロデューサーの構成:
- プロデューサーの IAM 権限。サービス接続マップを作成または更新するプロデューサー サービス管理者には、関連するサービスクラスに対する IAM 権限があります。このチェックにより、公開サービスクラスの誤った記述を防ぐことができます。
各条件が満たされると、リクエストされたエンドポイントが Network Connectivity サービス アカウントによって承認済みネットワーク内に作成されます。Network Connectivity サービス アカウントは、サービス エージェントです。
エンドポイント障害の自動再試行
サービス接続の自動化により、Private Service Connect エンドポイントの作成と削除が完全に管理されます。
サービス接続の自動化で承認済みエンドポイントの作成または削除に失敗した場合(割り当ての制限やサービス接続ポリシーのサブネットで IP アドレスが不足しているなど)、ブロックの問題が解決されるまで、自動プロセスによりオペレーションが定期的に再試行されます。ただし、承認チェックが原因でエンドポイントの作成または削除が失敗した場合、オペレーションは再試行されません。
サービス接続ポリシーを記述し、pscConnections
フィールドを確認することで、エンドポイントの作成をブロックするエラーを確認できます。エンドポイントの作成または削除の失敗に関するトラブルシューティングについては、トラブルシューティングをご覧ください。
共有 VPC
サービス接続の自動化を使用して、共有 VPC ネットワークに Private Service Connect エンドポイントを自動的に作成できます。エンドポイントは共有 VPC ネットワークの IP アドレスで構成されているため、ホスト プロジェクトと接続されているすべてのサービス プロジェクトからアクセスできます。
以下の図に示す構成を作成するには、次のタスクを完了します。
ネットワーク管理者は、
project1
ホスト プロジェクトにvpc1
ネットワークのサービス接続ポリシーを作成し、google-cloud-sql
サービスクラスを使用するサービス インスタンスへの接続を許可します。エンドポイント IP アドレスはendpoint-subnet
サブネットから割り振られます。サービス インスタンス管理者は、
service-project-test
プロジェクトにdb-test
、service-project-prod
プロジェクトにdb-prod
の 2 つのマネージド サービス インスタンスをデプロイします。管理者は、サービス接続の自動化によって、サービス インスタンスに接続するエンドポイントをproject1
のネットワークvpc1
にデプロイできるように、サービス インスタンスを構成します。認可チェックがすべて合格するため、サービス接続の自動化により、
endpoint-subnet
に接続された 2 つのエンドポイントが作成されます(サービス インスタンスごとに 1 つ)。vm-subnet
サブネットに接続されているすべての VM は、エンドポイントと同じ共有 VPC ネットワークに接続されているため、エンドポイントにアクセスできます。
カスタム サービス インスタンス スコープを使用する Google サービス
サービス接続の自動化のデフォルトでは、サービス インスタンスとサービス インスタンスに接続するエンドポイントが同じプロジェクト内にある必要があります(共有 VPC の場合は、接続されたプロジェクト内)。サポートされている Google サービスの場合、サービス インスタンスと接続エンドポイントは、異なるプロジェクトまたは組織に存在していてもかまいません。
以下の図に示す構成を作成するには、次のタスクを完了します。
vpc-1
、vpc-2
、vpc-3
のネットワーク管理者は、それぞれの VPC ネットワークにサービス接続ポリシーを作成します。これにより、google-cloud-sql
サービスクラスを使用し、組織org-1
のプロジェクトproject-1
にデプロイされたサービス インスタンスへの接続が可能になります。サービス インスタンス管理者は、サービスの管理 API または UI を使用して、
project-1
にマネージド サービス インスタンスdb-1
をデプロイします。管理者は、サービス接続の自動化によってdb-1
に接続するエンドポイントをvpc-1
とvpc-2
にデプロイできるよう、サービス インスタンスを構成します。vpc-1
とvpc-2
の場合、認可チェックはすべて合格し、サービス接続の自動化により各ネットワークにエンドポイントが作成されます。これらのネットワーク内の VM は、エンドポイントを介してサービス インスタンスにトラフィックを送信できます。ただし、このネットワークは
db-1
サービス インスタンス構成で自動接続用に構成されていないため、vpc-3
にエンドポイントは作成されません。vpc-3
がdb-1
サービス インスタンスにアクセスする必要がある場合、ネットワーク管理者はデータベース管理者に連絡して、db-1
の接続構成にvpc-3
を追加するよう依頼できます。
サポート対象のサービス
サービス接続の自動化をサポートする Google サービスは次のとおりです。
サードパーティのマネージド サービスがサービス接続ポリシーをサポートしているかどうかについては、サービス プロバイダにお問い合わせください。サービスがサービス接続ポリシーをサポートしている場合、サービス プロバイダは関連するサービスクラスを提供できます。
プロデューサー側の自動化リソースは、限定プレビュー版として提供されています。独自のマネージド サービスでコンシューマー接続を自動化する場合は、 Google Cloudの営業担当者までお問い合わせください。