Google CLI를 사용하여 개인 키 만들기
GCP에 대한 VSB 계획을 만들려면 UDP 콘솔에 개인 키가 필요합니다.
새 키를 만들려면 먼저 gcloud CLI를 설치하고 초기화해야 합니다. 아래 링크에 언급된 단계에 따라 관리자 권한으로 CLI 도구를 설치하고 초기화합니다.
- Google Cloud CLI를 설치하는 방법에 대한 지침을 보려면 여기를 클릭하십시오.
- Google Cloud CLI를 초기화하는 방법에 대한 지침을 보려면 여기를 클릭하십시오.
동일한 환경에서 gcloud를 설치하고 초기화한 후, 다음 단계에 따라 키를 수동으로 만들거나 Windows powershell 스크립트 gcp_auth_key_create.ps1을 실행합니다.
- gcloud 도구를 설치하고 초기화한 후, 다음을 수행합니다.
- "gcloud --version" 명령으로 버전을 확인하여 gcloud 도구가 설치되었는지 테스트하고 확인합니다.
- 초기화하는 동안, 조직을 완전히 제어할 수 있는 관리자 계정을 사용하여 gcloud에서 인증하여 특정 프로젝트에 연결합니다.
- "gcloud config set project PROJECT_ID" 명령을 사용하여 VSB 인스턴스를 만들어야 하는 프로젝트를 설정합니다. 여기서 PROJECT_ID는 조직에서 사용할 수 있는 유효한 프로젝트입니다.
- gcloud를 사용하여 VSB 관련 태스크를 허용하는 프로젝트의 사용자 지정 역할을 만들어 사용자의 프로젝트에 대한 액세스를 구성합니다.
- 서비스 계정을 만들려면 다음 값을 대체하고 아래에 제공된 명령을 실행합니다.
- SA_NAME: 원하는 서비스 계정 이름.
- DISPLAY_NAME: Google Cloud Console에 표시할 서비스 계정 이름.
- 서비스 계정 전자 메일 주소를 가져오고 다음 명령을 실행합니다.
- 다음을 대체합니다.
- DISPLAY_NAME: 3단계에서 제공한 표시 이름.
- 위 명령의 출력에서 서비스 계정 전자 메일 주소를 기록해 둡니다. 이 주소는 다음과 같은 형식이며 나머지 단계에서 SA_EMAIL로 표시됩니다.
- SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- JSON 키 파일을 만들고 다운로드하려면 다음 값을 대체하고 아래에 제공된 명령을 실행합니다.
- KEY_FILE: 개인 키에 대한 새 출력 파일의 경로(예: c:\gcp-private-key.json or ~/sa-private-key.json).
- SA_EMAIL: 5단계에서 기록한 서비스 계정 전자 메일 주소로, SA_NAME@PROJECT_ID.iam.gserviceaccount.com에서 SA_NAME은 키를 만들 서비스 계정의 이름이고 PROJECT_ID는 Google Cloud 프로젝트 ID입니다.
- JSON 키 파일에는 나중에 UDP 콘솔 내에서 필요한 개인 키가 포함되어 있습니다.
- VSB 태스크에 필요한 아래 69개 권한을 포함하는 사용자 지정 역할을 만들려면 다음 값을 대체하고 명령을 실행합니다.
- PROJECT_ID: Google Cloud 프로젝트 ID.
- ROLE_NAME: 원하는 역할 이름.
- 이 명령은 프로젝트 내에 ROLE_NAME이라는 사용자 지정 역할을 만듭니다. 역할의 전체 이름은 위 명령의 출력으로 나열되며, 역할 이름 형식은 projects/PROJECT_ID/roles/ROLE_NAME입니다.
- 사용자 지정 역할 ROLE_NAME을 서비스 계정 SA_NAME에 결합하려면 다음 값을 대체하고 아래에 제공된 명령을 실행합니다.
- PROJECT_ID: Google Cloud 프로젝트 ID.
- ROLE_FULL_NAME: 이전 6단계에 나열된 역할의 전체 이름으로, projects/PROJECT_ID/roles/ROLE_NAME 형식에서 ROLE_NAME은 이전 단계에서 사용한 이름이고 PROJECT_ID는 Google Cloud 프로젝트 ID입니다.
- SA_EMAIL: 이전 단계에서 기록한 서비스 계정 전자 메일 주소로, SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식에서 SA_NAME은 키를 만들 서비스 계정의 이름이고 PROJECT_ID는 Google Cloud 프로젝트 ID입니다.
- UDP 콘솔에서, 5단계에서 다운로드한 이 서비스 계정 JSON 키 파일을 사용하여 GCP에 대한 VSB계획을 만듭니다.
gcloud iam service-accounts create SA_NAME --display-name="DISPLAY_NAME"
gcloud iam service-accounts list --filter "displayName=DISPLAY_NAME"
gcloud iam service-accounts keys create KEY_FILE --iam-account=SA_EMAIL
gcloud iam roles create ROLE_NAME --project PROJECT_ID –permissions=
compute.addresses.list,compute.addresses.use,compute.disks.create,compute.disks.createSnapshot,
compute.disks.delete,compute.disks.get,compute.disks.use,compute.firewallPolicies.create,compute.firewallPolicies.delete,
compute.firewallPolicies.get,compute.firewallPolicies.list,compute.firewallPolicies.update,compute.firewallPolicies.use,
compute.firewalls.create,compute.firewalls.delete,compute.firewalls.get,compute.firewalls.list,compute.firewalls.update,
compute.globalOperations.get,compute.images.useReadOnly,compute.instances.addAccessConfig,
compute.instances.attachDisk,compute.instances.create,compute.instances.delete,compute.instances.deleteAccessConfig,
compute.instances.detachDisk,compute.instances.list,compute.instances.setMetadata,compute.instances.setServiceAccount,
compute.instances.start,compute.instances.stop,compute.instances.update,compute.instances.updateDisplayDevice,compute.machineTypes.list,compute.networks.access,
compute.networks.create,compute.networks.delete,compute.networks.get,compute.networks.getEffectiveFirewalls,compute.networks.list,compute.networks.update,
compute.networks.use,compute.networks.useExternalIp,compute.regionOperations.get,compute.snapshots.create,compute.snapshots.delete,compute.snapshots.get,
compute.snapshots.useReadOnly,compute.subnetworks.create,compute.subnetworks.delete,compute.subnetworks.get,compute.subnetworks.list,compute.subnetworks.update,
compute.subnetworks.use,compute.subnetworks.useExternalIp,compute.zoneOperations.get,compute.zones.list,iam.serviceAccounts.actAs,iam.serviceAccounts.get,iam.serviceAccounts.list,
resourcemanager.projects.get,serviceusage.services.use,storage.buckets.create,storage.buckets.enableObjectRetention,storage.buckets.list,storage.objects.create,storage.objects.delete,
storage.objects.get,storage.objects.list
참고: 역할은 권한의 모음입니다. 사용자에게 직접 권한을 할당할 수 없으며, 대신 역할을 부여합니다. 사용자에게 역할을 부여하면 해당 역할에 포함된 모든 권한이 부여됩니다.
gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:SA_EMAIL --role=ROLE_FULL_NAME