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