서비스 계정 및 키

이 문서에서는 VMware용 Anthos 클러스터(GKE On-Prem) 구현에서 클러스터를 만드는 데 필요한 Google Cloud 서비스 계정과 키를 설명합니다.

여기에는 전체 안내가 나와 있습니다. 서비스 계정을 사용하는 방법에 대한 간략한 소개는 서비스 계정(빠른 시작)을 참조하세요.

시작하기 전에

Google Cloud 프로젝트를 만듭니다.

서비스 계정 개요

관리자 클러스터와 사용자 클러스터를 만들기 전에 다음 서비스 계정이 있어야 합니다.

  • 구성요소 액세스 서비스 계정
  • 연결-등록 서비스 계정
  • 연결-에이전트 서비스 계정
  • 로깅-모니터링 서비스 계정

사용 설정하려는 기능에 따라 일부 선택적 서비스 계정이 필요할 수 있습니다.

서비스 계정 및 Google Cloud 프로젝트 이해

서비스 계정을 만들면 Google Cloud 프로젝트와 연결됩니다. 이 Cloud 프로젝트를 서비스 계정의 상위 프로젝트라고 합니다.

서비스 계정의 이메일 주소를 보고 서비스 계정의 상위 프로젝트를 확인할 수 있습니다. 예를 들어 logger라는 서비스 계정의 이메일 주소가 있습니다. 상위 프로젝트는 alice-123입니다.

logger@alice-123.iam.gserviceaccount.com

서비스 계정에 ID 및 액세스 관리(IAM) 역할을 부여하면 특정 Cloud 프로젝트에서 서비스 계정 역할을 부여합니다. 리소스의 ID에 역할을 부여하는 일반적인 패턴을 따릅니다.

예를 들어 bob-456 프로젝트의 logger@alice-123.iam.gserviceaccount.com 서비스 계정에 bigquery.dataEditor 역할을 부여할 수 있습니다. 여기에서 서비스 계정은 ID이고 Google Cloud 프로젝트는 리소스입니다.

서비스 계정의 상위 프로젝트가 아닌 Cloud 프로젝트의 서비스 계정에 역할을 부여할 수 있다는 점을 이해해야 합니다.

서비스 계정에 역할을 부여할 수 있는 권한

각 서비스 계정은 관련 Cloud 프로젝트에 대한 특정 역할을 부여받아야 합니다. 예를 들어 연결-등록 서비스 계정은 연결 프로젝트에 대한 gkehub.admin 역할을 부여받아야 합니다.

Cloud 프로젝트에 역할을 부여하려면 프로젝트에 대한 특정 권한이 있어야 합니다. 자세한 내용은 역할 이해roles/resourcemanager.projectIamAdmin을 참조하세요.

필요한 권한이 있으면 직접 역할을 부여할 수 있습니다. 그렇지 않으면 조직의 다른 사용자가 역할을 부여해야 합니다.

gkeadm을 사용하여 자동으로 서비스 계정 만들기

이 페이지에서는 서비스 계정을 수동으로 만들고 서비스 계정에 역할을 부여하는 방법을 설명합니다. 이러한 단계를 수동으로 실행하는 대신 관리자 워크스테이션을 만들 때 gkeadm으로 일부 서비스 계정을 만들고 역할을 부여할 수 있습니다. 자세한 내용은 관리자 워크스테이션 만들기를 참조하세요.

구성요소 액세스 서비스 계정

VMware용 Anthos 클러스터는 이 서비스 계정을 사용하여 Container Registry에서 클러스터 구성요소를 대신 다운로드합니다.

구성요소 액세스 서비스 계정을 만들려면 다음을 실행합니다.

gcloud iam service-accounts create component-access-sa \
    --display-name "Component Access Service Account" \
    --project PROJECT_ID

PROJECT_ID를 서비스 계정의 상위 프로젝트가 될 Google Cloud 프로젝트의 ID로 바꿉니다.

구성요소 액세스 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.

gcloud iam service-accounts keys create component-access-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 구성요소 액세스 서비스 계정의 이메일 주소로 바꿉니다.

구성요소 액세스 서비스 계정에 역할 부여

관리자 및 사용자 클러스터 구성 파일에는 프로젝트 ID를 지정하는 여러 필드가 있습니다.

관리자 클러스터 구성 파일에서는 다음과 같습니다.

stackdriver:
  projectID: ""
...
cloudAuditLogging:
  projectid: ""

사용자 클러스터 구성 파일에서는 다음과 같습니다.

stackdriver:
  projectID: ""
...
gkeConnect:
  projectID: ""
...
usageMetering:
  bigQueryProjectID: ""
...
cloudAuditLogging:
  projectid: ""

구성 파일의 프로젝트 ID는 고유할 필요가 없습니다. 예를 들어 gkeConnect.projectIDcloudAuditLogging.projectID와 동일할 수 있습니다. 사실, 구성 파일의 모든 프로젝트 ID는 동일할 수 있습니다.

구성요소 액세스 서비스 계정에는 관리자 및 사용자 클러스터 구성 파일에 지정된 각 Cloud 프로젝트에서 다음 IAM 역할을 부여해야 합니다. Anthos clusters on VMware에서 실행 전 검사를 수행할 수 있도록 다음 역할이 필요합니다.

  • serviceusage.serviceUsageViewer
  • iam.serviceAccountCreator
  • iam.roleViewer

클러스터 구성 파일에 지정한 Cloud 프로젝트마다 다음 명령어를 실행하여 구성요소 액세스 서비스 계정에 필요한 역할을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"

다음을 바꿉니다.

  • PROJECT_ID: 구성 파일에 지정한 Cloud 프로젝트 중 하나의 ID입니다.

  • SERVICE_ACCOUNT_EMAIL: 구성요소 액세스 서비스 계정의 이메일 주소입니다.

연결-등록 서비스 계정

VMware용 Anthos 클러스터는 이 서비스 계정을 사용하여 사용자 클러스터를 Google Cloud에 등록합니다.

연결-등록 서비스 계정을 만들려면 다음을 실행합니다.

gcloud iam service-accounts create connect-register-sa \
    --project PROJECT_ID

PROJECT_ID를 연결-등록 서비스 계정의 상위 항목이 될 Cloud 프로젝트의 ID로 바꿉니다.

연결-등록 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.

gcloud iam service-accounts keys create connect-register-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 연결-등록 서비스 계정의 이메일 주소로 바꿉니다.

연결-등록 서비스 계정에는 연결 프로젝트에 대한 gkehub.admin 역할이 부여되어야 합니다. 이는 클러스터를 보고 관리할 Cloud 프로젝트입니다.

연결-등록 서비스 계정에 gkehub.admin 역할을 부여하려면 다음 안내를 따르세요.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/gkehub.admin"

PROJECT_ID를 연결 프로젝트의 ID로 바꿉니다.

연결-에이전트 서비스 계정

Anthos clusters on VMware는 이 서비스 계정을 사용하여 Anthos clusters on VMware와 Google Cloud 간의 연결을 유지합니다.

연결-에이전트 서비스 계정을 만들려면 다음을 실행합니다.

gcloud iam service-accounts create connect-agent-sa \
    --project PROJECT_ID

PROJECT_ID를 연결-에이전트 서비스 계정의 상위 항목이 될 Cloud 프로젝트의 ID로 바꿉니다.

연결-에이전트 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.

gcloud iam service-accounts keys create connect-agent-key.json \
    --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 연결-에이전트 서비스 계정의 이메일 주소로 바꿉니다.

연결-에이전트 서비스 계정에는 연결 프로젝트에 대한 gkehub.connect 역할이 부여되어야 합니다. 이는 클러스터를 보고 관리할 Cloud 프로젝트입니다.

연결-에이전트 서비스 계정에 gkehub.connect 역할을 부여하려면 다음 안내를 따르세요.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/gkehub.connect"

PROJECT_ID를 연결 프로젝트의 ID로 바꿉니다.

로깅-모니터링 서비스 계정

Anthos clusters on VMware는 이 서비스 계정을 사용하여 클러스터의 로그와 측정항목을 Cloud LoggingCloud Monitoring으로 내보냅니다.

로깅-모니터링 서비스 계정을 만들려면 다음을 실행합니다.

gcloud iam service-accounts create logging-monitoring-sa \
    --project=PROJECT_ID

PROJECT_ID를 로깅-모니터링 서비스 계정의 상위 항목이 될 Cloud 프로젝트의 ID로 바꿉니다.

로깅-모니터링 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.

gcloud iam service-accounts keys create logging-monitoring-key.json \
    --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 로깅-모니터링 서비스 계정의 이메일 주소로 바꿉니다.

로깅-모니터링 서비스 계정에는 로깅-모니터링 프로젝트에 대한 다음 역할이 부여되어야 합니다. 이는 클러스터의 로그를 보려는 Cloud 프로젝트입니다.

  • stackdriver.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor

로깅-모니터링 서비스 계정에 필요한 역할을 부여하려면 다음을 실행합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"

PROJECT_ID로깅-모니터링 프로젝트의 ID로 바꿉니다.

선택사항 서비스 계정

사용량 측정 서비스 계정

Anthos clusters on VMware는 이 서비스 계정을 사용하여 BigQuery 데이터 세트에 사용량 데이터를 저장합니다.

사용량 측정 서비스 계정을 만들려면 다음을 실행합니다.

gcloud iam service-accounts create usage-metering-sa \
    --project PROJECT_ID

PROJECT_ID를 사용량 측정 서비스 계정의 상위 항목이 될 Cloud 프로젝트의 ID로 바꿉니다.

사용량 측정 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.

gcloud iam service-accounts keys create usage-metering-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 사용량 측정 서비스 계정의 이메일 주소로 바꿉니다.

사용량 측정 서비스 계정에는 사용량 측정 프로젝트에 대한 bigquery.dataEditor 역할이 부여되어 있어야 합니다. 이는 사용자 클러스터의 사용 데이터를 보려는 Cloud 프로젝트입니다.

사용량 측정 서비스 계정에 bigquery.dataEditor 역할을 부여하려면 다음 안내를 따르세요.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/bigquery.dataEditor"

PROJECT_ID를 사용량 측정 프로젝트의 ID로 바꿉니다.

감사 로깅 서비스 계정

Anthos clusters on VMware는 이 서비스 계정을 사용하여 클러스터의 Kubernetes 감사 로그를 Cloud 감사 로그로 전송합니다.

감사 로깅 서비스 계정을 만들려면 다음을 실행합니다.

gcloud iam service-accounts create audit-logging-sa \
    --project PROJECT_ID

PROJECT_ID를 감사 로깅 서비스 계정의 상위 항목이 될 Cloud 프로젝트의 ID로 바꿉니다.

감사 로깅 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.

gcloud iam service-accounts keys create audit-logging-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 감사 로깅 서비스 계정의 이메일 주소로 바꿉니다.

감사 로깅 서비스 계정에 역할을 부여할 필요가 없습니다.

Binary Authorization 서비스 계정

Anthos clusters on VMware는 이 서비스 계정을 사용하여 Binary Authorization API를 호출합니다.

Binary Authorization 서비스 계정을 만드는 방법에 대한 자세한 내용은 GKE On-Prem의 Binary Authorization을 참조하세요.

다음 단계

관리자 워크스테이션 만들기