SSH 公開鍵を使用して認証する

ユーザーとサービス アカウントは、SSH 公開鍵を使用して Secure Source Manager リポジトリに対して認証できます。このページでは、SSH 認証鍵ペアを生成し、Secure Source Manager ウェブ インターフェースで認証方法として追加する方法について説明します。

Secure Source Manager は、RSA、ECDSA、Ed25519 の SSH 認証鍵タイプをサポートしています。

必要なロール

SSH 公開鍵を使用して認証するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、SSH 公開鍵を使用して認証するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

SSH 公開鍵を使用して認証するには、次の権限が必要です。

  • Secure Source Manager インスタンスに対する securesourcemanager.sshkeys.createAny
  • サービス アカウントに SSH キーを割り当てるには: サービス アカウントに対する iam.serviceAccounts.actAs

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Secure Source Manager のロールの付与については、IAM によるアクセス制御ユーザーにインスタンスへのアクセス権を付与するをご覧ください。

鍵ペアを生成する

SSH 鍵ペアは、ローカル システムにある秘密鍵と Google Cloudに登録した公開鍵で構成されます。

Linux または macOS

  1. ローカル システムに OpenSSH をインストールします。

  2. コマンド プロンプトで、次のコマンドを入力します。

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    ここで

    • USER_EMAIL はあなたのメールアドレスです。
    • KEY_TYPE は、rsaecdsa または ed25519 のいずれかです。

    次に例を示します。

    ssh-keygen -t rsa -C "user@example.com"
    
    1. プロンプトが表示されたら、公開鍵ファイルの場所とファイル名を入力します。デフォルトの場所とファイル名をそのまま使用する場合は、Enter キーを押します。

    2. プロンプトが表示されたら、パスフレーズを空白のままにして Enter キーを押します。

Windows

  1. インストールされていない場合は、ローカル システムに OpenSSH クライアント(Windows 10 以降に含まれています)と Git for Windows をインストールします。次の手順では、OpenSSH と Git for Windows を使用します。

  2. PowerShell またはコマンド プロンプトで、次のコマンドを実行します。

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    ここで

    • USER_EMAIL はあなたのメールアドレスです。
    • KEY_TYPE は、rsaecdsa または ed25519 のいずれかです。

    次に例を示します。

    ssh-keygen -t rsa -C "user@example.com"
    
    1. プロンプトが表示されたら、公開鍵ファイルの場所とファイル名を入力します。デフォルトの場所とファイル名(`%USERPROFILE%.ssh`)を使用する場合は、Enter キーを押します。

    2. プロンプトが表示されたら、パスフレーズを空白のままにして Enter キーを押します。

SSH エージェントに SSH 認証鍵を追加する

生成した SSH 認証鍵ペアを使用するには、SSH エージェントに鍵を追加します。鍵をデフォルトの場所に保存していない場合は、SSH エージェントに追加すると、SSH が鍵を見つけやすくなります。

Linux または macOS

  1. バックグラウンドで ssh-agent を起動します。

    eval "$(ssh-agent -s)"
    

    このコマンドは、エージェント プロセス ID(PID)を返します。次に例を示します。

    Agent pid 3245
    

    環境によっては、次のような別のコマンドを使用する必要があります。

    • ルートアクセスを使用するには、ssh-agent を開始する前に sudo -s -H を実行します。
    • ssh-agent を直接実行するには、exec ssh-agent bash または exec ssh-agent zsh を使用します。
  2. SSH 秘密鍵を ssh-agent に追加します。

    ssh-add ~/.ssh/FILENAME
    

    ここで、FILENAME は秘密鍵ファイルの名前です(例: id_rsaid_ed25519)。

Windows

  1. ssh-agent を開始します。

    • Git Bash を使用している場合は、ssh-agent を起動します。

      eval "$(ssh-agent -s)"
      
    • PowerShell またはコマンド プロンプトを使用している場合は、ssh-agent サービスを開始します。PowerShell で次のコマンドを実行します。

      Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent
      
  2. SSH 秘密鍵を ssh-agent に追加します。

    • Git Bash を使用している場合:

      ssh-add ~/.ssh/FILENAME
      
    • PowerShell またはコマンド プロンプトを使用している場合:

      ssh-add $env:USERPROFILE\.ssh\FILENAME
      

    ここで、FILENAME は秘密鍵ファイルの名前です(例: id_rsaid_ed25519)。

ユーザーの SSH 認証鍵を追加する

  1. Secure Source Manager ウェブ インターフェースで、インスタンスまたはリポジトリのページから [その他のオプション] メニューをクリックします。
  2. [ユーザーの SSH 認証鍵] をクリックします。

    [ユーザー SSH 認証鍵] ページが開き、作成した既存の認証鍵のリストが表示されます。

  3. [ユーザーの SSH 認証鍵] ページで、[認証鍵を追加] をクリックします。

  4. [SSH 認証鍵の追加] ページで、鍵に次の値を入力します。

    1. タイトル: キーの説明的なタイトルを追加します。
    2. SSH 公開鍵: 公開鍵文字列を貼り付けます。公開鍵文字列を取得するには、テキスト エディタで公開鍵ファイル(FILENAME.pub)を開くか、次のいずれかのコマンドを実行します。

      Linux または macOS

      cat ~/.ssh/FILENAME.pub
      

      Windows

      cat $env:USERPROFILE\.ssh\FILENAME.pub
      

      FILENAME は、鍵ファイルの名前に置き換えます。

リポジトリに必要な権限があれば、SSH 認証鍵を使用して Secure Source Manager リポジトリを認証できます。

サービス アカウントの SSH 認証鍵を追加する

リポジトリへのプログラムによるアクセスを許可するには、サービス アカウントの SSH 認証鍵を追加します。

  1. 使用するサービス アカウントがまだない場合は、サービス アカウントを作成します。
  2. Secure Source Manager ウェブ インターフェースで、 [その他のオプション] メニューをクリックします。
  3. [サービス アカウントの SSH 認証鍵] をクリックします。[サービス アカウントの SSH 認証鍵] ページが開き、追加した既存の認証鍵のリストが表示されます。
  4. [サービス アカウントの SSH 認証鍵] ページで、[鍵を追加] をクリックします。
  5. [サービス アカウントの SSH 鍵を追加] ページで、鍵に次の値を入力します。

    1. タイトル: キーの説明的なタイトル
    2. サービス アカウント: SSH 鍵を使用するサービス アカウントのサービス アカウント メール(SA_NAME@PROJECT_ID.iam.gserviceaccount.com 形式)

      場所

      • SA_NAME はサービス アカウント名です。
      • PROJECT_ID は、サービス アカウントが作成されたプロジェクトのプロジェクト ID です。
    3. SSH Public Key: 公開 SSH 認証鍵。SSH 認証鍵ペアの生成方法については、鍵ペアを生成するをご覧ください。

  6. サービス アカウントが Secure Source Manager インスタンスと同じプロジェクトにない場合は、使用するサービス アカウントに対する次のロールまたは権限のいずれかを Secure Source Manager のサービス エージェントに付与します。

    • iam.serviceAccounts.signJwt 権限
    • サービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator)ロール

    次のコマンドを実行して、Secure Source Manager サービス アカウントに IAM ポリシーを追加し、サービス アカウント トークン作成者のロールを付与します。

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
        --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    ここで、SERVICE_ACCOUNT は使用するサービス アカウント、INSTANCE_PROJECT_NUMBER は Secure Source Manager インスタンスのプロジェクト番号です。

    SERVICE_ACCOUNT は、数値形式のサービス アカウント ID またはメールアドレス(123456789876543212345、my-iam-account@somedomain.com など)のいずれかの形式にする必要があります。

次のステップ