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