Git パーソナルアクセストークンの設定方法

GitBeginner
オンラインで実践に進む

はじめに

このチュートリアルでは、Git パーソナルアクセストークン (Personal Access Token) の設定と構成プロセスについて説明します。これらのトークンの生成、保護、管理方法を学び、Git エコシステムにおけるその重要性を理解します。このガイドの終わりには、安全な Git 操作のためにパーソナルアクセストークンを効果的に使用する方法について、確かな理解が得られるでしょう。

gh auth login

この実験 (Lab) は学習のためにインターネット接続を必要とするため、Pro ユーザーのみが VM を開始できます。アカウントを Pro にアップグレード してください。

Git パーソナルアクセストークンの理解

Git は、開発者がプロジェクトで共同作業を行い、変更を追跡し、コードリポジトリを管理できるようにする、広く使用されている分散型バージョン管理システムです。Git を効果的に使用するための重要な側面は、リモートリポジトリと対話する際の安全な認証です。

パーソナルアクセストークンとは?

パーソナルアクセストークン (PAT) は、ユーザー名とパスワードを使用せずに、Git リポジトリに安全にアクセスできるようにする認証資格情報です。パスワードと同様に機能しますが、いくつかの利点があります。

  1. セキュリティの強化: PAT は、メインアカウントのパスワードを変更することなく、失効またはローテーションできます。
  2. きめ細かい権限: 特定のスコープを割り当てることで、トークンが実行できるアクションを制限できます。
  3. 自動化のサポート: PAT は、スクリプト、CI/CD パイプライン、およびその他のツールへのプログラムによるアクセスを可能にします。
  4. 多要素認証 (MFA) の互換性: PAT は、MFA が有効になっているアカウントとシームレスに連携します。

なぜパーソナルアクセストークンを使用するのか?

GitHub、GitLab、Bitbucket を含む多くの Git ホスティングプラットフォームは、Git 操作のパスワードベース認証を徐々に廃止しています。この移行は、主にセキュリティ上の懸念によって動機付けられています。パーソナルアクセストークンは、長期にわたる広範なアクセス資格情報に関連するリスクを軽減する、より安全な代替手段を提供します。

パスワードの代わりにパーソナルアクセストークンを使用すると、次のようになります。

  • トークンの機能を必要なものだけに制限できます
  • 異なる目的のために複数のトークンを作成できます
  • 他のトークンに影響を与えることなく、個々のトークンを失効させることができます
  • アクセスと使用状況のより良い監査証跡を維持できます

次の手順では、パーソナルアクセストークンを作成し、認証にそれを使用するように Git を構成します。

GitHub でのパーソナルアクセストークンの生成

この手順では、GitHub でパーソナルアクセストークンを生成します。プロセスは、GitLab や Bitbucket などの他の Git プラットフォームでも同様ですが、ユーザーインターフェースにわずかな違いがあります。

GitHub でのトークンの作成

パーソナルアクセストークンを生成するには、次の手順に従います。

  1. ターミナルを開き、GitHub CLI ツールをインストールします。これは、GitHub と対話するための便利な方法を提供します。

    sudo apt-get update
    sudo apt-get install -y gh
  2. 次を実行して、GitHub で認証します。

    gh auth login
    gh auth login

    対話型のプロンプトに従います。

    • アカウントについて尋ねられたら、「GitHub.com」を選択します。
    • 優先プロトコルとして「HTTPS」を選択します。
    • GitHub 資格情報で認証することを確認します。
    • 認証方法を尋ねられたら、「Web ブラウザでログイン」を選択します。

    ワンタイムコードが表示されます。GitHub がブラウザで開き、または URL にアクセスしてこのコードを入力するように求められます。

  3. 認証に成功したら、新しいパーソナルアクセストークンを生成します。

    gh auth token

    このコマンドは、現在の認証トークンを表示します。このトークンをコピーし、次の手順で必要になるため、安全な場所に保存します。

    特定のスコープを持つトークンを直接作成する場合は、次を使用できます。

    gh auth refresh -s repo,read:org
    gh auth token

    これにより、リポジトリと組織の読み取りアクセス権を持つトークンが作成されます。

  4. または、GitHub Web サイトから直接トークンを生成することもできます。

    gh auth login
    • https://github.com で GitHub にアクセスします。
    • 右上隅にあるプロフィール画像をクリックします。
    • 「設定」を選択します。
    • 下にスクロールし、左側のサイドバーで「開発者設定」をクリックします。
    • 「パーソナルアクセストークン」をクリックし、次に「トークン (クラシック)」をクリックします。
    • 「新しいトークンの生成」をクリックし、「新しいトークンを生成 (クラシック)」を選択します。
    • トークンに「Git CLI access」などのわかりやすい名前を付けます。
    • 適切なスコープを選択します (最低限、リポジトリアクセスには「repo」を選択します)。
    • 「トークンを生成」をクリックします。
    • 生成されたトークンをコピーし、安全に保存します。

GitHub はトークンを一度しか表示しないため、トークンを安全な場所に保存することを忘れないでください。紛失した場合は、新しいものを生成する必要があります。

Git を設定してパーソナルアクセストークンを使用する

パーソナルアクセストークンを生成したので、リモートリポジトリと対話する際に認証にそれを使用するように Git を設定する必要があります。これを行う方法はいくつかあります。

方法 1: Git Credential Helper の使用

Git credential helper を使用すると、Git が資格情報を記憶するため、毎回入力する必要がなくなります。

  1. ターミナルを開き、プロジェクトディレクトリに移動します。

    cd ~/project
  2. 資格情報を保存するために、credential helper を使用するように Git を設定します。

    git config --global credential.helper store

    注:これにより、資格情報が暗号化されずにディスクに保存されます。より安全なオプションとして、代わりに cache helper を使用できます。これは、資格情報を一時的にメモリに保存します。

    git config --global credential.helper 'cache --timeout=3600'

    これにより、資格情報が 1 時間 (3600 秒) メモリに保存されます。

  3. 設定をテストするために、サンプル Git リポジトリを作成します。

    mkdir -p ~/project/test-repo
    cd ~/project/test-repo
    git init
  4. リモートリポジトリを追加します (実際の GitHub ユーザー名に置き換える必要があります)。

    git remote add origin https://github.com/yourusername/test-repo.git
  5. 次回 Git が認証を必要とするとき (たとえば、プッシュまたはプルするとき) は、資格情報の入力を求められます。GitHub ユーザー名を入力し、パーソナルアクセストークンをパスワードとして使用します。

方法 2: URL ベースの認証の使用

別の方法は、トークンをリポジトリ URL に直接埋め込むことです。

  1. プロジェクトディレクトリで、トークンを使用してリモートリポジトリ URL を設定します。

    git remote set-url origin https://YOUR_TOKEN@github.com/yourusername/test-repo.git

    YOUR_TOKEN を実際のパーソナルアクセストークンに、yourusername を GitHub ユーザー名に置き換えます。

  2. 設定を確認するためのテストファイルを作成します。

    echo "## Test Repository" > README.md
    git add README.md
    git commit -m "Initial commit"

方法 3: Git 設定ファイルの使用

Git 設定ファイルを直接編集することもできます。

  1. リポジトリで .git/config ファイルを作成または編集します。

    nano ~/project/test-repo/.git/config
  2. origin リモートの URL を更新して、トークンを含めます。

    [remote "origin"]
        url = https://YOUR_TOKEN@github.com/yourusername/test-repo.git
        fetch = +refs/heads/*:refs/remotes/origin/*

    YOUR_TOKEN を実際のパーソナルアクセストークンに、yourusername を GitHub ユーザー名に置き換えます。

  3. Ctrl+O を押して Enter キーを押し、ファイルを保存し、Ctrl+X で終了します。

セキュリティ上の理由から、ほとんどのユーザーには、トークンを直接設定ファイルに保存することを避ける credential helper メソッド (方法 1) が一般的に推奨されます。

パーソナルアクセストークンのテスト

Git を設定してパーソナルアクセストークンを使用するようにしたら、認証が正しく機能することを確認することが重要です。この手順では、一般的な Git 操作を実行してトークンをテストします。

GitHub でのテストリポジトリの作成

まず、GitHub CLI を使用して GitHub でテストリポジトリを作成しましょう。

  1. GitHub で新しいリポジトリを作成します。

    cd ~/project
    gh repo create test-pat-repo --private --clone
    cd test-pat-repo

    このコマンドは、「test-pat-repo」という名前の新しいプライベートリポジトリを作成し、ローカルマシンにクローンします。

基本的な Git 操作のテスト

次に、パーソナルアクセストークンが正しく機能していることを確認するために、いくつかの基本的な Git 操作を実行しましょう。

  1. 簡単な README ファイルを作成します。

    echo "## Test PAT Repository" > README.md
    echo "This repository is used to test Personal Access Token configuration." >> README.md
  2. ファイルを追加してコミットします。

    git add README.md
    git commit -m "Add README file"
  3. 変更を GitHub にプッシュします。

    git push -u origin main

    パーソナルアクセストークンが正しく設定されている場合、プッシュはパスワードを要求することなく成功するはずです。credential helper を使用していて、これが最初のプッシュである場合は、ユーザー名とトークンを求められる場合があります。これは、今後のために保存されます。

  4. 保存された資格情報を確認するために、別の変更を行います。

    echo "### Additional Information" >> README.md
    echo "This section contains additional information about the repository." >> README.md
    git add README.md
    git commit -m "Update README with additional information"
    git push

    この 2 回目のプッシュは、認証プロンプトなしで続行され、トークンが正しく使用されていることを確認します。

リポジトリアクセスの検証

トークンが正しく機能していることをさらに確認するために、リポジトリを一覧表示できます。

gh repo list --limit 5

このコマンドは、作成したばかりのテストリポジトリを含む、GitHub リポジトリのリストを表示します。このコマンドが正常に実行された場合、パーソナルアクセストークンにリポジトリアクセスに対する適切な権限があることを確認します。

これらのテスト中に問題が発生した場合は、トークンの設定を再確認し、トークンに必要なスコープ (権限) が、実行しようとしている操作に対してあることを確認してください。

パーソナルアクセストークンの管理とローテーション

パーソナルアクセストークンは、パスワードと同じレベルの注意を払って扱う必要があります。この最終ステップでは、セキュリティを維持するために、トークンを管理およびローテーションするためのベストプラクティスについて説明します。

パーソナルアクセストークンのリスト表示

GitHub で既存のパーソナルアクセストークンを表示するには、以下のようにします。

  1. GitHub CLI を使用する場合:

    gh auth status

    このコマンドは、使用されているトークンを含む、現在の認証ステータスに関する情報を表示します。

  2. または、GitHub Web インターフェースを介してすべてのトークンを表示することもできます。

    • GitHub.com にアクセスしてログインします。
    • 右上のプロフィール画像をクリックします。
    • 「Settings」を選択します。
    • 「Developer settings」>「Personal access tokens」>「Tokens (classic)」に移動します。

トークンセキュリティのベストプラクティス

パーソナルアクセストークンのセキュリティを維持するには、次のベストプラクティスに従ってください。

  1. トークンのスコープを制限する: トークンの目的の使用に必要な最小限の権限のみを付与します。

  2. わかりやすい名前を使用する: トークンに、その目的と使用法を示す意味のある名前を付けます。

  3. 有効期限を設定する: 重要度の低いトークンの場合は、定期的なローテーションを強制するために有効期限を設定します。

    GitHub CLI を使用して有効期限付きのトークンを作成するには、次のようにします。

    gh auth refresh -s repo,read:org --expiry 30d
    gh auth token

    これにより、30 日後に期限切れになるトークンが作成されます。

  4. トークンを定期的に監査する: 定期的にトークンを確認し、不要になったトークンをすべて取り消します。

  5. トークンを安全に保存する: トークンを公開リポジトリ、暗号化されていないファイルに保存したり、他のユーザーと共有したりしないでください。

  6. 環境変数を使用する: スクリプトまたはアプリケーションでトークンを使用する場合は、ハードコーディングするのではなく、環境変数として保存します。

    例:

    export GITHUB_TOKEN=your_token_here

パーソナルアクセストークンの取り消し

トークンが侵害された疑いがある場合、または不要になった場合は、直ちに取り消してください。

  1. GitHub CLI を使用する場合 (TOKEN をトークンに置き換えます):

    gh auth logout

    これにより、ログアウトし、現在のトークンが無効になります。

  2. GitHub Web インターフェースを介して:

    • GitHub.com にアクセスしてログインします。
    • 「Settings」>「Developer settings」>「Personal access tokens」>「Tokens (classic)」に移動します。
    • 取り消すトークンを見つけます。
    • 「Delete」をクリックして、アクションを確認します。

トークンのローテーション

定期的なトークンローテーションは、優れたセキュリティプラクティスです。トークンをローテーションする方法は次のとおりです。

  1. 古いトークンと同じ権限を持つ新しいトークンを生成します。
  2. 新しいトークンを使用するように、アプリケーションと設定を更新します。
  3. 新しいトークンですべてが機能することを確認します。
  4. 古いトークンを取り消します。

自動化されたプロセスの場合、トークンを保存するために環境変数または安全な保管庫を使用することを検討し、ローテーションを容易にします。

## Generate a new token
gh auth refresh -s repo,read:org
NEW_TOKEN=$(gh auth token)

## Update your Git remote URL with the new token
git remote set-url origin https://${NEW_TOKEN}@github.com/yourusername/your-repo.git

## Verify it works
git fetch

## Revoke the old token through GitHub website
echo "Remember to revoke your old token in GitHub settings"

これらのベストプラクティスに従うことで、不正アクセスのリスクを最小限に抑えながら、Git リポジトリへの安全なアクセスを維持できます。

まとめ

このチュートリアルでは、Git パーソナルアクセストークンを効果的に使用する方法を学びました。達成した内容を以下にまとめます。

  1. Git 認証にパーソナルアクセストークンを使用することの重要性と利点を理解しました。
  2. CLI と Web インターフェースの両方を使用して、GitHub でパーソナルアクセストークンを生成しました。
  3. リポジトリ操作にパーソナルアクセストークンを使用するように Git を設定しました。
  4. 基本的な Git 操作を実行して、トークン設定をテストしました。
  5. トークンの管理、保護、ローテーションに関するベストプラクティスを学びました。

パスワードの代わりにパーソナルアクセストークンを使用することで、Git ワークフローのセキュリティを強化しました。特定の権限を持つトークンを作成し、その有効期間を制限し、メインアカウントの資格情報に影響を与えることなく、必要に応じて取り消すことができるようになりました。

これらの重要なポイントを覚えておいてください。

  • トークンには、常に必要最小限の権限を使用してください。
  • トークンを安全に保存し、決して共有しないでください。
  • 特に機密性の高いリポジトリについては、トークンを定期的にローテーションしてください。
  • 未使用または侵害されたトークンは、直ちに取り消してください。

これらのプラクティスを実践することで、セキュリティリスクを最小限に抑えながら、Git リポジトリへの安全なアクセスを維持できます。