테넌트 프로젝트 및 리소스 설정

이 가이드에서는 SaaS 런타임 테넌트를 사용하여 배포된 단위를 구성하는 방법과 리소스를 별도의 테넌트 프로젝트에 배포하여 리소스를 격리하고 관리하는 방법을 설명합니다.

테넌트 및 테넌트 프로젝트 개요는 테넌트 및 테넌트 프로젝트를 참고하세요.

시작하기 전에

테넌트 프로젝트 또는 리소스를 만들기 전에 다음을 확인하세요.

  1. Terraform 구성과 Artifact Registry 저장소를 만들고 프로듀서 프로젝트에 SaaS 애플리케이션이 포함된 아티팩트를 만듭니다. SaaS 제품을 설정하는 방법을 알아보려면 SaaS 런타임으로 서비스 인스턴스 배포를 참고하세요.
  2. SaaS 런타임에 필요한 API를 사용 설정합니다.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  3. 생산자 프로젝트 내에 필요한 서비스 계정 및 Identity and Access Management 역할이 부여되어 있는지 확인합니다. 여기에는 사용자 생성 서비스 계정과 프로듀서 프로젝트의 service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com 계정에 부여된 권한이 포함됩니다.

테넌트 프로젝트 설정

테넌트의 리소스를 별도의 프로젝트에 프로비저닝하면 리소스, IAM 정책, 할당량, 네트워크 구성이 테넌트별로 분리되므로 한 테넌트의 위반이나 잘못된 구성이 다른 테넌트에 영향을 미칠 가능성이 줄어듭니다.

준비사항:

  • 하나의 프로듀서 프로젝트
  • 테넌트마다 하나의 테넌트 프로젝트

콘솔

Google Cloud 콘솔을 사용하여 테넌트 및 프로듀서 프로젝트를 설정하려면 다음 단계를 따르세요.

  1. 각 테넌트의 제작자 프로젝트와 테넌트 프로젝트를 만듭니다.
  2. 테넌트 및 프로듀서 프로젝트에서 결제를 사용 설정합니다.
  3. 테넌트 프로젝트에서 SaaS 런타임에 필요한 API를 사용 설정합니다.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. 테넌트 프로젝트에 필요한 권한이 있는 작동 서비스 계정이 있는지 확인합니다.

    자세한 내용은 SaaS 런타임 서비스 계정을 참고하세요.

테넌트 및 프로듀서 프로젝트를 설정했습니다. 프로듀서 및 테넌트 프로젝트에 대해 청구를 만들고 사용 설정하면 테넌트 리소스를 만들고 단위를 테넌트와 연결할 수 있습니다.

gcloud

Google Cloud CLI를 사용하여 프로듀서 및 테넌트 프로젝트를 설정하려면 다음 단계를 따르세요.

  1. 프로듀서 프로젝트와 각 테넌트의 테넌트 프로젝트를 만듭니다.

    gcloud projects create PRODUCER_PROJECT_ID --name="SaaS producer project" [--folder=folder-id]
    gcloud projects create TENANT_PROJECT_ID --name="SaaS tenant A project" [--folder=folder-id]
    

    다음과 같이 바꿉니다.

    • PRODUCER_PROJECT_ID: 프로듀서 프로젝트 ID를 나타내는 문자열 식별자입니다.
    • TENANT_PROJECT_ID: 테넌트 프로젝트 ID를 나타내는 문자열 식별자입니다.
  2. 테넌트 및 프로듀서 프로젝트에 결제를 사용 설정합니다.

     gcloud beta billing projects link PRODUCER_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
     gcloud beta billing projects link TENANT_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
    

    다음과 같이 바꿉니다.

    • PRODUCER_PROJECT_ID: 프로듀서 프로젝트 ID를 나타내는 문자열 식별자입니다.
    • TENANT_PROJECT_ID: 테넌트 프로젝트 ID를 나타내는 문자열 식별자입니다.
    • BILLING_ACCOUNT_ID: 지정된 프로젝트와 연결할 결제 계정의 ID입니다.
  3. 각 테넌트 프로젝트에 대해 필요한 Identity and Access Management 역할을 작동 서비스 계정에 부여합니다.

     gcloud projects add-iam-policy-binding TENANT_PROJECT_ID \
     --member='serviceAccount:SERVICE_ACCOUNT@PRODUCER_PROJECT_ID.iam.gserviceaccount.com' \
     --role=ROLE
    

    다음과 같이 바꿉니다.

    • TENANT_PROJECT_ID: 테넌트 프로젝트 ID를 나타내는 문자열 식별자입니다.
    • PRODUCER_PROJECT_ID: 프로듀서 프로젝트 ID를 나타내는 문자열 식별자입니다.
    • SERVICE_ACCOUNT: 지정된 프로젝트 내에서 역할을 부여할 서비스 계정입니다.
    • ROLE: 부여할 Identity and Access Management 역할입니다.

      지정된 서비스 계정 (예: --role='roles/compute.admin')에 부여할 각 역할에 대해 gcloud projects add-iam-policy-binding를 실행해야 합니다.

테넌트 및 프로듀서 프로젝트를 설정했습니다. 프로듀서 및 테넌트 프로젝트에 대해 청구를 만들고 사용 설정하면 테넌트 리소스를 만들고 단위를 테넌트와 연결할 수 있습니다.

테넌트 리소스 만들기

SaaS 제품에서 테넌트 리소스를 만들어 고객을 나타냅니다.

  1. Google Cloud 콘솔에서 SaaS 런타임 > 테넌트로 이동합니다.

    테넌트로 이동

  2. 만들기를 클릭합니다.

  3. 테넌트 이름 상자에 테넌트 리소스의 이름을 입력합니다.

  4. 선택사항: 고객 리소스 상자에 통합을 위한 소비자 정의 설정이 있는 소비자 리소스를 제공합니다.

  5. SaaS 제품 상자에서 테넌트와 연결할 SaaS 제품을 선택합니다.

  6. 리전 드롭다운에서 테넌트 메타데이터가 저장될 리전을 선택합니다.

  7. 선택사항: 라벨 추가를 클릭하여 테넌트에 키-값 쌍 라벨을 추가합니다.

  8. 만들기를 클릭하여 테넌트 리소스를 만듭니다.

테넌트 리소스를 만들었습니다.

단위를 테넌트와 연결

테넌트를 만들고 단위를 배포한 후에는 서로 연결할 수 있습니다. 이 연결은 주로 어떤 단위가 어떤 테넌트에 속하는지 정리하는 데 도움이 되는 조직 태그로 사용됩니다.

단위 배포에 관한 자세한 내용은 SaaS 런타임으로 VM 배포를 참고하세요.

단위를 테넌트에 연결하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 SaaS 런타임 > 테넌트로 이동합니다.

    테넌트로 이동

  2. 단위에 연결할 테넌트의 이름을 클릭합니다.

  3. 수정을 클릭합니다.

  4. 연결된 단위 섹션에서 단위 추가를 클릭합니다.

  5. 이 테넌트에 연결할 단위를 선택합니다.

  6. 완료를 클릭합니다.

  7. 저장을 클릭합니다.

선택한 단위가 표시된 테넌트와 연결됩니다.

테넌트 프로젝트 변수를 사용하여 새 유닛 프로비저닝

테넌트와 연결된 유닛을 프로비저닝할 때는 tenant_project_id 변수를 제공해야 합니다.

  1. Google Cloud 콘솔에서 SaaS 런타임 > 단위로 이동합니다.

    단위로 이동

  2. 단위 종류와 연결된 새 단위를 만듭니다.

  3. 프로비저닝을 클릭합니다.

  4. 출시를 선택하여 테넌트 단위에 프로비저닝합니다.

  5. 테넌트 프로젝트에서 권한을 부여한 작동 서비스 계정을 선택합니다. 최소 권한의 원칙을 따르고 관리되는 리소스에 필요한 역할만 부여해야 합니다.

  6. 입력 변수 섹션에서 다음을 수행합니다.

    1. Terraform 구성 variables.tf 파일에 정의한 대로 tenant_project_id 변수가 나열되어 있는지 확인합니다.
    2. Tenant Project ID 상자에 테넌트 프로젝트의 이름을 입력합니다.
    3. Terraform 구성에 정의된 입력 변수를 제공합니다. Terraform 구성에 다른 변수를 정의하지 않은 경우 이 단계를 건너뛰세요.
  7. 프로비저닝을 클릭합니다.

SaaS 런타임은 지정된 작동 서비스 계정을 사용하여 Infrastructure Manager를 트리거합니다. Infrastructure Manager는 tenant_project_id 변수를 읽고 해당 테넌트 프로젝트 내에 VM을 만듭니다.

새 출시 버전으로 단위 다시 프로비저닝

새 출시로 기존 단위를 다시 프로비저닝할 때는 tenant_project_id 변수를 제공해야 합니다.

  1. Google Cloud 콘솔에서 SaaS 런타임 > 단위로 이동합니다.

    단위로 이동

  2. 단위 종류와 연결된 단위를 선택합니다.

  3. 프로비저닝 수정을 클릭합니다.

  4. 업데이트된 Terraform 구성으로 만든 버전을 선택합니다.

  5. 테넌트 프로젝트에서 권한을 부여한 작동 서비스 계정을 선택합니다. 최소 권한의 원칙을 따르고 관리되는 리소스에 필요한 역할만 부여해야 합니다.

  6. 입력 변수 섹션에서 다음을 수행합니다.

    1. Terraform 구성 variables.tf 파일에 정의한 대로 tenant_project_id 변수가 나열되어 있는지 확인합니다.
    2. Tenant Project ID 상자에 테넌트 프로젝트의 이름을 입력합니다.
    3. Terraform 구성에 정의된 입력 변수를 제공합니다. Terraform 구성에 다른 변수를 정의하지 않은 경우 이 단계를 건너뛰세요.
  7. 업데이트를 클릭합니다.

SaaS 런타임은 지정된 작동 서비스 계정을 사용하여 Infrastructure Manager를 트리거합니다. Infrastructure Manager는 tenant_project_id 변수를 읽고 해당 테넌트 프로젝트 내에 VM을 만듭니다.

다음 단계