2.5. GCP에서 서비스 계정 생성


OpenShift Container Platform에는 Google API의 데이터에 액세스하기 위한 인증 및 승인을 제공하는 GCP(Google Cloud Platform) 서비스 계정이 필요합니다. 프로젝트에 필요한 역할이 포함된 기존 IAM 서비스 계정이 없으면 새로 생성해야 합니다.

사전 요구 사항

  • 클러스터를 호스팅할 프로젝트 생성을 완료했습니다.

프로세스

  1. OpenShift Container Platform 클러스터를 호스팅하는 데 사용하는 프로젝트에 서비스 계정을 생성합니다. GCP 문서의 서비스 계정 생성 단원을 참조하십시오.
  2. 서비스 계정에 적절한 권한을 부여합니다. 뒤따르는 개별 권한을 부여하거나 Owner 역할을 할당할 수 있습니다. 서비스 계정에 특정 리소스에 대한 역할 부여를 참조하십시오.

    참고

    서비스 계정을 프로젝트 소유자로 지정하는 것은 가장 쉽게 필요한 권한을 얻는 방법이며, 서비스 계정으로 프로젝트를 완전히 제어할 수 있음을 의미합니다. 해당 권한을 제공하는 데 따른 위험이 수용 가능한 수준인지 확인해봐야 합니다.

  3. 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.4. GCP 서비스 계정 역할
계정역할

컨트롤 플레인

roles/compute.instanceAdmin

roles/compute.networkAdmin

roles/compute.securityAdmin

roles/storage.admin

roles/iam.serviceAccountUser

컴퓨팅

roles/compute.viewer

roles/storage.admin

roles/artifactregistry.reader

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.globalForwardingRules.setLabels
  • 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. 호스트 프로젝트에서 방화벽 삭제에 필요한 권한

  • compute.firewalls.delete
  • compute.networks.updatePolicy

예 2.24. 필요한 최소 권한

  • projects/<host-project>/roles/dns.networks.bindPrivateDNSZone
  • roles/compute.networkUser

install-config.yaml 파일에 컨트롤 플레인 노드에 대한 서비스 계정을 제공하지 않으면 호스트 프로젝트의 서비스 계정에 아래 권한을 부여하십시오. install-config.yaml 파일에 컴퓨팅 노드에 대한 서비스 계정을 제공하지 않는 경우 클러스터 삭제를 위해 호스트 프로젝트의 서비스 계정에 아래 권한을 부여하십시오.

  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

2.5.4. 사용자 제공 서비스 계정에 필요한 GCP 권한

클러스터를 설치할 때 컴퓨팅 및 컨트롤 플레인 노드에는 자체 서비스 계정이 필요합니다. 기본적으로 설치 프로그램은 컨트롤 플레인 및 컴퓨팅 노드에 대한 서비스 계정을 생성합니다. 설치 프로그램에서 사용하는 서비스 계정에는 GCP 섹션에서 서비스 계정 생성 섹션과 resourcemanager.projects.getIamPolicyresourcemanager.projects.setIamPolicy 권한에 나열된 역할 및 권한이 필요합니다. 이러한 권한은 호스트 프로젝트의 서비스 계정에 적용해야 합니다. 이 방법이 조직의 보안 요구 사항을 충족하지 않는 경우 install-config.yaml 파일에서 컨트롤 플레인 또는 컴퓨팅 노드에 대한 서비스 계정 이메일 주소를 제공할 수 있습니다. 자세한 내용은 GCP의 설치 구성 매개변수 페이지를 참조하십시오. 공유 VPC에 설치하는 동안 컨트롤 플레인 노드에 서비스 계정을 제공하는 경우 해당 서비스 계정에 호스트 프로젝트의 roles/compute.networkUser 역할을 부여해야 합니다. 컨트롤 플레인 서비스 계정을 제공할 때 설치 프로그램이 방화벽 규칙을 자동으로 생성하려면 해당 서비스 계정에 호스트 프로젝트의 roles/compute.networkAdminroles/compute.securityAdmin 역할을 부여해야 합니다. roles/compute.networkUser 역할만 제공하는 경우 방화벽 규칙을 수동으로 생성해야 합니다.

중요

컨트롤 플레인 및 컴퓨팅 노드에 대한 사용자 제공 서비스 계정에 각각 다음 역할이 필요합니다.

예 2.25. 컨트롤 플레인 노드에 필요한 역할

  • roles/compute.instanceAdmin
  • roles/compute.networkAdmin
  • roles/compute.securityAdmin
  • roles/storage.admin

예 2.26. 컴퓨팅 노드에 필요한 역할

  • roles/compute.viewer
  • roles/storage.admin
  • roles/artifactregistry.reader
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.