適切な認証方法を選択する
実行するタスクに適した認証方法を選ぶ必要があります。
- この API を個人用に使用するには、 personal access tokenを作成します。
- 組織または別のユーザーの代わりに API を使用するには、 GitHub Appを作成する必要があります。
-
GitHub Actions ワークフローで API を使用するには、組み込みの`GITHUB_TOKEN`で認証する必要があります。
詳しくは、「GitHubへの認証について」をご覧ください。
資格情報のアクセス許可を制限する
personal access tokenを作成するときは、必要な最小限のアクセス許可またはスコープのみを選択し、トークンを使用する必要がある最小時間の有効期限を設定します。
GitHubでは、fine-grained personal access tokenではなくpersonal access tokens (classic)を使用することをお勧めします。 詳しくは、「[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#types-of-personal-access-tokens)」をご覧ください。
トークンは、トークンのオーナーと同様に、リソースにアクセスしてそれらのリソースに対してアクションを実行できますが、さらに、トークンに付与されるスコープまたはアクセス許可によって制限されます。 トークンは、ユーザーに追加のアクセス権を付与できません。
GitHub Appを作成するときに、GitHub Appに必要な最小限のアクセス許可を選択します。 詳しくは、「[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/best-practices-for-creating-a-github-app)」をご覧ください。
`GITHUB_TOKEN` ワークフローでGitHub Actionsを使用して認証する場合は、必要な最小限のアクセス許可のみを付与します。 詳しくは、「[AUTOTITLE](/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token)」をご覧ください。
認証資格情報を安全に保管する
認証資格情報は、パスワードや他の機密資格情報と同じように扱います。
- 暗号化されていないメッセージやメール システムを使って、認証資格情報を共有しないでください。
- コマンド ラインで personal access token をプレーン テキストとして渡さないでください。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。
- リポジトリがプライベートであっても、トークンやキーなどの暗号化されていない認証資格情報をリポジトリにプッシュしないでください。 代わりに、 GitHub Actions シークレット または Codespaces シークレットの使用を検討してください。 詳細については、 GitHub Actions でのシークレットの使用 および GitHub Codespaces のアカウント固有のシークレットの管理 を参照してください。
- リポジトリにプッシュされたトークン、秘密キー、その他のシークレットを検出したり、シークレットを含む将来のプッシュをブロックしたりするには、シークレット スキャンを使用できます。 詳しくは、「シークレット スキャンについて」をご覧ください。
認証資格情報にアクセスできるユーザーを制限する
personal access tokenを他のユーザーと共有しないでください。
personal access tokenを共有する代わりに、GitHub Appを作成することを検討してください。 詳しくは、「[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/about-creating-github-apps)」をご覧ください。
資格情報をチームと共有する必要がある場合は、セキュリティ保護された共有システムに資格情報を格納します。 たとえば、1Password を使用してパスワードを安全に保存して共有したり、キーを Azure KeyVault に格納したり、IAM (ID とアクセス管理) を使用してアクセスを管理したりできます。
API にアクセスする必要がある GitHub Actions ワークフローを作成する場合は、暗号化されたシークレットに資格情報を格納し、ワークフローから暗号化されたシークレットにアクセスできます。 詳細については、「GitHub Actions でのシークレットの使用」および「GitHub Actions ワークフローでGitHub アプリを使用して認証済み API 要求を作成する」を参照してください。
コードで認証資格情報を安全に使用する
トークン、キー、アプリ関連のシークレットなどの認証資格情報をコードにハードコーディングしないでください。 代わりに、
別のユーザーの personal access token が GitHub または他の場所で公開されている場合は、REST API を使用して失効要求を送信できます。 「無効化」を参照してください。
スクリプトで personal access token を使用する場合は、トークンを GitHub Actions シークレットとして格納し、 GitHub Actionsを使用してスクリプトを実行することを検討してください。 また、トークンを Codespaces シークレットとして格納し、Codespaces でスクリプトを実行することもできます。 詳細については、 GitHub Actions でのシークレットの使用 および GitHub Codespaces のアカウント固有のシークレットの管理 を参照してください。
これらのどのオプションも使えない場合は、認証資格情報を .env ファイルに保管できます。 必ず .env ファイルを暗号化して、リポジトリにはプッシュしないでください。
修復計画を準備する
すべてのセキュリティ侵害をタイムリーに処理するための計画を作成する必要があります。 トークンまたは他の認証資格情報が漏洩した場合は、次のことが必要になります。
-
新しい資格情報を生成します。
-
資格情報を保管またはアクセスしているすべての場所で、古い資格情報を新しい資格情報に置き換えます。
-
侵害された古い資格情報を削除します。
GitHub Appの侵害された資格情報のローテーションに関しては、「[AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/best-practices-for-creating-a-github-app)」をご参照ください。 personal access tokenの作成と削除については、[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) を参照してください。