2.5. GCP에서 서비스 계정 생성
OpenShift Container Platform에는 Google API의 데이터에 액세스하기 위한 인증 및 승인을 제공하는 GCP(Google Cloud Platform) 서비스 계정이 필요합니다. 프로젝트에 필요한 역할이 포함된 기존 IAM 서비스 계정이 없으면 새로 생성해야 합니다.
사전 요구 사항
- 클러스터를 호스팅할 프로젝트 생성을 완료했습니다.
프로세스
- OpenShift Container Platform 클러스터를 호스팅하는 데 사용하는 프로젝트에 서비스 계정을 생성합니다. GCP 문서의 서비스 계정 생성 단원을 참조하십시오.
서비스 계정에 적절한 권한을 부여합니다. 뒤따르는 개별 권한을 부여하거나
Owner역할을 할당할 수 있습니다. 서비스 계정에 특정 리소스에 대한 역할 부여를 참조하십시오.참고서비스 계정을 프로젝트 소유자로 지정하는 것은 가장 쉽게 필요한 권한을 얻는 방법이며, 서비스 계정으로 프로젝트를 완전히 제어할 수 있음을 의미합니다. 해당 권한을 제공하는 데 따른 위험이 수용 가능한 수준인지 확인해봐야 합니다.
JSON 형식으로 서비스 계정 키를 생성하거나 서비스 계정을 GCP 가상 머신에 연결할 수 있습니다. GCP 문서의 서비스 계정 키 생성 및 서비스 계정 생성 및 활성화를 참조하십시오.
참고연결된 서비스 계정이 있는 가상 머신을 사용하여 클러스터를 생성하는 경우 설치 전에
install-config.yaml파일에서credentialsMode: Manual을 설정해야 합니다.
2.5.1. 필수 GCP 역할 링크 복사링크가 클립보드에 복사되었습니다!
생성하는 서비스 계정에 Owner 역할을 연결하면 OpenShift Container Platform 설치에 필요한 권한을 포함하여 모든 권한이 해당 서비스 계정에 부여됩니다. 조직의 보안 정책에 보다 제한적인 권한 세트가 필요한 경우 다음 권한으로 서비스 계정을 생성할 수 있습니다. 기존 VPC(가상 프라이빗 클라우드)에 클러스터를 배포하는 경우 다음 목록에 명시된 특정 네트워킹 권한이 서비스 계정에 필요하지 않습니다.
설치 프로그램에 필요한 역할
- 컴퓨팅 관리자
- 역할 관리자
- 보안 관리자
- 서비스 계정 관리자
- 서비스 계정 키 관리자
- 서비스 계정 사용자
- 스토리지 관리자
설치 과정에서 네트워크 리소스를 생성하는 데 필요한 역할
- DNS 관리자
passthrough 모드에서 Cloud Credential Operator를 사용하는 데 필요한 역할
- Compute Load Balancer 관리자
다음 역할은 컨트롤 플레인 및 컴퓨팅 시스템에서 사용하는 서비스 계정에 적용됩니다.
| 계정 | 역할 |
|---|---|
| 컨트롤 플레인 |
|
|
| |
|
| |
|
| |
|
| |
| 컴퓨팅 |
|
|
| |
|
|
2.5.2. 설치 관리자 프로비저닝 인프라에 필요한 GCP 권한 링크 복사링크가 클립보드에 복사되었습니다!
생성하는 서비스 계정에 Owner 역할을 연결하면 OpenShift Container Platform 설치에 필요한 권한을 포함하여 모든 권한이 해당 서비스 계정에 부여됩니다.
조직의 보안 정책에 보다 제한적인 권한 세트가 필요한 경우 필요한 권한으로 사용자 지정 역할을 생성할 수 있습니다. OpenShift Container Platform 클러스터를 생성하고 삭제하기 위해 설치 관리자 프로비저닝 인프라에는 다음 권한이 필요합니다.
예 2.1. 네트워크 리소스 생성에 필요한 권한
-
compute.addresses.create -
compute.addresses.createInternal -
compute.addresses.delete -
compute.addresses.get -
compute.addresses.list -
compute.addresses.use -
compute.addresses.useInternal -
compute.firewalls.create -
compute.firewalls.delete -
compute.firewalls.get -
compute.firewalls.list -
compute.forwardingRules.create -
compute.forwardingRules.get -
compute.forwardingRules.list -
compute.forwardingRules.setLabels -
compute.globalAddresses.create -
compute.globalAddresses.get -
compute.globalAddresses.use -
compute.globalForwardingRules.create -
compute.globalForwardingRules.get -
compute.networks.create -
compute.networks.get -
compute.networks.list -
compute.networks.updatePolicy -
compute.networks.use -
compute.routers.create -
compute.routers.get -
compute.routers.list -
compute.routers.update -
compute.routes.list -
compute.subnetworks.create -
compute.subnetworks.get -
compute.subnetworks.list -
compute.subnetworks.use -
compute.subnetworks.useExternalIp
예 2.2. 로드 밸런서 리소스 생성에 필요한 권한
-
compute.backendServices.create -
compute.backendServices.get -
compute.backendServices.list -
compute.backendServices.update -
compute.backendServices.use -
compute.regionBackendServices.create -
compute.regionBackendServices.get -
compute.regionBackendServices.list -
compute.regionBackendServices.update -
compute.regionBackendServices.use -
compute.targetPools.addInstance -
compute.targetPools.create -
compute.targetPools.get -
compute.targetPools.list -
compute.targetPools.removeInstance -
compute.targetPools.use -
compute.targetTcpProxies.create -
compute.targetTcpProxies.get -
compute.targetTcpProxies.use
예 2.3. DNS 리소스 생성에 필요한 권한
-
dns.changes.create -
dns.changes.get -
dns.managedZones.create -
dns.managedZones.get -
dns.managedZones.list -
dns.networks.bindPrivateDNSZone -
dns.resourceRecordSets.create -
dns.resourceRecordSets.list
예 2.4. 서비스 계정 리소스 생성에 필요한 권한
-
iam.serviceAccountKeys.create -
iam.serviceAccountKeys.delete -
iam.serviceAccountKeys.get -
iam.serviceAccountKeys.list -
iam.serviceAccounts.actAs -
iam.serviceAccounts.create -
iam.serviceAccounts.delete -
iam.serviceAccounts.get -
iam.serviceAccounts.list -
resourcemanager.projects.get -
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
예 2.5. 컴퓨팅 리소스 생성에 필요한 권한
-
compute.disks.create -
compute.disks.get -
compute.disks.list -
compute.disks.setLabels -
compute.instanceGroups.create -
compute.instanceGroups.delete -
compute.instanceGroups.get -
compute.instanceGroups.list -
compute.instanceGroups.update -
compute.instanceGroups.use -
compute.instances.create -
compute.instances.delete -
compute.instances.get -
compute.instances.list -
compute.instances.setLabels -
compute.instances.setMetadata -
compute.instances.setServiceAccount -
compute.instances.setTags -
compute.instances.use -
compute.machineTypes.get -
compute.machineTypes.list
예 2.6. 스토리지 리소스 생성에 필요합니다.
-
storage.buckets.create -
storage.buckets.delete -
storage.buckets.get -
storage.buckets.list -
storage.objects.create -
storage.objects.delete -
storage.objects.get -
storage.objects.list
예 2.7. 상태 점검 리소스 생성에 필요한 권한
-
compute.healthChecks.create -
compute.healthChecks.get -
compute.healthChecks.list -
compute.healthChecks.useReadOnly -
compute.httpHealthChecks.create -
compute.httpHealthChecks.get -
compute.httpHealthChecks.list -
compute.httpHealthChecks.useReadOnly -
compute.regionHealthChecks.create -
compute.regionHealthChecks.get -
compute.regionHealthChecks.useReadOnly
예 2.8. GCP 영역 및 지역 관련 정보를 가져오는 데 필요한 권한
-
compute.globalOperations.get -
compute.regionOperations.get -
compute.regions.get -
compute.regions.list -
compute.zoneOperations.get -
compute.zones.get -
compute.zones.list
예 2.9. 서비스 및 할당량 확인에 필요한 권한
-
monitoring.timeSeries.list -
serviceusage.quotas.get -
serviceusage.services.list
예 2.10. 설치에 필요한 IAM 권한
-
iam.roles.create -
iam.roles.get -
iam.roles.update
예 2.11. 서비스 계정 키 없이 인증할 때 필요한 권한
-
iam.serviceAccounts.signBlob
예 2.12. 설치에 대한 선택적 이미지 권한
-
compute.images.list
예 2.13. 수집 부트스트랩을 실행하기 위한 선택적 권한
-
compute.instances.getSerialPortOutput
예 2.14. 네트워크 리소스 삭제에 필요한 권한
-
compute.addresses.delete -
compute.addresses.deleteInternal -
compute.addresses.list -
compute.addresses.setLabels -
compute.firewalls.delete -
compute.firewalls.list -
compute.forwardingRules.delete -
compute.forwardingRules.list -
compute.globalAddresses.delete -
compute.globalAddresses.list -
compute.globalForwardingRules.delete -
compute.globalForwardingRules.list -
compute.networks.delete -
compute.networks.list -
compute.networks.updatePolicy -
compute.routers.delete -
compute.routers.list -
compute.routes.list -
compute.subnetworks.delete -
compute.subnetworks.list
예 2.15. 로드 밸런서 리소스를 삭제하는 데 필요한 권한
-
compute.backendServices.delete -
compute.backendServices.list -
compute.regionBackendServices.delete -
compute.regionBackendServices.list -
compute.targetPools.delete -
compute.targetPools.list -
compute.targetTcpProxies.delete -
compute.targetTcpProxies.list
예 2.16. DNS 리소스 삭제에 필요한 권한
-
dns.changes.create -
dns.managedZones.delete -
dns.managedZones.get -
dns.managedZones.list -
dns.resourceRecordSets.delete -
dns.resourceRecordSets.list
예 2.17. 서비스 계정 리소스 삭제에 필요한 권한
-
iam.serviceAccounts.delete -
iam.serviceAccounts.get -
iam.serviceAccounts.list -
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
예 2.18. 컴퓨팅 리소스 삭제에 필요한 권한
-
compute.disks.delete -
compute.disks.list -
compute.instanceGroups.delete -
compute.instanceGroups.list -
compute.instances.delete -
compute.instances.list -
compute.instances.stop -
compute.machineTypes.list
예 2.19. 스토리지 리소스 삭제에 필요합니다.
-
storage.buckets.delete -
storage.buckets.getIamPolicy -
storage.buckets.list -
storage.objects.delete -
storage.objects.list
예 2.20. 상태 점검 리소스 삭제에 필요한 권한
-
compute.healthChecks.delete -
compute.healthChecks.list -
compute.httpHealthChecks.delete -
compute.httpHealthChecks.list -
compute.regionHealthChecks.delete -
compute.regionHealthChecks.list
예 2.21. 삭제에 필요한 이미지 권한
-
compute.images.list
2.5.3. 공유 VPC 설치에 필요한 GCP 권한 링크 복사링크가 클립보드에 복사되었습니다!
공유 VPC 에 클러스터를 설치하는 경우 호스트 프로젝트와 서비스 프로젝트 모두에 대한 서비스 계정을 구성해야 합니다. 공유 VPC에 설치하지 않는 경우 이 섹션을 생략할 수 있습니다.
위에 나열된 대로 표준 설치에 필요한 최소 역할을 서비스 프로젝트에 적용해야 합니다.
수동 또는 mint 인증 정보 모드에서 작동하는 Cloud Credential Operator에 대한 세분화된 권한을 사용할 수 있습니다. passthrough 인증 정보 모드에서는 세분화된 권한을 사용할 수 없습니다.
호스트 프로젝트가 다음 구성 중 하나를 서비스 계정에 적용하는지 확인합니다.
예 2.22. 호스트 프로젝트에서 방화벽을 생성하는 데 필요한 권한
-
projects/<host-project>/roles/dns.networks.bindPrivateDNSZone -
roles/compute.networkAdmin -
roles/compute.securityAdmin
예 2.23. 필요한 최소 권한
-
projects/<host-project>/roles/dns.networks.bindPrivateDNSZone -
roles/compute.networkUser