github編集

Google Compute仮想マシンユーザー

KeeperでGoogle Compute仮想マシンのアカウントをローテーション

概要

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

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

要件

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

  • ロールに対してKeeperシークレットマネージャーが有効になっていること

  • ロールに対してKeeperローテーションが有効になっていること

  • Keeperシークレットマネージャーのアプリケーションが作成されていること

  • Keeperローテーションゲートウェイがインストールされ、稼働しており、SSHまたはWinRMを通じて対象のGoogle Compute Virtual Machineと通信できる状態になっていること

  • Google Cloud環境が、当社ドキュメントに従って構成されていること

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

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

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

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

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

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

フィールド
説明

タイトル

レコード名。例: GCP Linux 1

ホスト名またはIPアドレス

ゲートウェイからアクセスする際のマシンのホスト名またはIPアドレス

ポート

WinRMの場合は通常 5985 または 5986、SSHの場合は 22 を指定します

管理者認証情報

管理者アカウントのユーザー名とパスワード (またはSSHキー) を含む、リンクされたPAMユーザーレコード

オペレーティングシステム

仮想マシンのOS。例: Windows または Linux

SSL検証

WinRMの場合に選択すると、SSLモード (ポート 5986) を使用します。SSHでは無視されます

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

Google CloudのPAMマシンレコード

2. PAM構成の設定

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

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

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

フィールド
説明

タイトル

構成名。例: GCP Workspace Configuration

環境

Google Cloud を選択します

ゲートウェイ

Keeperシークレットマネージャーアプリケーションで設定されているゲートウェイを選択します

アプリケーションフォルダ

PAM構成を保存する共有フォルダを選択します。PAMユーザーレコードと同じ共有フォルダに配置することを推奨します

GCP ID

このGoogle Cloud環境を識別するための一意のIDです。任意の値を指定できますが、短く分かりやすい名称を推奨します。例: GCP-DepartmentName

サービスアカウントキー

ゲートウェイのサービスアカウントキーに含まれるJSONテキストをコピーして貼り付けます

PAM構成レコードで設定可能なすべてのフィールドの詳細については、こちらのページをご参照ください。

Google Cloud環境用PAM構成

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

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

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

フィールド
説明

タイトル

Keeperのレコードタイトル。例: GCP Machine1 compute-user

ログイン

ローテーション対象となるユーザーアカウントのユーザー名。大文字と小文字を区別します。例: compute-user

パスワード

ユーザーがパスワードでログインする場合にのみ必要です。このフィールドが空の場合、ローテーション実行時に自動的にパスワードが設定されます

秘密PEMキー

SSHの秘密鍵です。パスワードではなくPEMキーをローテーションする場合にのみ必要です

Debian Linux PAMユーザーレコード

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

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

  • 希望するスケジュールとパスワードの複雑さを選択します。

  • [ローテーション設定] では、前の手順で設定したPAM構成を使用します。

  • [リソース認証情報] フィールドでは、手順1で設定したPAMデータベースの認証情報を選択します。

  • 保存すると、ローテーションボタンが有効になり、手動実行または選択したスケジュールに基づいてローテーションを実行できるようになります。

Google Cloud Computeインスタンスユーザーのパスワードローテーション設定

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

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

既定では、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 コマンドを実行できるよう設定してください。

最終更新