暗号化されたシークレットを管理する

完了

シークレットは、暗号化された環境変数であり、GitHub Actions のワークフローとアクションが依存するトークン、資格情報などの機密情報を格納するために作成できます。 一度作成すると、それが格納されている Organization、リポジトリ、またはリポジトリ環境へのアクセス権を持つワークフローとアクションで使用できるようになります。

このセクションでは、暗号化されたシークレットの使用を管理するために、Enterprise Cloud と GitHub Enterprise Server で使用できるさまざまなツールと戦略について説明します。 ワークフローやアクション内の暗号化されたシークレットにアクセスする方法についても説明します。

組織レベルで暗号化されたシークレットを管理する

機密情報を格納するための暗号化されたシークレットを Organization レベルで作成することは、Enterprise で管理オーバーヘッドを最小限に抑えながらこの情報のセキュリティを確保するための優れた方法です。

たとえば、あなたの GitHub 組織でワークフローを記述している開発者が、そのワークフローの一部でコードを運用環境に展開するための資格情報を必要としているとします。 このような機密情報の共有を避けるために、組織レベルで資格情報を含む暗号化されたシークレットを作成することができます。 このようにして、資格情報を公開することなくワークフロー内で使用できるようになります。

Organization レベルでシークレットを作成するには、Organization の [設定] に移動し、サイドバーから [シークレットと変数] > [アクション] > [新しい Organization のシークレット] を選択します。 表示される画面で、名前と値を入力し、シークレットのリポジトリ アクセス ポリシーを選択します。

組織の新しいシークレット画面。

アクセス ポリシーは、保存されるとシークレット一覧のシークレットの下に表示されます。

アクセス ポリシーが表示されている暗号化されたシークレットの例。

[Update](更新) を選択すると、シークレットに構成されているアクセス許可の詳細が表示されます。

リポジトリ レベルで暗号化されたシークレットを管理する

暗号化されたシークレットを特定のリポジトリにスコープする必要がある場合、GitHub Enterprise Cloud と GitHub Enterprise Server で、シークレットをリポジトリ レベルで作成することもできます。

リポジトリ レベルでシークレットを作成するには、リポジトリの [設定] に移動し、サイドバーから [シークレットと変数] > [アクション] > [新しいリポジトリ シークレット] を選択します。 表示される画面で、シークレットの名前と値を入力します。

リポジトリの新しいシークレット画面。

アクションとワークフロー内の暗号化されたシークレットにアクセスする

ワークフロー内

ワークフロー内の暗号化されたシークレットにアクセスするには、ワークフロー ファイルで secrets コンテキストを使用する必要があります。 例:

steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}

アクション内

アクション内の暗号化されたシークレットにアクセスするには、action.yml メタデータ ファイルの input パラメーターとしてシークレットを指定する必要があります。 例:

inputs:
  super_secret:
    description: 'My secret token'
    required: true

アクションのコード内の暗号化されたシークレットにアクセスする必要がある場合、アクション コードから $SUPER_SECRET 環境変数を使用して入力の値を読み取ることができます。

警告

アクションは共有可能な作業単位なので、独自のアクションを作成する場合は、アクションのソース コードに暗号化されたシークレットを含めないように注意してください。 アクションで暗号化されたシークレットまたはユーザーが指定した入力を使用する必要がある場合は、Actions Toolkit のコア モジュールを使用するのが最適です。