# Google Compute仮想マシンユーザー

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FuzoNG3cT14G6UoDZ2ZGh%2Fimage.png?alt=media&#x26;token=d7f9082f-d85a-4e47-bae3-8ac7c1252802" alt=""><figcaption></figcaption></figure>

## 概要

本ページでは、Keeperローテーションを使用して、Google Cloud環境上のGoogle Compute Virtual Machine (VM) アカウントをローテーションする方法を説明します。Compute VMはGCPで管理されるリソースであり、Google Compute VMの管理者認証情報は**PAMマシン**レコードに関連付けられ、Google Compute VMユーザーの識別情報は**PAMユーザー**レコードタイプで定義されます。

Google Compute VMアカウントのパスワード変更には、通常のオペレーティングシステムのコマンドが使用されます。Keeperは対象のマシンに接続し、コマンドラインを通じてパスワード変更コマンドを実行します。

## 要件

本ページは、次の作業がすでに完了していることを前提としています。

* [ロール](/keeperpam/jp/privileged-access-manager/password-rotation/rotation-overview.md)に対してKeeperシークレットマネージャーが有効になっていること
* [ロール](/keeperpam/jp/privileged-access-manager/password-rotation/rotation-overview.md)に対してKeeperローテーションが有効になっていること
* Keeperシークレットマネージャーの[アプリケーション](/keeperpam/jp/privileged-access-manager/getting-started/applications.md)が作成されていること
* Keeperローテーション[ゲートウェイ](/keeperpam/jp/privileged-access-manager/getting-started/gateways.md)がインストールされ、稼働しており、[SSH](/keeperpam/jp/privileged-access-manager/references/setting-up-ssh.md)または[WinRM](/keeperpam/jp/privileged-access-manager/references/setting-up-winrm.md)を通じて対象のGoogle Compute Virtual Machineと通信できる状態になっていること
* Google Cloud環境が、当社ドキュメントに従って[構成](/keeperpam/jp/privileged-access-manager/getting-started/pam-configuration/google-cloud-environment-setup.md)されていること

## 1. PAMマシンレコードの設定

Keeperは、ゲートウェイマシン、またはネットワーク上の他のマシンに存在する任意のローカルユーザーアカウントのローテーションに対応しています。各マシンごとに**PAMマシン**レコードを作成する必要があります。このPAMマシンレコードには、マシン上のユーザーのパスワードを変更できる権限を持つ管理者認証情報を関連付けます。

すべてのマシンに対して**PAMマシン**レコードを作成した後、ローテーション対象となる各ローカルユーザーアカウントについて、**PAMユーザー**レコードを作成する必要があります。

Keeperは、参照されている管理者認証情報を使用して、環境内の仮想マシンユーザーのパスワードまたはSSHキーをローテーションします。これらの管理者認証情報には、対象ユーザーアカウントの認証情報を正常に変更できる十分な権限が付与されている必要があります。

Keeperゲートウェイが稼働しているマシン自体に対してPAMマシンレコードのローテーションを実行する場合、Keeperはkeeper-gwユーザーを使用して、そのアカウントのパスワードまたはSSHキーのローテーションを試みます。keeper-gwユーザーにsudoers権限が付与されていれば、ローカルのゲートウェイマシン上でローテーションを実行できます。

以下は、**PAMマシン**レコードの必須フィールドとなります。

<table><thead><tr><th width="240.58203125">フィールド</th><th>説明</th></tr></thead><tbody><tr><td><strong>タイトル</strong></td><td>レコード名。例: <code>GCP Linux 1</code></td></tr><tr><td><strong>ホスト名またはIPアドレス</strong></td><td>ゲートウェイからアクセスする際のマシンのホスト名またはIPアドレス</td></tr><tr><td><strong>ポート</strong></td><td>WinRMの場合は通常 <code>5985</code> または <code>5986</code>、SSHの場合は <code>22</code> を指定します</td></tr><tr><td><strong>管理者認証情報</strong></td><td>管理者アカウントのユーザー名とパスワード (またはSSHキー) を含む、リンクされたPAMユーザーレコード</td></tr><tr><td><strong>オペレーティングシステム</strong></td><td>仮想マシンのOS。例: <code>Windows</code> または <code>Linux</code></td></tr><tr><td><strong>SSL検証</strong></td><td>WinRMの場合に選択すると、SSLモード (ポート <code>5986</code>) を使用します。SSHでは無視されます</td></tr></tbody></table>

管理者認証情報がリンクされたこのPAMマシンレコードは、要件で作成したKSMアプリケーションと共有されている共有フォルダに配置する必要があります。この特権アカウントにアクセスするのはKSMアプリケーションのみであり、ユーザーと共有する必要はありません。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FVAsMtVaJLFguNMLO6ja2%2Fimage.png?alt=media&#x26;token=cc317705-c2f6-4898-a003-dc88943ec69f" alt=""><figcaption><p>Google CloudのPAMマシンレコード</p></figcaption></figure>

## 2. PAM構成の設定

(すでにこの環境用のPAM構成が設定されている場合は、この手順を省略できます。)

ボルトの左側メニューから **\[シークレットマネージャー]** を選択し、**\[PAM構成]** タブを開いて、**\[新しい構成]** をクリックします。

以下は、**PAM構成**レコードの必須フィールドとなります。

| フィールド            | 説明                                                                                    |
| ---------------- | ------------------------------------------------------------------------------------- |
| **タイトル**         | 構成名。例: `GCP Workspace Configuration`                                                  |
| **環境**           | `Google Cloud` を選択します                                                                 |
| **ゲートウェイ**       | Keeperシークレットマネージャーアプリケーションで設定されているゲートウェイを選択します                                        |
| **アプリケーションフォルダ** | PAM構成を保存する共有フォルダを選択します。PAMユーザーレコードと同じ共有フォルダに配置することを推奨します                              |
| **GCP ID**       | このGoogle Cloud環境を識別するための一意のIDです。任意の値を指定できますが、短く分かりやすい名称を推奨します。例: `GCP-DepartmentName` |
| **サービスアカウントキー**  | ゲートウェイのサービスアカウントキーに含まれるJSONテキストをコピーして貼り付けます                                           |

PAM構成レコードで設定可能なすべてのフィールドの詳細については、[こちらのページ](/keeperpam/jp/privileged-access-manager/getting-started/pam-configuration.md)をご参照ください。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F1YeLF8ONMYzkURMYlQgW%2Fimage.png?alt=media&#x26;token=b60750fe-6636-4579-925a-52a8f04a72ab" alt=""><figcaption><p>Google Cloud環境用PAM構成</p></figcaption></figure>

## 3. PAMユーザーレコードの設定

Keeperは、**PAMマシン**レコードにリンクされた認証情報を使用して、Google Cloud環境内の**PAMユーザー**レコードのパスワードをローテーションします。PAMユーザーの認証情報は、要件で作成したKSMアプリケーションと共有されている共有フォルダに配置する必要があります。

以下は、**PAMユーザー**レコードの必須フィールドとなります。

<table><thead><tr><th width="202.29296875">フィールド</th><th>説明</th></tr></thead><tbody><tr><td><strong>タイトル</strong></td><td>Keeperのレコードタイトル。例: <code>GCP Machine1 compute-user</code></td></tr><tr><td><strong>ログイン</strong></td><td>ローテーション対象となるユーザーアカウントのユーザー名。大文字と小文字を区別します。例: <code>compute-user</code></td></tr><tr><td><strong>パスワード</strong></td><td>ユーザーがパスワードでログインする場合にのみ必要です。このフィールドが空の場合、ローテーション実行時に自動的にパスワードが設定されます</td></tr><tr><td><strong>秘密PEMキー</strong></td><td>SSHの秘密鍵です。パスワードではなくPEMキーをローテーションする場合にのみ必要です</td></tr></tbody></table>

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FNe5jhQE2oHBfxzH81G1L%2Fimage.png?alt=media&#x26;token=71724b51-fa0a-4420-8bbb-02e8a818dc5c" alt=""><figcaption><p>Debian Linux PAMユーザーレコード</p></figcaption></figure>

## 4. レコード (GCP VMユーザー) でのローテーション設定

手順3で作成した**PAMユーザー**レコードを選択し、レコードを編集して **\[パスワードローテーション設定]** を開きます。

* 希望するスケジュールとパスワードの複雑さを選択します。
* **\[ローテーション設定]** では、前の手順で設定した**PAM構成**を使用します。
* **\[リソース認証情報]** フィールドでは、手順1で設定した**PAMデータベース**の認証情報を選択します。
* 保存すると、ローテーションボタンが有効になり、手動実行または選択したスケジュールに基づいてローテーションを実行できるようになります。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FbRLemAT7GRWtfjky1NxR%2Fimage.png?alt=media&#x26;token=d746aa95-e254-477d-935b-92a18c5065ca" alt=""><figcaption><p>Google Cloud Computeインスタンスユーザーのパスワードローテーション設定</p></figcaption></figure>

## SSHキーのローテーションに関する注記

対象のマシンまたはユーザーで秘密PEMキーをローテーションすると、Keeperはマシン上のauthorized\_keysファイルを更新し、新しい公開鍵を追加します。初回のローテーションでは、システムのロックアウトを防ぐため、既存の公開鍵は削除されません。authorized\_keysファイルに追加される2つ目の公開鍵には、以後のローテーション時に識別子として使用されるコメントが含まれます。例は次のとおりです。

```bash
[compute-user@host .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1...11xZrfOxYXG6RV84mCZ3uldesEyV/ghLxAb7Fcz gcpdemo
ssh-rsa AAAAB3NzaC...un+frl9Q== keeper-security-computeuser
```

既定では、Keeperは `.ssh/authorized_keys` ファイル内の他のキーを削除しません。これは、一部のプロバイダーが仮想マシンを制御する目的で独自のキーを配置する場合があるためです(例: Google Cloudプロバイダー)。

初回のローテーションが正常に完了した後、必要に応じてauthorized\_keysファイルから古い公開鍵エントリを削除できます。以降のローテーションでは、「keeper-security-xxx」というコメントを含む行が更新されます。

また、ローテーションの実行時には、`.ssh` ディレクトリ内に既存の `.ssh/authorized_keys` のバックアップが作成されます。

秘密鍵をローテーションする場合、新しい秘密鍵は、現在の秘密鍵と同じアルゴリズムおよび鍵長 (ビット数) で生成されます。例えば、現在の秘密鍵が `ecdsa-sha2-nistp256` の場合、新しい秘密鍵も `ecdsa-sha2-nistp256` になります。この動作は、カスタムテキストフィールドを追加することで上書きできます。ラベルを `Private Key Type` とし、値に次のいずれかのサポートされているアルゴリズムを指定してください。

* `ssh-rsa` – 4096ビット
* `ecdsa-sha2-nistp256` – ECDSA、256ビット
* `ecdsa-sha2-nistp384` – ECDSA、384ビット
* `ecdsa-sha2-nistp521` – ECDSA、521ビット
* `ssh-ed25519`

このカスタムフィールドは、現在の秘密鍵のアルゴリズムを検出できない場合にも使用できます。

秘密鍵のローテーションを無効にするには、PAMユーザーレコードに `Private Key Rotate` というラベルのカスタムテキストフィールドを追加します。このフィールドの値がTRUE、またはフィールド自体が存在しない場合、秘密鍵が存在すればローテーションが実行されます。値がFALSEの場合、秘密鍵はローテーションされません。

なお、Linuxユーザーのローテーションでは、パスワードで暗号化されたPEMファイルは現在サポートされていません。

## 管理者認証情報 ― SSHキーのみのアカウント

マシンリソースの管理者認証情報として、パスワードを持たず秘密PEMキーのみを設定したPAMユーザーを構成した場合、このユーザーがパスワードローテーションなど、すべての管理操作を実行します。この構成では、管理者アカウントがパスワード入力なしで `sudo` 操作を実行できる必要があります。

`sudo` コマンドの実行にパスワードが必要な場合、そのリソース上の非管理者認証情報のローテーションは失敗します。これは、管理者認証情報にパスワードが含まれていないためです。ローテーションを正常に実行するには、PEMキーのみを使用する管理者アカウントが、パスワードプロンプトなしで `sudo` コマンドを実行できるよう設定してください。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/privileged-access-manager/password-rotation/rotation-use-cases/google-cloud/google-compute-virtual-machine-user.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
