0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · レッスン

GitHub によるシークレット管理

GitHub Secrets と OpenID Connect (OIDC) を使用して、機密性の高い認証情報を安全に保存・取得する方法を詳しく学びます。

「GitHub によるシークレット管理」はCoddyKit上の無料CI/CD with GitHub Actions & DevOps Pipelinesレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCI/CD with GitHub Actions & DevOps Pipelines学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。

安全なシークレット管理が必要な理由

ソフトウェアプロジェクトでは、API キー、データベースの認証情報、アクセストークンなどの機密情報を使用することがよくあります。これらをコードやリポジトリに直接保存するのは、大きなセキュリティリスクです。

シークレット管理とは、こうした機密データを安全に保存・管理することです。認証されたシステムとユーザーだけがアクセスできるようにし、不正な漏えいを防ぎます。

GitHub Secrets とは

GitHub には、GitHub Secrets と呼ばれる機密情報を安全に保存する仕組みがあります。GitHub Actions のワークフローで使用できる、暗号化された環境変数です。

  • デフォルトではログに書き込まれません。
  • 作成後に UI で表示されることはありません。
  • 選択したワークフローだけがアクセスできます。

これにより、認証情報が誤って公開されるのを防げます。

リポジトリシークレットを設定する

シークレットは、リポジトリ、環境、組織のそれぞれのレベルで定義できます。通常は、まずリポジトリシークレットから始めます。

作成する手順は次のとおりです。

  1. リポジトリの Settings タブを開きます。
  2. Secrets and variables > Actions に移動します。
  3. New repository secret をクリックします。

一意の名前(例: API_KEY)を付け、シークレットの値を貼り付けます。

ワークフローでシークレットにアクセスする

シークレットを定義すると、ワークフローの YAML ファイルで使用できます。GitHub Actions は、シークレットを環境変数としてジョブに自動的に注入します。

${{ secrets.SECRET_NAME }} コンテキストを使ってアクセスします。このスクリプトは、そのようなシークレットを使用するステップをシミュレートします。実行する際は、GitHub Actions によって MY_API_KEY が環境変数として設定されていると考えてください。

#!/bin/bash
# This script simulates a workflow step
# where a secret is passed as an environment variable.

echo "Attempting to use an API key..."

# In a real GitHub Action, MY_API_KEY would be
# set by ${{ secrets.MY_API_KEY }} in the workflow YAML.

if [ -z "$MY_API_KEY" ]; then
  echo "Error: MY_API_KEY is not set!"
  echo "Please define it as a secret in your workflow."
else
  echo "Successfully accessed API key (partially shown): ${MY_API_KEY:0:5}..."
fi

より広い範囲でシークレットを管理する

リポジトリシークレット以外にも、GitHub には次の2つの強力なスコープがあります。

  • 組織シークレット: 組織内の複数のリポジトリから利用できます。多くのプロジェクトで共有するシークレット(会社全体で使うデプロイトークンなど)に便利です。
  • 環境シークレット: 特定のデプロイ環境(staging、production など)に関連付けられます。デプロイ前に手動承認を必須にするなど、保護ルールを設定できます。

最大限のセキュリティを確保するため、必要最小限のスコープを常に使用してください。

OpenID Connect(OIDC)とは

OpenID Connect(OIDC) は、OAuth 2.0 の上に構築された認証レイヤーです。認可サーバーによる認証に基づいて、クライアントがエンドユーザーの身元を確認できるようにする標準です。

CI/CD では、OIDC を使うと、GitHub Secrets に API キーなどの長期間有効な認証情報を保存せずに、ワークフローからクラウドプロバイダー(AWS、Azure、GCP など)へ安全に認証できます。

Actions で OIDC が機能する仕組み

GitHub Actions は OIDC プロバイダーとして動作できます。ワークフローが実行されると、GitHub はそのジョブ専用の一意で短期間のみ有効な OIDC トークンを生成します。

このトークンには、リポジトリ、ブランチ、ジョブ ID など、ワークフローに関する検証可能なクレームが含まれます。クラウドプロバイダー側で GitHub が発行したトークンを信頼するように設定すると、これらのクレームに基づいて一時的なアクセスを許可できます。

OIDC の主なメリット

GitHub Actions で OIDC を使用すると、セキュリティ上の大きなメリットが得られます。

  • 長期間有効な認証情報が不要: GitHub Secrets に静的なクラウド API キーを保存する必要がありません。
  • リスクの低減: トークンの有効期間が短いため、侵害された場合の影響を最小限に抑えられます。
  • きめ細かなアクセス制御: クラウドのロールを特定のワークフロー条件(main ブランチからのデプロイだけを許可するなど)に対応付けられます。
  • 監査: ID がワークフローの実行に紐付くため、誰が何を行ったかを追跡しやすくなります。

OIDC とクラウドを統合する

OIDC を使用するには、クラウドプロバイダー(AWS IAM、Azure AD、GCP IAM など)が GitHub の OIDC 発行者を信頼するように設定する必要があります。

通常は、次の設定を行います。

  1. クラウドアカウントに Identity Provider(IdP)を設定する。
  2. 特定の権限を付与する Role/Policy を定義する。
  3. GitHub の OIDC トークンがそのロールを引き受けることを許可する「Trust Policy」をロールに追加する。多くの場合、特定のリポジトリからのトークンだけを許可するなど、トークンのクレームに基づく条件も設定します。

その後、ワークフローがトークンを要求し、それを使って認証します。

理解度チェック: 安全なアクセス

機密データの保存に使う GitHub Secrets と、認証情報を保存せずにクラウド認証を行う OpenID Connect について学びました。

GitHub Actions のシークレット管理について、次の記述のうち正しいものはどれでしょうか。

振り返り: 認証情報を安全に保護する

よくできました。CI/CD パイプラインで機密データを安全に管理する方法を学びました。

  • GitHub Secrets は、リポジトリ、組織、特定の環境内で API キーやトークンを暗号化して保存できます。
  • OpenID Connect(OIDC) は、静的な認証情報の代わりに、短期間のみ有効で検証可能なトークンを使うことで、クラウドプロバイダーへのより安全な認証を実現します。

これらのプラクティスは、堅牢で安全な DevOps パイプラインを構築するうえで不可欠です。

よくある質問

「GitHub によるシークレット管理」レッスンは無料ですか?

はい。「GitHub によるシークレット管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CI/CD with GitHub Actions & DevOps Pipelinesコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。

「GitHub によるシークレット管理」で何を学びますか?

GitHub Secrets と OpenID Connect (OIDC) を使用して、機密性の高い認証情報を安全に保存・取得する方法を詳しく学びます。 ブラウザで直接実行するハンズオンコードでCI/CD with GitHub Actions & DevOps Pipelinesを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CI/CD with GitHub Actions & DevOps Pipelinesを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCI/CD with GitHub Actions & DevOps Pipelinesは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「GitHub によるシークレット管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCI/CD with GitHub Actions & DevOps Pipelinesレッスンでコードを書いて実行できますか?

はい。すべてのCI/CD with GitHub Actions & DevOps Pipelinesレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CI/CD のセキュリティベストプラクティス
  2. GitHub によるシークレット管理
  3. 静的アプリケーションセキュリティテスト(SAST)
  4. 依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)
← CI/CD with GitHub Actions & DevOps Pipelinesに戻る