서비스 연결 정책 구성

이 페이지에서는 네트워크 관리자가 관리형 서비스에 대한 비공개 연결을 자동화하도록 서비스 연결 정책을 구성하는 방법을 설명합니다.

시작하기 전에

필요한 역할

네트워크를 구성하고 서비스 연결 정책을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 네트워크 관리자(roles/compute.networkAdmin) IAM 역할을 부여해 달라고 요청하세요.

공유 VPC에 서비스 연결 정책을 사용하려면 네트워크 연결 서비스 계정에 서비스 및 호스트 프로젝트에 대한 역할을 부여해야 합니다. 이러한 서비스 계정은 서비스 연결 정책이 생성되었을 때 자동으로 구성되지만 역할을 수동으로 삭제할 수 있습니다. 누락된 권한에 대한 오류가 발생하면 서비스 계정 관리자가 역할을 다시 부여해야 할 수 있습니다. 자세한 내용은 공유 VPC의 서비스 계정 구성을 참조하세요.

서비스 연결 정책 만들기

서비스 연결 정책을 사용하면 지정된 서비스 클래스가 프로듀서 및 소비자 VPC 네트워크 간에 Private Service Connect 연결을 만들도록 승인할 수 있습니다.

각 서비스 클래스, 리전, VPC 네트워크 조합당 최대 1개의 정책을 만들 수 있습니다. 정책은 특정 조합에 대한 서비스 연결 자동화를 나타냅니다. 정책을 구성할 때 서브넷을 선택합니다. 서브넷은 정책을 통해 생성된 엔드포인트의 IP 주소를 할당하는 데 사용됩니다. 정책이 동일한 리전을 공유하는 경우 여러 연결 정책에서 동일한 서브넷을 재사용할 수 있습니다.

예를 들어 서로 다른 3곳의 리전에서 서비스 연결 자동화를 사용하려면 6개의 정책을 만듭니다. 각 리전에 하나씩 최소 3개의 서브넷을 사용할 수 있습니다.

서비스 연결 정책을 만든 후에는 정책의 서브넷 및 연결 한도만 업데이트할 수 있습니다. 다른 필드를 업데이트해야 하는 경우에는 정책을 삭제하고 새 정책을 만드세요.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결 정책 탭을 클릭합니다.

  3. 연결 정책 만들기를 클릭합니다.

  4. 연결 정책의 이름을 입력합니다.

  5. 서비스 클래스를 지정합니다.

    • Google 서비스의 경우 다음을 수행합니다.
      1. 소스 서비스 클래스에서 Google 서비스를 선택합니다.
      2. 서비스 클래스 메뉴에서 서비스 클래스를 선택합니다.
    • 타사 서비스의 경우 다음을 수행합니다.
      1. 소스 서비스 클래스에서 타사 서비스를 선택합니다.
      2. 서비스 클래스에 서비스 클래스 이름을 입력합니다.
  6. 대상 엔드포인트 범위 섹션에서 이 정책이 적용되는 네트워크리전을 선택합니다.

  7. 정책 섹션의 서브네트워크 메뉴에서 하나 이상의 서브넷을 선택합니다. 서브넷은 엔드포인트에 IP 주소를 할당하는 데 사용됩니다.

  8. 선택사항: 정책에 대한 연결 한도를 지정합니다. 이 연결 정책을 사용하여 만들 수 있는 엔드포인트 수를 결정합니다. 생략하면 제한이 없습니다.

  9. 정책 만들기를 클릭합니다.

gcloud

service-connection-policies create 명령어를 사용합니다.

gcloud network-connectivity service-connection-policies create POLICY_NAME \
    --network=NETWORK \
    --project=PROJECT_ID \
    --region=REGION \
    --service-class=SERVICE_CLASS \
    --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \
    --psc-connection-limit=LIMIT \
    --description=DESCRIPTION

다음을 바꿉니다.

  • POLICY_NAME: 서비스 연결 정책의 이름
  • NETWORK: 이 정책을 적용할 리전입니다.
  • PROJECT_ID: 프로젝트 ID 또는 VPC 네트워크 프로젝트의 번호입니다. 공유 VPC 네트워크의 경우 서비스 연결 정책이 호스트 프로젝트에 배포되어야 합니다. 서비스 프로젝트에서는 지원되지 않습니다.
  • REGION: 이 정책을 적용할 리전입니다. 서비스 연결을 자동화하려는 모든 리전에 동일한 정책이 있어야 합니다.
  • SERVICE_CLASS: 프로듀서가 제공한 서비스 클래스의 리소스 식별자.
  • SUBNETS: Private Service Connect 엔드포인트의 IP 주소를 할당하는 데 사용되는 하나 이상의 일반 소비자 서브넷. 이러한 IP 주소는 관리형 서비스 인스턴스가 생성 및 삭제될 때 서브넷 풀에 자동으로 할당 및 반환됩니다. 서브넷은 서비스 연결 정책과 동일한 리전에 있어야 합니다. 정책이 동일한 리전을 공유하는 경우 여러 연결 정책에서 동일한 서브네트워크를 재사용할 수 있습니다. 쉼표로 구분된 목록으로 여러 서브넷을 입력할 수 있습니다.
  • LIMIT: 이 정책을 사용하여 만들 수 있는 최대 엔드포인트 수. 지정하지 않으면 제한이 없습니다.
  • DESCRIPTION: 서비스 연결 정책의 설명입니다(선택사항).

예를 들어 다음 명령어는 managed-services 서브넷에서 IP 주소를 할당하는 gcp-database-service 서비스 클래스에 대한 서비스 연결 정책을 만듭니다. 이 정책을 사용하여 최대 10개의 Private Service Connect 엔드포인트를 만들 수 있습니다. 엔드포인트는 관리형 서비스 인스턴스와 동일한 조직에 있는 프로젝트에서 만들어야 합니다.

gcloud network-connectivity service-connection-policies create gcp-database-cxn-policy \
    --network=default \
    --project=my-project \
    --region=us-central1 \
    --service-class=gcp-database-service \
    --subnets=managed-service-subnet \
    --psc-connection-limit=10

Terraform

Terraform 리소스를 사용하여 서비스 연결 정책을 만들 수 있습니다.

# Create a VPC network
resource "google_compute_network" "default" {
  name                    = "consumer-network"
  auto_create_subnetworks = false
}

# Create a subnetwork
resource "google_compute_subnetwork" "default" {
  name          = "consumer-subnet"
  ip_cidr_range = "10.0.0.0/16"
  region        = "us-central1"
  network       = google_compute_network.default.id
}

# Create a service connection policy
resource "google_network_connectivity_service_connection_policy" "default" {
  name          = "service-connection-policy"
  location      = "us-central1"
  service_class = "gcp-memorystore-redis"
  network       = google_compute_network.default.id
  psc_config {
    subnetworks = [google_compute_subnetwork.default.id]
    limit       = 2
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

API

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • REGION: 서비스 연결 정책의 리전
  • POLICY_NAME: 서비스 연결 정책의 이름
  • DESCRIPTION: 서비스 연결 정책의 설명(선택사항)
  • NETWORK: 서비스 연결 정책의 네트워크
  • LIMIT: 이 정책을 사용하여 만들 수 있는 최대 엔드포인트 수. 지정하지 않으면 제한이 없습니다.
  • SUBNET: Private Service Connect 엔드포인트의 IP 주소를 할당하는 데 사용되는 하나 이상의 일반 소비자 서브넷. 이러한 IP 주소는 관리형 서비스 인스턴스가 생성 및 삭제될 때 서브넷 풀에 자동으로 할당 및 반환됩니다. 서브넷은 서비스 연결 정책과 동일한 리전에 있어야 합니다. 정책이 동일한 리전을 공유하는 경우 여러 연결 정책에서 동일한 서브네트워크를 재사용할 수 있습니다. 쉼표로 구분된 목록으로 여러 서브넷 URL을 입력할 수 있습니다.
  • SERVICE_CLASS: 프로듀서가 제공한 서비스 클래스의 리소스 식별자

HTTP 메서드 및 URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME

JSON 요청 본문:

{
  "description": "DESCRIPTION",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "serviceClass": "SERVICE_CLASS"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/project-id/locations/us-central1/operations/operation-1692118768698-602f91a204523-8c6a2d93-d5c20a6a",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

서비스 연결 정책 나열

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결 정책 탭을 클릭합니다.

  3. 연결 정책이 표시됩니다.

gcloud

service-connection-policies list 명령어를 사용합니다.

gcloud network-connectivity service-connection-policies list \
    --region=REGION

REGION을 서비스 연결 정책을 나열할 리전으로 바꿉니다.

API

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • REGION: 서비스 연결 정책을 나열할 리전

HTTP 메서드 및 URL:

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "serviceConnectionPolicies": [
    {
      "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-1",
      "createTime": "2023-08-15T15:33:54.712819865Z",
      "updateTime": "2023-08-15T15:33:54.945630882Z",
      "description": "descriptor",
      "network": "projects/project-id/global/networks/network-two",
      "serviceClass": "service-class",
      "infrastructure": "PSC",
      "pscConfig": {
        "subnetworks": [
          "projects/project-id/regions/us-west1/subnetworks/us-west1-subnet"
        ],
        "limit": "12"
      },
      "etag": "zCqDFBG1dS7B4gNdJKPR98YMUXpSrBIz0tZB_hwOIZI"
    },
    {
      "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-2",
      "createTime": "2023-08-15T16:59:29.230257109Z",
      "updateTime": "2023-08-15T16:59:29.508994923Z",
      "description": "descriptor",
      "network": "projects/project-id/global/networks/custom-test",
      "serviceClass": "service-class",
      "infrastructure": "PSC",
      "pscConfig": {
        "subnetworks": [
          "projects/project-id/regions/us-central1/subnetworks/subnet-one"
        ],
        "limit": "25"
      },
      "etag": "nB603i61nRGMZpNjWoWMM6wRzsgM8QN9C9v5QFLyOa8"
    }
  ]
}

서비스 연결 정책 설명

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결 정책 탭을 클릭합니다.

  3. 확인하려는 서비스 연결 정책을 클릭합니다.

gcloud

service-connection-policies describe 명령어를 사용합니다.

gcloud network-connectivity service-connection-policies describe POLICY_NAME \
    --region=REGION

다음을 바꿉니다.

  • POLICY_NAME: 설명하려는 서비스 연결 정책의 이름입니다.
  • REGION: 설명하려는 서비스 연결 정책의 리전입니다.

API

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • REGION: 서비스 연결 정책의 리전
  • POLICY_NAME: 설명할 서비스 연결 정책 이름

HTTP 메서드 및 URL:

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
  "createTime": "2023-08-15T16:59:29.230257109Z",
  "updateTime": "2023-08-15T16:59:29.508994923Z",
  "description": "description",
  "network": "projects/project-id/global/networks/custom-test",
  "serviceClass": "gcp-memorystore-redis",
  "infrastructure": "PSC",
  "pscConfig": {
    "subnetworks": [
      "projects/project-id/regions/us-central1/subnetworks/subnet-one"
    ],
    "limit": "25"
  },
  "etag": "nB603i61nRGMZpNjWoWMM6wRzsgM8QN9C9v5QFLyOa8"
}

서비스 연결 정책 업데이트

서비스 연결 정책에 대해 서브넷 및 연결 한도를 업데이트할 수 있습니다.

서비스 연결 정책에서 서브넷을 삭제하면 다음이 적용됩니다.

  • 기존 Private Service Connect 엔드포인트는 영향을 받지 않습니다.
  • 새 엔드포인트는 삭제된 서브넷을 사용하지 않습니다.

서비스 연결 정책의 연결 한도를 업데이트할 경우 다음이 적용됩니다.

  • 기존 엔드포인트는 영향을 받지 않습니다.
  • 새 연결 한도가 정책과 연결된 기존 엔드포인트 수보다 작으면 서비스 연결 자동화에 따라 이 정책을 사용하는 새 엔드포인트 만들기가 차단됩니다.
  • 새 연결 한도가 정책과 연결된 기존 엔드포인트 수보다 크면 연결 한도에 따라 이전에 차단된 엔드포인트를 만들 수 있습니다.

서비스 연결 정책을 업데이트하고 연결 한도를 지정하지 않으면 업데이트된 정책에 연결 한도가 없습니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결 정책 탭을 클릭합니다.

  3. 수정하려는 서비스 연결 정책을 클릭합니다.

  4. 수정을 클릭합니다.

  5. 정책 서브네트워크를 업데이트하려면 다음을 수행합니다.

    1. 서브네트워크를 클릭한 후 이 정책과 연결할 서브네트워크를 선택하세요.
    2. 확인을 클릭합니다.
  6. 정책의 연결 한도를 업데이트하려면 연결 한도 필드에 새 값을 입력합니다.

  7. 정책 업데이트를 클릭합니다.

gcloud

service-connection-policies update 명령어를 사용합니다.

gcloud network-connectivity service-connection-policies update POLICY_NAME \
    --region=REGION
    --project=PROJECT_ID
    --subnets=SUBNETS
    --psc-connection-limit=LIMIT
  • POLICY_NAME: 서비스 연결 정책의 이름
  • REGION: 서비스 연결 정책의 리전입니다. 정책의 리전은 업데이트할 수 없습니다.
  • PROJECT_ID: 정책의 프로젝트 ID 또는 프로젝트 번호입니다.
  • SUBNETS: Private Service Connect 엔드포인트의 IP 주소를 할당하는 데 사용되는 하나 이상의 일반 소비자 서브넷. 이러한 IP 주소는 관리형 서비스 인스턴스가 생성 및 삭제될 때 서브넷 풀에 자동으로 할당 및 반환됩니다. 서브넷은 서비스 연결 정책과 동일한 리전에 있어야 합니다. 정책이 동일한 리전을 공유하는 경우 여러 연결 정책에서 동일한 서브네트워크를 재사용할 수 있습니다. 쉼표로 구분된 목록으로 여러 서브넷을 입력할 수 있습니다.
  • LIMIT: 이 정책을 사용하여 만들 수 있는 최대 엔드포인트 수. 지정하지 않으면 제한이 없습니다.

API

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • REGION: 서비스 연결 정책의 리전 정책의 리전은 업데이트할 수 없습니다.
  • POLICY_NAME: 서비스 연결 정책의 이름
  • LIMIT: 이 정책을 사용하여 만들 수 있는 최대 엔드포인트 수. 지정하지 않으면 제한이 없습니다.
  • SUBNET: Private Service Connect 엔드포인트의 IP 주소를 할당하는 데 사용되는 하나 이상의 일반 소비자 서브넷. 이러한 IP 주소는 관리형 서비스 인스턴스가 생성 및 삭제될 때 서브넷 풀에 자동으로 할당 및 반환됩니다. 서브넷은 서비스 연결 정책과 동일한 리전에 있어야 합니다. 정책이 동일한 리전을 공유하는 경우 여러 연결 정책에서 동일한 서브네트워크를 재사용할 수 있습니다. 쉼표로 구분된 목록으로 여러 서브넷 URL을 입력할 수 있습니다.
  • NETWORK: 서비스 연결 정책의 네트워크

HTTP 메서드 및 URL:

PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME

JSON 요청 본문:

{
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "network": "projects/PROJECT_ID/global/networks/NETWORK"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/project-id/locations/us-central1/operations/operation-1692118768698-602f91a204523-8c6a2d93-d5c20a6a",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

서비스 연결 정책 삭제

서비스 사용을 완료했거나 연결 자동화를 중지하려면 서비스 연결 정책을 삭제하면 됩니다. 활성 Private Service Connect 연결이 정책과 연결되어 있으면 정책 삭제가 차단됩니다. 서비스 연결 정책을 삭제하기 전에 연결된 모든 서비스 인스턴스를 사용 중단하여 모든 활성 연결을 삭제하세요.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결 정책 탭을 클릭합니다.

  3. 삭제할 서비스 연결 정책을 선택한 다음 삭제를 클릭합니다.

gcloud

service-connection-policies delete 명령어를 사용합니다.

gcloud network-connectivity service-connection-policies delete POLICY_NAME \
    --region=REGION

다음을 바꿉니다.

  • POLICY_NAME: 삭제하려는 서비스 연결 정책의 이름입니다.
  • REGION: 삭제하려는 서비스 연결 정책의 리전입니다.

API

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • REGION: 서비스 연결 정책의 리전
  • POLICY_NAME: 삭제할 서비스 연결 정책의 이름

HTTP 메서드 및 URL:

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/project-id/locations/us-central1/operations/operation-1692128792549-602fb6f98194a-e0275435-36edc095",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T19:46:32.605032867Z",
    "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

공유 VPC의 서비스 계정 구성

공유 VPC에서 서비스 연결 정책을 사용할 때 서비스 계정이 자동으로 구성되지만 수동으로 역할을 제거할 수 있습니다. 누락된 권한에 대한 오류가 표시되면 역할을 다시 부여해 보세요.

필요한 역할을 부여하기 위해서는 서비스 계정 관리자가 다음을 수행할 수 있습니다.

서비스 프로젝트에서 서비스 계정에 역할 부여

gcloud

  1. 서비스 프로젝트의 네트워크 연결 서비스 계정네트워크 연결 서비스 에이전트 역할(roles/networkconnectivity.serviceAgent)을 부여합니다. 서비스 프로젝트 수준의 역할을 부여합니다.

    gcloud projects add-iam-policy-binding SERVICE_PROJECT_NUMBER \
        --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
        --role=roles/networkconnectivity.serviceAgent
    

    SERVICE_PROJECT_NUMBER를 서비스 프로젝트의 프로젝트 번호로 바꿉니다.

  2. 서비스 프로젝트의 네트워크 연결 서비스 계정에 Compute 네트워크 사용자 역할(roles/compute.networkUser)을 부여합니다. 다음 중 한 가지 안내를 따릅니다.

    • 호스트 프로젝트 수준의 역할을 부여합니다.

      gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER \
          --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
          --role=roles/compute.networkUser
      

      HOST_PROJECT_NUMBER를 호스트 프로젝트의 프로젝트 번호로 바꿉니다.

    • 서비스 연결 정책과 연결된 호스트 프로젝트의 각 서브넷에 역할을 부여합니다. 각 서브넷에 대해 다음 명령어를 사용합니다.

      gcloud compute networks subnets add-iam-policy-binding SUBNET \
          --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
          --role=roles/compute.networkUser \
          --region=REGION \
          --project=HOST_PROJECT_NUMBER
      

      다음을 바꿉니다.

      • SUBNET: 서비스 연결 정책과 연결된 서브넷의 이름입니다.
      • REGION: 서브넷의 리전입니다.

호스트 프로젝트의 서비스 계정에 역할 부여

gcloud

  1. 호스트 프로젝트의 네트워크 연결 서비스 계정에 네트워크 연결 서비스 에이전트 역할(roles/networkconnectivity.serviceAgent)을 부여합니다. 호스트 프로젝트 수준의 역할을 부여합니다.

    gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER \
        --member=serviceAccount:service-HOST_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \
        --role=roles/networkconnectivity.serviceAgent
    

    HOST_PROJECT_NUMBER를 호스트 프로젝트의 프로젝트 번호로 바꿉니다.

다음 단계