Private Service Connect Secure Source Manager 인스턴스 만들기

이 페이지에서는 Private Service Connect 인스턴스를 만드는 방법을 설명합니다.

Private Service Connect 인스턴스는 공개 인터넷에 엔드포인트를 노출하지 않습니다. Private Service Connect 인스턴스를 만들면 인스턴스에 대한 SSH (Git) 및 HTTPS (Git, 웹 인터페이스, API) 액세스를 제공하는 엔드포인트가 생성됩니다. 엔드포인트에는 비공개 네트워크의 IP 주소가 할당되어야 합니다. Private Service Connect 인스턴스로부터 또는 Private Service Connect 인스턴스로 전송되는 모든 트래픽은 Private Service Connect 엔드포인트를 통과합니다.

Private Service Connect를 사용하여 VPC 네트워크 내부에서 관리형 서비스에 비공개로 액세스하는 방법에 대한 자세한 내용은 Private Service Connect를 참고하세요.

Secure Source Manager는 단일 테넌트 서비스입니다. 계약 관계가 있는 여러 회사가 공동작업을 위해 단일 인스턴스를 사용해야 하는 경우가 아니라면 단일 Secure Source Manager 인스턴스에는 하나의Google Cloud 고객의 사용자만 포함되어야 합니다.

여러 회사와 협력하여 소스 코드를 공동작업하려는 경우 회사별로 별도의 인스턴스를 만드는 것이 좋습니다.

시작하기 전에

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Secure Source Manager API.

    Enable the API

  4. Install the Google Cloud CLI.

  5. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  6. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Enable the Secure Source Manager API.

    Enable the API

  9. Install the Google Cloud CLI.

  10. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  11. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  12. beta Google Cloud CLI 구성요소를 설치합니다.
    gcloud components install beta
  13. 필요한 역할

    Private Service Connect Secure Source Manager 인스턴스를 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

    서비스 ID 및 인증 기관 풀 만들기

    이 섹션에서는 자체 CA 인증서를 사용하는 경우 수행해야 하는 작업을 설명합니다. Google관리 인증서를 사용하려면 서비스 ID와 CA 풀을 만들지 않고 gcloud beta source-manager instances create 명령어를 실행하기만 하면 됩니다.

    Google관리 인증서를 사용하는 대신 자체 CA 인증서를 사용하는 경우 비공개 Secure Source Manager 인스턴스를 만들 때 인증 기관(CA) 풀 이름을 지정해야 합니다. 인스턴스의 HTTPS SSL 인증서에 서명하라는 요청이 CA 풀로 전송됩니다.

    1. 다음 명령어를 실행하여 프로젝트 내에서 Secure Source Manager API의 서비스 ID를 만듭니다.

      gcloud beta services identity create \
          --service=securesourcemanager.googleapis.com \
          --project=PROJECT_ID
      

      PROJECT_ID는 프로젝트 ID입니다.

      출력은 다음과 비슷합니다.

      Service identity created: service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com

      여기서 service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com는 Secure Source Manager 서비스 에이전트이고 PROJECT_NUM는 프로젝트 번호입니다.

    2. CSR 기반 인증서 요청이 허용된 인증 기관 (CA) 풀을 만듭니다.

    3. CA를 만듭니다. 필요에 따라 루트 또는 하위 CA를 만들 수 있습니다.

      루트 CA와 하위 CA의 차이점에 대한 자세한 내용은 인증 기관 설정 확인을 참고하세요.

    4. Secure Source Manager API 서비스 ID에 CA 풀에서 새 인증서를 요청할 수 있는 권한을 부여합니다.

      gcloud privateca pools add-iam-policy-binding CA_POOL_NAME \
          --location=CA_LOCATION \
          --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com' \
          --role='roles/privateca.certificateRequester' \
          --project=CA_PROJECT_ID
      

      다음을 바꿉니다.

      • CA_POOL_NAME을 CA 풀에 지정한 이름으로 바꿉니다.
      • CA_LOCATION을 CA 풀의 리전 또는 영역으로 바꿉니다.
      • PROJECT_NUMBER를 Secure Source Manager가 사용 설정된 프로젝트 번호로 바꿉니다. 프로젝트 식별의 안내에 따라 프로젝트 번호를 찾을 수 있습니다.
      • CA_PROJECT_ID를 CA 풀을 만든 프로젝트의 프로젝트 ID로 바꿉니다.

    Private Service Connect Secure Source Manager 인스턴스 만들기

    gcloud

    다음 명령어를 사용하여 Private Service Connect 인스턴스를 만듭니다.

    gcloud beta source-manager instances create INSTANCE_ID \
      --region=LOCATION \
      --project=PROJECT_ID \
      --is-private \
      --ca-pool=projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME
    

    다음을 바꿉니다.

    • INSTANCE_ID을 인스턴스에 지정할 이름으로 바꿉니다.
    • LOCATION을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치는 위치를 참고하세요.
    • PROJECT_ID을 인스턴스를 만들 프로젝트의 이름으로 바꿉니다.
    • CA_PROJECT를 CA 풀 프로젝트의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).
    • CA_LOCATION을 CA 풀을 만든 리전으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).
    • CA_POOL_NAME를 CA 풀의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).

    API

    다음 명령어를 사용하여 Private Service Connect 인스턴스를 만듭니다.

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=INSTANCE_ID \
        -H "Content-Type: application/json" \
        -d '{"private_config":{"is_private":true,"ca_pool":"projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME"}}'
    

    다음을 바꿉니다.

    • INSTANCE_ID을 인스턴스에 지정할 이름으로 바꿉니다.
    • LOCATION을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치는 위치를 참고하세요.
    • PROJECT_ID을 인스턴스를 만들 프로젝트의 이름으로 바꿉니다.
    • CA_PROJECT를 CA 풀 프로젝트의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).
    • CA_LOCATION을 CA 풀을 만든 리전으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).
    • CA_POOL_NAME를 CA 풀의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).

    장기 실행 인스턴스 생성 작업이 시작됩니다. 인스턴스를 만드는 데 최대 60분이 소요됩니다. 출력은 다음과 비슷합니다.

    Create request issued for [my-instance].
    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata
      apiVersion: v1
      createTime: '2023-02-27T20:57:52.315609549Z'
      requestedCancellation: false
      target: projects/my-project/locations/us-central1/instances/my-instance
      verb: create
    name: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e
    

    여기서 projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2eOPERATION_NAME입니다.

    작업 상태를 확인하는 데 사용해야 하므로 OPERATION_NAME를 기록해 둡니다.

    작업 상태를 확인하려면 다음 명령어를 실행하세요.

    gcloud beta source-manager operations describe OPERATION_NAME \
        --region=LOCATION
    

    다음을 바꿉니다.

    • OPERATION_NAME을 생성 명령어 응답의 작업 이름으로 바꿉니다.
    • LOCATION을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치에 대한 자세한 내용은 위치를 참고하세요.

    인스턴스가 생성되면 Private Service Connect 엔드포인트 httpServiceAttachmentsshServiceAttachmenthtml, api, gitHttp, gitSsh의 호스트 이름이 출력에 나열됩니다.

    비공개 인스턴스에 액세스

    Private Service Connect 인스턴스에 액세스하려면 전달 규칙에 기반한 Private Service Connect 엔드포인트를 만들거나 부하 분산기에 기반한 Private Service Connect 백엔드를 만들면 됩니다.

    부하 분산기를 기반으로 하는 Private Service Connect 백엔드는 더 유연하며 Cloud Build와 같은 다른 Google Cloud 서비스와 통합할 수 있지만 더 복잡하고 추가 청구가 발생합니다.

    전달 규칙 기반 Private Service Connect 엔드포인트는 더 간단하고 비용이 저렴하지만 Cloud Build 또는 기타Google Cloud 서비스에 연결할 수 없습니다.

    Private Service Connect 인스턴스용 부하 분산기를 기반으로 Private Service Connect 백엔드를 설정하고 이를 Cloud Build에 연결하려면 Private Service Connect 인스턴스에 Cloud Build 연결을 참고하세요.

    전달 규칙에 따라 Private Service Connect 엔드포인트 설정

    1. Private Service Connect 엔드포인트를 만들려면 엔드포인트를 통해 게시된 서비스에 액세스의 안내를 따르세요.

    2. Secure Source Manager 인스턴스의 HTTP 및 SSH 서비스 연결의 URI를 가져오려면 다음 명령어를 실행합니다.

      gcloud beta source-manager instances describe INSTANCE_ID \
          --region=LOCATION
      

      다음을 바꿉니다.

      • INSTANCE_ID을 인스턴스 이름으로 바꿉니다. 특정 리전의 인스턴스를 나열하려면 gcloud beta source-manager instances list --region=LOCATION를 실행하면 됩니다.
      • LOCATION을 인스턴스 위치로 바꿉니다. 지원되는 위치에 대한 자세한 내용은 위치를 참고하세요.

      다음과 유사한 결과가 출력됩니다.

      createTime: '2023-09-22T18:21:35.729454612Z'
      hostConfig:
        api: my-project-012345678901-api.us-central1.p.sourcemanager.dev
        gitHttp: my-project-012345678901-git.us-central1.p.sourcemanager.dev
        gitSsh: my-project-012345678901-ssh.us-central1.p.sourcemanager.dev
        html: my-project-012345678901.us-central1.p.sourcemanager.dev
      name: projects/my-project/locations/us-central1/instances/my-instance
      privateConfig:
        caPool: projects/my-project/locations/us-central1/caPools/my-ca-pool
        httpServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc
        isPrivate: true
        sshServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc
      state: ACTIVE
      updateTime: '2023-09-22T18:39:53.390563549Z'
      

      각 항목의 의미는 다음과 같습니다.

      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc는 인스턴스의 HTTP 서비스 연결 URI입니다.
      • projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc는 인스턴스의 SSH 서비스 연결 URI입니다.
    3. Private Service Connect 엔드포인트를 만든 후 비공개 DNS 레코드를 설정해야 합니다. 비공개 DNS 레코드를 설정하는 방법은 수동으로 DNS 구성을 참고하세요.

      1. hostConfig.html, hostConfig.api, hostConfig.gitHttp 값을 HTTP 서비스 연결의 내부 IP 주소에 매핑합니다.
      2. hostConfig.ssh 값을 SSH 서비스 연결의 내부 IP 주소에 매핑합니다.

      예를 들어 이전 예시 출력에서 hostConfig.html의 값은 my-project-012345678901.us-central1.p.sourcemanager.dev입니다.

    Secure Source Manager API로 CA 사용

    Secure Source Manager에는 컨트롤 플레인과 데이터 플레인이 있습니다. 데이터 영역 엔드포인트는 Secure Source Manager 인스턴스에서 직접 호스팅하므로 이러한 엔드포인트에 액세스하려면 인스턴스의 API 호스트 이름에 연결해야 합니다.

    비공개 Secure Source Manager 인스턴스를 사용하려면 서비스 ID 및 인증 기관 풀 만들기 섹션에서 만든 CA를 사용해야 합니다.

    1. CA를 다운로드하려면 다음 명령어를 실행합니다.

      gcloud privateca pools get-ca-certs CA_POOL \
          --location LOCATION \
          --output-file=root-cert.pem \
          --project PROJECT
      
    2. 인스턴스에 API 호출을 실행하려면 CA 인증서를 데이터 영역 Secure Source Manager API에 전달합니다.

      예를 들어 다음 명령어는 CA 인증서 root-cert.pem를 Secure Source Manager API에 전달하여 위치 us-central1의 비공개 인스턴스 my-instance에 있는 저장소를 나열합니다.

      curl \
          --cacert root-cert.pem \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          https://my-instance-01234567890-api.us-central1.sourcemanager.dev/v1/projects/01234567890/locations/us-central1/repositories
      

    다음 단계