Secure Source Manager 인스턴스 만들기

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

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

VPC 서비스 제어가 사용 설정된 인스턴스를 만들려면 VPC 서비스 제어 경계에서 Secure Source Manager 구성을 참고하세요.

시작하기 전에

  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. 필요한 역할

    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

    1. 다음 명령어를 실행하여 인스턴스를 만듭니다. 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-a9b97a2eOPERATION_NAME입니다.

      인스턴스를 만드는 데 최대 60분이 걸립니다.

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

    3. 다음 명령어를 실행하여 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입니다.

    4. 성공적으로 생성된 확인 상태 명령에서 HTML URL을 복사합니다. 웹 인터페이스를 통해 인스턴스에 액세스하려면 이 URL이 필요합니다.

    API

    1. 다음 명령어를 실행하여 인스턴스를 만듭니다. 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-a9b97a2eOPERATION_NAME입니다.

      인스턴스를 만드는 데 최대 60분이 걸립니다.

    2. OPERATION_NAME을 복사합니다.

    3. 다음 명령어를 실행하여 생성 작업의 상태를 확인합니다.

      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입니다.

    4. 성공적으로 생성된 확인 상태 명령에서 HTML URL을 복사합니다. 웹 인터페이스를 통해 인스턴스에 액세스하려면 이 URL이 필요합니다.

    인스턴스에 액세스

    인스턴스가 생성되면 브라우저를 사용하여 웹 인터페이스를 통해 액세스할 수 있습니다.

    인스턴스에서 저장소를 만들려면 인스턴스 프로젝트에 저장소 생성자 역할 (roles/securesourcemanager.repoCreator)이 있어야 하고 Secure Source Manager 인스턴스에 인스턴스 저장소 생성자 역할(roles/securesourcemanager.instanceRepositoryCreator)이 있어야 합니다.

    1. 웹 인터페이스를 통해 Secure Source Manager 인스턴스에 액세스하려면 다음 URL을 브라우저 주소 표시줄에 복사합니다.

      INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

      다음을 바꿉니다.

      • INSTANCE_ID을 인스턴스 이름으로 바꿉니다.
      • PROJECT_NUMBER를 인스턴스의 Google Cloud 프로젝트 번호로 바꿉니다. 프로젝트 식별에 대한 자세한 내용은 프로젝트 식별을 참고하세요.
      • LOCATION을 인스턴스의 리전으로 바꿉니다.

    2. sourcemanager.dev에 Google 계정 액세스 권한을 부여할지 묻는 OAuth 화면이 표시됩니다.

    3. 허용 버튼을 클릭합니다.

    4. Secure Source Manager 웹 인터페이스가 열립니다. 웹 인터페이스에서 저장소와 연결된 모든 문제 및 풀 요청을 만들고 볼 수 있습니다.

    다음 단계