Skip to main content

GitHub シークレットの種類の概要

          GitHub シークレットの使用状況、スコープ、アクセス許可について説明します。

          Dependabot 秘匿情報

          Dependabot シークレットは、 Dependabot内で使用する資格情報と機密情報を格納するために使用されます。

          Dependabot シークレットはリポジトリの `dependabot.yml` ファイルで参照されます。

Usage

          Dependabot シークレットは通常、プライベート パッケージ レジストリに対する認証に Dependabot によって使用されます。 これにより、 Dependabot はプル要求を開いて、プライベート リポジトリ内の脆弱または古い依存関係を更新できます。 認証に使用され、これらの Dependabot シークレットはリポジトリの `dependabot.yml` ファイルで参照されます。

          Dependabot シークレットには、 Dependabotによって開始されたワークフローに必要なシークレットを含めることもできます。 たとえば、 Dependabot は、依存関係を更新するプル要求やプル要求に関するコメントを作成するときに、 GitHub Actions ワークフローをトリガーできます。 この場合、ワークフローがDependabot イベントによってトリガーされる限り、`.github/workflows/*.yml`シークレットはワークフロー ファイル (Dependabot) から参照できます。

Scope

          Dependabotシークレットは、次の場合に定義できます。
  • リポジトリ レベル

  • 組織階層

            Dependabot 組織レベルで設定すると、リポジトリ間でシークレットを共有できます。 Organization 内のどのリポジトリがシークレットにアクセスできるかを指定する必要があります。
    

アクセス許可

          Dependabot シークレットは、依存関係を更新するためにプライベート レジストリに対して認証を行うときに、 Dependabot によってアクセスされます。

          Dependabotシークレットは、ワークフローのトリガー イベントがGitHub Actionsによって開始されたときに、Dependabot ワークフローによってアクセスされます。 これは、ワークフローが Dependabotによって開始されると、 Dependabot シークレットのみが使用できるためです。アクション シークレットにはアクセスできません。 そのため、これらのワークフローに必要なすべてのシークレットは、Actions シークレットではなく、 Dependabot シークレットとして格納する必要があります。 
          `pull_request_target` イベントには追加のセキュリティ制限があります。 「[制限事項と制約事項](#limitations-and-restrictions)」を参照してください。

ユーザーのアクセス許可

リポジトリレベルのシークレット:

  • リポジトリへの 管理者アクセス権 を持つユーザーは、 Dependabot シークレットを作成および管理できます。
  • リポジトリへの コラボレーター アクセス 権を持つユーザーは、 Dependabotにシークレットを使用できます。

組織のシークレット

  • 組織の所有者 は、 Dependabot シークレットを作成および管理できます。
  • 各シークレットにアクセスできるリポジトリへの コラボレーター アクセス 権を持つユーザーは、 Dependabotにシークレットを使用できます。

制限事項と制約事項

          Dependabotによって開始されたワークフローの場合、`pull_request_target` イベントは他のイベントとは異なる方法で処理されます。 このイベントでは、pull request の基本 ref が Dependabot (`github.event.pull_request.user.login == 'dependabot[bot]'`) によって作成された場合:
  • ワークフローは読み取り専用の GITHUB_TOKEN を受け取ります。
  • シークレットは、ワークフローには利用できません

この追加の制限は、 Dependabotによって作成されたプル要求によって発生する可能性のある潜在的なセキュリティ リスクを防ぐのに役立ちます。

          Dependabot シークレットはフォークに渡されません。

アクション シークレット

Actions シークレットは、API キー、認証トークン、その他の資格情報などの機密情報をワークフローに格納するために使われます。

Usage

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

Scope

Actions シークレットは以下で定義できます。

  • リポジトリ レベル
  • 環境レベル
  • 組織階層

環境レベルのシークレットは、運用やステージングなどの特定の環境に固有です。 Actions シークレットは、organization レベルで設定されている場合、リポジトリ間で共有できます。 アクセス ポリシーを使って、シークレットにアクセスできるリポジトリを制御できます。

アクセス許可

アクション シークレットは、 GitHub Actions ワークフロー内でのみ使用できます。 アクションで実行されているにもかかわらず、 Dependabot は Actions シークレットにアクセスできません。

          Dependabotによって開始されたワークフローの場合、アクション シークレットは使用できません。 ワークフローにアクセスするには、これらのワークフロー シークレットを Dependabot シークレットとして格納する必要があります。

Actions シークレットを格納する場所によって、そのアクセス可否が決まります。

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

ユーザーのアクセス許可

リポジトリレベルと環境のシークレット:

  • リポジトリに対して管理者アクセス権を持つユーザーは、Actions シークレットを作成および管理できます。
  • リポジトリに対してコラボレーター アクセス権を持つユーザーは、シークレットを使用できます。

組織のシークレット

  • Organization 所有者は、Actions シークレットを作成および管理できます。
  • 各シークレットにアクセスできるリポジトリに対してコラボレーター アクセス権を持つユーザーは、シークレットを使用できます。

制限事項と制約事項

  • アクション シークレットは、 Dependabotによって開始されたワークフローでは使用できません。
  • Actions シークレットは、フォークからの pull request によってトリガーされたワークフローには渡されません。
  • GitHub Actions は、ワークフロー ログに出力されるすべての GitHub シークレットの内容を自動的に編集します。
  • 最大 1,000 個の組織シークレット、100 個のリポジトリ シークレット、100 個の環境シークレットを格納できます。 シークレットのサイズは最大 48 KB です。 詳細については、「シークレットの制限」を参照してください。

詳細については、次を参照してください。