Skip to main content

GitHub シヌクレットの皮類の抂芁

GitHub シヌクレットの䜿甚法、スコヌプ、アクセス蚱可に぀いお説明したす。

GitHub シヌクレットの皮類に぀いお

GitHub シヌクレットは、API キヌ、トヌクン、パスワヌドなどの機密情報をリポゞトリに安党に栌玍するために䜿われたす。

機密情報を GitHub シヌクレットずしお栌玍するず、資栌情報やキヌをハヌドコヌディングする必芁がなくなり、コヌドやログでの露出を防ぐこずができたす。 このシヌクレットは、サヌビスの認蚌、資栌情報の管理、ワヌクフロヌでの機密デヌタのセキュリティで安党な受け枡しに䜿甚できたす。

3 皮類のシヌクレットが GitHub で䜿われおいたす。

GitHub シヌクレットの皮類に応じお、リポゞトリ、organization、たたは個人甚アカりントのセキュリティの蚭定ペヌゞでシヌクレットを䜜成および管理できたす。

GitHub がシヌクレットを栌玍する方法の抂芁

GitHub は、Libsodium シヌルド ボックスを䜿っおシヌクレットを暗号化したす。 シヌクレットは、GitHub に到達する前に暗号化され、関連するサヌビス (Dependabot、GitHub Actions、たたは Codespaces) で䜿われるたで暗号化されたたたになりたす。

Dependabot のシヌクレット

Dependabot シヌクレットは、Dependabot 内で䜿う資栌情報ず機密情報を栌玍するために䜿われたす。

Dependabot シヌクレットはリポゞトリの dependabot.yml ファむルで参照されたす。

䜿甚方法

Dependabot シヌクレットは、通垞、プラむベヌト パッケヌゞ レゞストリに察する認蚌のために Dependabot によっお䜿われたす。 これにより、Dependabot で pull request を開き、プラむベヌト リポゞトリ内の脆匱な䟝存関係や叀い䟝存関係を曎新できるようになりたす。 認蚌に䜿われるこれらの Dependabot シヌクレットは、リポゞトリの dependabot.yml ファむルで参照されたす。

Dependabot シヌクレットには、Dependabot によっお開始されるワヌクフロヌに必芁なシヌクレットを含めるこずもできたす。 たずえば、Dependabot は、䟝存関係を曎新する pull request を䜜成するずき、たたは pull request にコメントを付けるずきに、GitHub Actions ワヌクフロヌをトリガヌできたす。 この堎合、ワヌクフロヌが Dependabot むベントによっおトリガヌされおいる限り、Dependabot シヌクレットをワヌクフロヌ ファむル (.github/workflows/*.yml) から参照できたす。

範囲

Dependabot シヌクレットは以䞋で定矩できたす。

  • リポゞトリ レベル
  • Organization レベル

Organization レベルで蚭定されおいる堎合、Dependabot シヌクレットはリポゞトリ間で共有できたす。 Organization 内のどのリポゞトリがシヌクレットにアクセスできるかを指定する必芁がありたす。

アクセス蚱可

Dependabot から Dependabot シヌクレットにアクセスするのは、䟝存関係を曎新するためにプラむベヌト レゞストリに察する認蚌を受けるずきです。

GitHub Actions ワヌクフロヌから Dependabot シヌクレットにアクセスするのは、ワヌクフロヌのトリガヌ むベントが Dependabot によっお開始されたずきです。 これは、ワヌクフロヌが Dependabot によっお開始された時点で䜿甚できるのは Dependabot シヌクレットのみであり、Actions シヌクレットにはアクセスできないためです。 そのため、これらのワヌクフロヌに必芁なすべおのシヌクレットは、Actions シヌクレットではなく、Dependabot シヌクレットずしお栌玍する必芁がありたす。 pull_request_target むベントには远加のセキュリティ制限がありたす。 「制限事項ず制玄事項」を参照しおください。

ナヌザヌのアクセス蚱可

リポゞトリレベルのシヌクレット:

  • リポゞトリに察しお管理者アクセス暩を持぀ナヌザヌは、Dependabot シヌクレットを䜜成および管理できたす。
  • リポゞトリに察しおコラボレヌタヌ アクセス暩を持぀ナヌザヌは、Dependabot シヌクレットを䜿甚できたす。

Organization レベルのシヌクレット:

  • Organization 所有者は、Dependabot シヌクレットを䜜成および管理できたす。
  • 各シヌクレットにアクセスできるリポゞトリに察しおコラボレヌタヌ アクセス暩を持぀ナヌザヌは、Dependabot シヌクレットを䜿甚できたす。

制限事項ず制玄事項

Dependabot によっお開始されたワヌクフロヌの堎合、pull_request_target むベントは他のむベントずは異なる方法で凊理されたす。 このむベントで、pull request のベヌス参照が Dependabot (github.event.pull_request.user.login == 'dependabot[bot]') によっお䜜成された堎合:

  • ワヌクフロヌは読み取り専甚の GITHUB_TOKEN を受け取りたす。
  • シヌクレットは、ワヌクフロヌには利甚できたせん。

この远加の制限は、Dependabot によっお䜜成された pull request から生じる可胜性のある朜圚的なセキュリティ リスクを防ぐのに圹立ちたす。

Dependabot シヌクレットはフォヌクに枡されたせん。

アクション シヌクレット

Actions シヌクレットは、API キヌ、認蚌トヌクン、その他の資栌情報などの機密情報をワヌクフロヌに栌玍するために䜿われたす。

䜿甚方法

Actions シヌクレットはワヌクフロヌ ファむル (.github/workflows/*.yml) で参照されたす。

範囲

Actions シヌクレットは以䞋で定矩できたす。

  • リポゞトリ レベル
  • 環境レベル
  • Organization レベル

環境レベルのシヌクレットは、運甚やステヌゞングなどの特定の環境に固有です。 Actions シヌクレットは、organization レベルで蚭定されおいる堎合、リポゞトリ間で共有できたす。 アクセス ポリシヌを䜿っお、シヌクレットにアクセスできるリポゞトリを制埡できたす。

アクセス蚱可

Actions シヌクレットは、GitHub Actions ワヌクフロヌ内でのみ䜿甚できたす。 Actions 䞊で実行されおいるずしおも、Dependabot は Actions シヌクレットにアクセスできたせん。

Dependabot によっお開始されたワヌクフロヌの堎合、Actions シヌクレットは䜿甚できたせん。 ワヌクフロヌからアクセスできるようにするには、これらのワヌクフロヌ シヌクレットを Dependabot シヌクレットずしお栌玍する必芁がありたす。

Actions シヌクレットを栌玍する堎所によっお、そのアクセス可吊が決たりたす。

  • リポゞトリ シヌクレット: リポゞトリ内のすべおのワヌクフロヌがシヌクレットにアクセスできたす。
  • 環境シヌクレット: シヌクレットは、その特定の環境を参照するゞョブに限定されたす。
  • Organization シヌクレット: organization によっおアクセスが蚱可されたリポゞトリ内のすべおのワヌクフロヌは、organization シヌクレットにアクセスできたす。

ナヌザヌのアクセス蚱可

リポゞトリレベルず環境のシヌクレット:

  • リポゞトリに察しお管理者アクセス暩を持぀ナヌザヌは、Actions シヌクレットを䜜成および管理できたす。
  • リポゞトリに察しおコラボレヌタヌ アクセス暩を持぀ナヌザヌは、シヌクレットを䜿甚できたす。

Organization レベルのシヌクレット:

  • Organization 所有者は、Actions シヌクレットを䜜成および管理できたす。
  • 各シヌクレットにアクセスできるリポゞトリに察しおコラボレヌタヌ アクセス暩を持぀ナヌザヌは、シヌクレットを䜿甚できたす。

制限事項ず制玄事項

  • Actions シヌクレットは、Dependabot によっお開始されたワヌクフロヌでは䜿甚できたせん。
  • Actions シヌクレットは、フォヌクからの pull request によっおトリガヌされたワヌクフロヌには枡されたせん。
  • ワヌクフロヌ ログに出力されるすべおの GitHub シヌクレットの内容は GitHub Actions によっお自動的にリダクトされたす。
  • 最倧 1,000 個の組織シヌクレット、100 個のリポゞトリ シヌクレット、100 個の環境シヌクレットを栌玍できたす。 シヌクレットのサむズは最倧 48 KB です。 詳现に぀いおは、「シヌクレットの制限」を参照しおください。

Codespaces シヌクレット

Codespaces シヌクレットには、GitHub Codespaces 内で䜿う資栌情報ず機密情報 (API トヌクンや SSH キヌなど) が栌玍されおいるので、セキュリティで保護された開発環境を構成できたす。

䜿甚方法

Codespaces シヌクレットは、Codespaces 開発コンテナヌの構成 (devcontainer.json) 内で参照されたす。

範囲

Codespaces シヌクレットは以䞋で定矩できたす。

  • ナヌザヌ アカりント レベル
  • リポゞトリ レベル
  • Organization レベル

ナヌザヌ アカりント レベルのシヌクレットの堎合、シヌクレットにアクセスできるリポゞトリを遞択できたす。 Organization レベルで蚭定されおいる堎合、Codespaces シヌクレットはリポゞトリ間で共有できたす。 アクセス ポリシヌを䜿っお、シヌクレットにアクセスできるリポゞトリを制埡できたす。

アクセス蚱可

Codespaces シヌクレットには、Codespaces でのみアクセスできたす。

GitHub Actions は、Codespaces のシヌクレットにアクセスできたせん。

ナヌザヌのアクセス蚱可

ナヌザヌ アカりントレベルのシヌクレット:

  • Codespaces シヌクレットは、そのシヌクレットにアクセスできるリポゞトリを䜿っお䜜成した codespace で䜿甚できたす。

リポゞトリレベルのシヌクレット:

  • リポゞトリに察しお管理者アクセス暩を持぀ナヌザヌは、Codespaces シヌクレットを䜜成および管理できたす。
  • リポゞトリに察しおコラボレヌタヌ アクセス暩を持぀ナヌザヌは、シヌクレットを䜿甚できたす。

Organization レベルのシヌクレット:

  • Organization 所有者は、Codespaces シヌクレットを䜜成および管理できたす。
  • 各シヌクレットにアクセスできるリポゞトリに察しおコラボレヌタヌ アクセス暩を持぀ナヌザヌは、シヌクレットを䜿甚できたす。

制限事項ず制玄事項

  • GitHub Codespaces には最倧 100 個のシヌクレットを保存できたす。
  • シヌクレットのサむズは最倧 48 KB です。
  • Codespaces シヌクレットはフォヌクに枡されたせん。

参考資料