Secretと環境変数の管理
GitHub ActionsのSecret、変数、環境を安全に使い、認証情報をコードから分離してデプロイを制御します。
「Secretと環境変数の管理」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
シークレットに注意が必要な理由
パイプラインからレジストリやクラウドの接続先にアクセスするには、トークンやパスワードが必要です。それらをハードコーディングすると、リポジトリにアクセスできる全員に漏れてしまいます。これを防ぐのがシークレットです。
シークレットの保存場所
シークレットは、リポジトリ、Organization、または環境の設定で追加します。保存時には暗号化され、ワークフローにはマスクされた値としてのみ公開されます。
シークレットの使用
secretsコンテキストを通じてシークレットを参照し、環境変数またはアクションの入力としてステップに渡します。ここではデプロイスクリプトに渡しています。
steps:
- name: Deploy
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
run: ./deploy.shシークレットはマスクされる
GitHub はログ内のシークレットを***として自動的にマスクします。それでも、シークレットを出力したり保存したりしてはいけません。base64 のような変換によってマスクをすり抜け、漏えいする可能性があります。
変数とシークレットの違い
リージョンやビルドフラグなど、機密性のない設定には、varsコンテキストを介した変数を使用します。変数は UI 上で表示されますが、機密情報でなければ問題ありません。
env:
REGION: ${{ vars.AWS_REGION }}デフォルトの GITHUB_TOKEN
すべての実行には、リポジトリへの認証に使う自動生成のGITHUB_TOKENが付与されます。permissionsキーを使って権限を最小限に絞り込みます。これが最小権限の原則です。
permissions:
contents: read
pull-requests: write環境
staging や production などの環境では、シークレットをまとめ、デプロイの実行前に必要なレビュアー、待機タイマー、ブランチ制限などの保護ルールを追加できます。
jobs:
deploy:
environment: production
runs-on: ubuntu-latest必須レビュアー
保護された環境では、指定されたレビュアーが承認するまでデプロイジョブが一時停止します。これは本番環境の前に人による意図的な確認を設ける仕組みです。
フォークされた PR の安全性
フォークされた PRからのワークフローにはシークレットが渡されないため、信頼できないコントリビューターがシークレットを盗むことはできません。フォークされた PR でシークレットを必要としないように CI を設計してください。
シークレットのローテーション
すべてのシークレットはローテーション可能なものとして扱います。漏えいしたり期限切れになったりした場合は、設定で更新するだけで済みます。次回の実行から新しい値が使われるため、コードの変更は不要です。
ベストプラクティスのまとめ
基本方針は、機密性のある値にはシークレット、それ以外には変数、権限を厳密に絞ったGITHUB_TOKEN、本番環境を保護する環境、そしてシークレットを決してログに出力しないことです。
クイックチェック
シークレットと変数、マスク対象と表示対象を、どのように使い分けるでしょうか。
まとめ
これでシークレットと変数を安全に管理できるようになりました。暗号化して保存し、secretsコンテキストを介して読み取り、トークンの権限を絞り込み、環境を使ってデプロイを承認制にします。
よくある質問
「Secretと環境変数の管理」レッスンは無料ですか?
はい。「Secretと環境変数の管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Secretと環境変数の管理」で何を学びますか?
GitHub ActionsのSecret、変数、環境を安全に使い、認証情報をコードから分離してデプロイを制御します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Secretと環境変数の管理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CI/CD と DevOps とは?
- GitHub Actions の基本概念
- 初めての GitHub ワークフロー
- Secretと環境変数の管理