2.5. GCP でのサービスアカウントの作成


OpenShift Container Platform には、Google API でデータにアクセスするための認証および承認を提供する Google Cloud Platform (GCP) サービスアカウントが必要です。プロジェクトに必要なロールが含まれる既存の IAM サービスアカウントがない場合は、これを作成する必要があります。

前提条件

  • クラスターをホストするプロジェクトを作成しています。

手順

  1. OpenShift Container Platform クラスターをホストするために使用するプロジェクトでサービスアカウントを作成します。GCP ドキュメントで サービスアカウントの作成 を参照してください。
  2. サービスアカウントに適切なパーミッションを付与します。付随する個別のパーミッションを付与したり、オーナー ロールをこれに割り当てることができます。特定のリソースのサービスアカウントへのロールの付与 を参照してください。

    注記

    サービスアカウントをプロジェクトの所有者にすることは、必要な権限を得る最も簡単な方法ですが、その場合、サービスアカウントはプロジェクトに対して完全な管理権限を持つことになります。この権限を提供することに伴うリスクが受け入れ可能であるかどうかを判別する必要があります。

  3. サービスアカウントキーを JSON 形式で作成するか、サービスアカウントを GCP 仮想マシンにアタッチできます。GCP ドキュメントの サービスアカウントキー作成とインスタンスのサービスアカウントの作成と有効 化をご覧ください。

    注記

    サービスアカウントがアタッチされた仮想マシンを使用してクラスターを作成する場合は、インストール前に install-config.yaml ファイルで credentialsMode: Manual を設定する必要があります。

2.5.1. 必要な GCP のロール

作成するサービスアカウントに オーナー ロールを割り当てると、OpenShift Container Platform のインストールに必要なパーミッションも含め、そのサービスアカウントにすべてのパーミッションが付与されます。組織のセキュリティーポリシーでより制限的なアクセス許可のセットが必要な場合は、次のアクセス許可を持つサービスアカウントを作成できます。クラスターを既存の VPC (virtual private cloud) にデプロイする場合、サービスアカウントでは一部のネットワークのパーミッションを必要としません。これについては、以下の一覧に記載されています。

インストールプログラムに必要なロール

  • Compute Admin
  • Role Administrator
  • Security Admin
  • Service Account Admin
  • Service Account Key Admin
  • Service Account User
  • Storage Admin

インストール時のネットワークリソースの作成に必要なロール

  • DNS Administrator

Passthrough モードで Cloud Credential Operator を使用するために必要なロール

  • Compute Load Balancer Admin
  • Tag User

次のロールは、コントロールプレーンとコンピュートマシンが使用するサービスアカウントに適用されます。

表2.4 GCP サービスアカウントのロール
アカウントロール

コントロールプレーン

roles/compute.instanceAdmin

roles/compute.networkAdmin

roles/compute.securityAdmin

roles/storage.admin

roles/iam.serviceAccountUser

Compute

roles/compute.viewer

roles/storage.admin

roles/artifactregistry.reader

2.5.2. installer-provisioned infrastructure に必要な GCP 権限

作成するサービスアカウントに オーナー ロールを割り当てると、OpenShift Container Platform のインストールに必要なパーミッションも含め、そのサービスアカウントにすべてのパーミッションが付与されます。

組織のセキュリティーポリシーで、より制限的なアクセス許可のセットが必要な場合は、必要なアクセス許可を持つ カスタムロール を作成できます。OpenShift Container Platform クラスターを作成および削除するために、installer-provisioned infrastructure には、以下のパーミッションが必要です。

例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 に対して、詳細な権限を使用できます。パススルー認証情報モードでは、詳細な権限は使用できません。

ホストプロジェクトが、サービスアカウントに次のいずれかの設定を適用していることを確認します。

例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.getIamPolicy 権限と resourcemanager.projects.setIamPolicy 権限が必要です。これらの権限は、ホストプロジェクトのサービスアカウントに適用する必要があります。このアプローチが組織のセキュリティー要件を満たさない場合は、install-config.yaml ファイルでコントロールプレーンまたはコンピュートノードのサービスアカウントのメールアドレスを指定できます。詳細は、GCP のインストール設定パラメーター ページを参照してください。共有 VPC へのインストール中にコントロールプレーンノードのサービスアカウントを提供する場合は、そのサービスアカウントにホストプロジェクト内の roles/compute.networkUser ロールを付与する必要があります。コントロールプレーンサービスアカウントを指定したときにインストールプログラムによってファイアウォールルールが自動的に作成されるようにするには、そのサービスアカウントにホストプロジェクト内の roles/compute.networkAdmin ロールおよび roles/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 では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.