Google CLI を使用した秘密鍵の作成
GCP に対する VSB プランを作成するには、UDP コンソールで秘密鍵が必要です。
新しい鍵を作成するには、gcloud CLI をインストールして初期化する必要があります。下記のリンクに記載されている手順に従って、管理者権限で 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 コンソールに表示するサービス アカウント名。
- サービス アカウントの電子メール アドレスを取得し、以下のコマンドを実行します。
- 以下を置き換えます。
- DISPLAY_NAME: 手順 3 で指定した表示名。
- 上記のコマンドの出力から、サービス アカウントの電子メール アドレスを書き留めます。形式は以下のとおりで、残りの手順では SA_EMAIL と表記されています。
- SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- JSON キー ファイルを作成してダウンロードするには、以下の値を置き換えて、下記のコマンドを実行します。
- KEY_FILE: 秘密鍵の新しい出力ファイルへのパス。たとえば、c:\gcp-private-key.json または ~/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