여러 회사와 협력하여 소스 코드를 공동작업하려는 경우 회사별로 별도의 인스턴스를 만드는 것이 좋습니다.
VPC 서비스 제어가 사용 설정된 인스턴스를 만들려면 VPC 서비스 제어 경계에서 Secure Source Manager 구성을 참고하세요.
시작하기 전에
-
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
다음 명령어를 실행하여 인스턴스를 만듭니다. gcloud CLI에 인증하라는 메시지가 표시될 수 있습니다.
gcloud beta source-manager instances create INSTANCE_ID \ --region=LOCATION \ --project=PROJECT_ID \ --kms-key=projects/KEY_PROJECT/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY
각 항목의 의미는 다음과 같습니다.
INSTANCE_ID
은 만들려는 인스턴스의 이름입니다.LOCATION
은 인스턴스를 만들 리전입니다. 지원되는 위치에 대한 자세한 내용은 위치를 참고하세요.PROJECT_ID
는 인스턴스를 만들 프로젝트의 프로젝트 ID입니다.-kms-key
는 선택사항인 플래그입니다. 인스턴스를 만드는 데 자체 고객 관리 암호화 키 (CMEK)를 사용하려면 포함합니다. CMEK 키는 인스턴스를 만드는 위치와 동일한 위치에 있어야 하지만 다른 프로젝트에 있을 수 있습니다. Google 기본 암호화를 사용하려면 이 플래그를 생략하세요. CMEK를 사용하여 데이터를 암호화하려면 다음을 대체하세요.KEY_PROJECT
을 키를 만든 프로젝트로 바꿉니다.KEY_LOCATION
: 키의 위치KEYRING_NAME
: 키링의 이름KEY
: 키 이름
장기 실행 인스턴스 생성 작업이 시작됩니다. 출력은 다음과 같이 표시됩니다.
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
입니다.인스턴스를 만드는 데 최대 60분이 걸립니다.
작업 상태를 확인하는 데 사용해야 하므로
OPERATION_NAME
를 기록해 둡니다.다음 명령어를 실행하여
create
작업의 상태를 확인합니다.gcloud beta source-manager operations describe OPERATION_NAME \ --region=LOCATION
다음을 바꿉니다.
OPERATION_NAME
을 생성 명령어 응답의 작업 이름으로 바꿉니다.LOCATION
을 인스턴스를 만들 리전으로 바꿉니다. 지원되는 위치에 대한 자세한 내용은 위치를 참고하세요.
인스턴스가 준비되면 응답은 다음과 비슷하게 표시됩니다.
{ "name": "projects/my-project/locations/us-central1/operations/operation-123456789012-5ec69948c0f2b-60dd727f-a9b97a2e", "metadata": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata", "createTime": "2022-11-01T14:31:32.420469714Z", "endTime": "2022-11-01T14:48:34.140378114Z", "target": "projects/my-project/locations/us-central1/instances/test", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Instance", "name": "projects/my-project/locations/us-central1/instances/test", "createTime": "2022-11-01T14:31:32.416413630Z", "updateTime": "2022-11-01T14:31:32.416413630Z", "labels": { "ldap": "user", "source": "manual" }, "state": "ACTIVE", "hostConfig": { "html": "test-098765432109.us-central1.sourcemanager.dev", "api": "test-098765432109-api.us-central1.sourcemanager.dev", "gitHttp": "test-098765432109-git.us-central1.sourcemanager.dev" } } }
여기서
test-098765432109.us-central1.sourcemanager.dev
은 인스턴스 HTML URL입니다.성공적으로 생성된 확인 상태 명령에서 HTML URL을 복사합니다. 웹 인터페이스를 통해 인스턴스에 액세스하려면 이 URL이 필요합니다.
다음 명령어를 실행하여 인스턴스를 만듭니다. gcloud CLI에 인증하라는 메시지가 표시될 수 있습니다.
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 '{ "kms_key":"projects/KEY_PROJECT/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY"}'
각 항목의 의미는 다음과 같습니다.
INSTANCE_ID
은 만들려는 인스턴스의 이름입니다.LOCATION
은 인스턴스를 만들 리전입니다. 지원되는 위치에 대한 자세한 내용은 위치를 참고하세요.PROJECT_ID
는 인스턴스를 만들 프로젝트의 프로젝트 ID입니다.-d
는 인스턴스를 암호화할 CMEK 키를 지정하는 데 사용할 수 있는 선택적 HTTP POST 데이터 플래그입니다. 기본 Google 암호화를 사용하려면 이 플래그를 생략합니다. CMEK를 사용하여 데이터를 암호화하려면 다음을 대체하세요.KEY_PROJECT
을 키를 만든 프로젝트로 바꿉니다.KEY_LOCATION
: 키의 위치KEYRING_NAME
: 키링의 이름KEY
: 키 이름
장기 실행 인스턴스 생성 작업이 시작됩니다. 출력은 다음과 같이 표시됩니다.
{ "name": "projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e", "metadata": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata", "createTime": "2022-11-01T14:31:32.420469714Z", "target": "projects/my-project/locations/us-central1/instances/test", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
여기서
projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e
는OPERATION_NAME
입니다.인스턴스를 만드는 데 최대 60분이 걸립니다.
OPERATION_NAME
을 복사합니다.다음 명령어를 실행하여 생성 작업의 상태를 확인합니다.
curl \ -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://securesourcemanager.googleapis.com/v1/OPERATION_NAME
여기서 OPERATION_NAME은 생성 명령어에 대한 응답의 작업 이름입니다.
인스턴스가 준비되면 응답은 다음과 비슷하게 표시됩니다.
{ "name": "projects/my-project/locations/us-central1/operations/operation-123456789012-5ec69948c0f2b-60dd727f-a9b97a2e", "metadata": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata", "createTime": "2022-11-01T14:31:32.420469714Z", "endTime": "2022-11-01T14:48:34.140378114Z", "target": "projects/my-project/locations/us-central1/instances/test", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Instance", "name": "projects/my-project/locations/us-central1/instances/test", "createTime": "2022-11-01T14:31:32.416413630Z", "updateTime": "2022-11-01T14:31:32.416413630Z", "labels": { "ldap": "user", "source": "manual" }, "state": "ACTIVE", "hostConfig": { "html": "test-098765432109.us-central1.sourcemanager.dev", "api": "test-098765432109-api.us-central1.sourcemanager.dev", "gitHttp": "test-098765432109-git.us-central1.sourcemanager.dev" } } }
여기서
test-098765432109.us-central1.sourcemanager.dev
은 인스턴스 HTML URL입니다.성공적으로 생성된 확인 상태 명령에서 HTML URL을 복사합니다. 웹 인터페이스를 통해 인스턴스에 액세스하려면 이 URL이 필요합니다.
-
웹 인터페이스를 통해 Secure Source Manager 인스턴스에 액세스하려면 다음 URL을 브라우저 주소 표시줄에 복사합니다.
INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev
다음을 바꿉니다.
- INSTANCE_ID을 인스턴스 이름으로 바꿉니다.
- PROJECT_NUMBER를 인스턴스의 Google Cloud 프로젝트 번호로 바꿉니다. 프로젝트 식별에 대한 자세한 내용은 프로젝트 식별을 참고하세요.
- LOCATION을 인스턴스의 리전으로 바꿉니다.
sourcemanager.dev
에 Google 계정 액세스 권한을 부여할지 묻는 OAuth 화면이 표시됩니다.허용 버튼을 클릭합니다.
Secure Source Manager 웹 인터페이스가 열립니다. 웹 인터페이스에서 저장소와 연결된 모든 문제 및 풀 요청을 만들고 볼 수 있습니다.
필요한 역할
Secure Source Manager 인스턴스를 만드는 데 필요한 권한을 얻으려면 관리자에게 Google Cloud 프로젝트에 대한 Secure Source Manager 인스턴스 소유자 (roles/securesourcemanager.instanceOwner
) IAM 역할을 부여해 달라고 요청하세요.
Secure Source Manager 역할은 주 구성원에게 부여될 때까지 Google Cloud 콘솔에 표시되지 않습니다. Secure Source Manager 역할을 처음 부여하려면 IAM 역할 부여 및 취소를 참고하세요.
데이터 암호화
기본적으로 Google Cloud 는 Google에서 관리하는 암호화 키를 사용하여 저장 데이터를 자동으로 암호화합니다. 데이터를 보호하는 키와 관련된 특정 규정 준수 또는 규제 요구사항이 있으면 고객 관리 암호화 키 (CMEK)로 암호화된 Secure Source Manager 인스턴스를 만들 수 있습니다.
인스턴스 ID 또는 라벨 키-값 쌍에는 민감한 정보를 저장하지 마세요. CMEK로 암호화되지 않기 때문입니다.
프로젝트에서 첫 번째 Secure Source Manager 인스턴스를 만드는 경우 다음 명령어를 실행하여 Secure Source Manager 서비스 에이전트를 수동으로 만들어야 합니다.
gcloud beta services identity create \
--service=securesourcemanager.googleapis.com \
--project=PROJECT_ID
여기서 PROJECT_ID
는 Secure Source Manager 인스턴스를 만들 프로젝트의 프로젝트 ID입니다.
제품별, 프로젝트별 서비스 계정 (P4SA)을 만든 후에는 보안 소스 관리자 서비스 에이전트 역할(roles/securesourcemanager.serviceAgent
)을 보안 주체 service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com에 부여해야 합니다. 그렇지 않으면 인스턴스 생성이 실패합니다.
인스턴스 만들기
인스턴스를 만들려면 다음 안내를 따르세요.
gcloud CLI
API
인스턴스에 액세스
인스턴스가 생성되면 브라우저를 사용하여 웹 인터페이스를 통해 액세스할 수 있습니다.
인스턴스에서 저장소를 만들려면 인스턴스 프로젝트에 저장소 생성자 역할 (roles/securesourcemanager.repoCreator
)이 있어야 하고 Secure Source Manager 인스턴스에 인스턴스 저장소 생성자 역할(roles/securesourcemanager.instanceRepositoryCreator
)이 있어야 합니다.