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 고객의 사용자만 포함되어야 합니다.
여러 회사와 협력하여 소스 코드를 공동작업하려는 경우 회사별로 별도의 인스턴스를 만드는 것이 좋습니다.
시작하기 전에
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.
gcloud init
beta
Google Cloud CLI 구성요소를 설치합니다.gcloud components install beta
-
조직에 대한 Access Context Manager 관리자 역할 (
roles/accesscontextmanager.policyAdmin
) -
인스턴스의 인스턴스 소유자 역할 (
roles/sercuresourcemanager.instanceOwner
) -
서비스 ID와 인증 기관 풀을 만들려면 다음 권한이 필요합니다.
조직에 대한 CA 서비스 작업 관리자 (
roles/privateca.caManager
) 다음 명령어를 실행하여 프로젝트 내에서 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
는 프로젝트 번호입니다.CSR 기반 인증서 요청이 허용된 인증 기관 (CA) 풀을 만듭니다.
CA를 만듭니다. 필요에 따라 루트 또는 하위 CA를 만들 수 있습니다.
- 루트 CA를 만들려면 루트 CA 만들기의 안내를 따르세요.
- Google Cloud에서 상위 CA로부터 하위 CA를 만들려면 하위 CA 만들기의 안내를 따르세요.
- 외부 CA에서 하위 CA를 만들려면 외부 CA에서 하위 CA 만들기의 안내를 따르세요.
루트 CA와 하위 CA의 차이점에 대한 자세한 내용은 인증 기관 설정 확인을 참고하세요.
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로 바꿉니다.
INSTANCE_ID
을 인스턴스에 지정할 이름으로 바꿉니다.LOCATION
을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치는 위치를 참고하세요.PROJECT_ID
을 인스턴스를 만들 프로젝트의 이름으로 바꿉니다.CA_PROJECT
를 CA 풀 프로젝트의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).CA_LOCATION
을 CA 풀을 만든 리전으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).CA_POOL_NAME
를 CA 풀의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).INSTANCE_ID
을 인스턴스에 지정할 이름으로 바꿉니다.LOCATION
을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치는 위치를 참고하세요.PROJECT_ID
을 인스턴스를 만들 프로젝트의 이름으로 바꿉니다.CA_PROJECT
를 CA 풀 프로젝트의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).CA_LOCATION
을 CA 풀을 만든 리전으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).CA_POOL_NAME
를 CA 풀의 이름으로 바꿉니다(자체 CA 인증서를 사용하는 경우에만).OPERATION_NAME
을 생성 명령어 응답의 작업 이름으로 바꿉니다.LOCATION
을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치에 대한 자세한 내용은 위치를 참고하세요.Private Service Connect 엔드포인트를 만들려면 엔드포인트를 통해 게시된 서비스에 액세스의 안내를 따르세요.
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입니다.
Private Service Connect 엔드포인트를 만든 후 비공개 DNS 레코드를 설정해야 합니다. 비공개 DNS 레코드를 설정하는 방법은 수동으로 DNS 구성을 참고하세요.
hostConfig.html
,hostConfig.api
,hostConfig.gitHttp
값을 HTTP 서비스 연결의 내부 IP 주소에 매핑합니다.hostConfig.ssh
값을 SSH 서비스 연결의 내부 IP 주소에 매핑합니다.
예를 들어 이전 예시 출력에서
hostConfig.html
의 값은my-project-012345678901.us-central1.p.sourcemanager.dev
입니다.CA를 다운로드하려면 다음 명령어를 실행합니다.
gcloud privateca pools get-ca-certs CA_POOL \ --location LOCATION \ --output-file=root-cert.pem \ --project PROJECT
인스턴스에 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
- Cloud Build를 Private Service Connect Secure Source Manager 인스턴스에 연결
- VPC 서비스 제어 경계에서 Secure Source Manager 구성
필요한 역할
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 풀로 전송됩니다.
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
다음을 바꿉니다.
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"}}'
다음을 바꿉니다.
장기 실행 인스턴스 생성 작업이 시작됩니다. 인스턴스를 만드는 데 최대 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-a9b97a2e
는 OPERATION_NAME
입니다.
작업 상태를 확인하는 데 사용해야 하므로 OPERATION_NAME
를 기록해 둡니다.
작업 상태를 확인하려면 다음 명령어를 실행하세요.
gcloud beta source-manager operations describe OPERATION_NAME \
--region=LOCATION
다음을 바꿉니다.
인스턴스가 생성되면 Private Service Connect 엔드포인트 httpServiceAttachment
및 sshServiceAttachment
와 html
, 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 엔드포인트 설정
Secure Source Manager API로 CA 사용
Secure Source Manager에는 컨트롤 플레인과 데이터 플레인이 있습니다. 데이터 영역 엔드포인트는 Secure Source Manager 인스턴스에서 직접 호스팅하므로 이러한 엔드포인트에 액세스하려면 인스턴스의 API 호스트 이름에 연결해야 합니다.
비공개 Secure Source Manager 인스턴스를 사용하려면 서비스 ID 및 인증 기관 풀 만들기 섹션에서 만든 CA를 사용해야 합니다.