安全にGitHub Actions Secretを扱う
安全にGitHub Actions Secretを扱う
シークレットとは
GitHubでのシークレットとは、GitHub のリポジトリに保存される機密情報のこと。
APIキーやパスワードなどの情報を保存することができ、GitHub Actions などで利用することができる。
シークレットきけん
シークレットは暗号化され保存されるため、一度設定を行うとリポジトリから見ることができない。
また、GitHub Actionsの実行ログにはマスキングされた形で表示される。
そのため、基本的にシークレットが表示されることはないが、以下のような手法でシークレットを出力することができてしまう。
また、上記のように特殊な手法を使わなくても、構造化データを登録し標準出力に出力すると、シークレットがほぼそのまま表示されてしまう。
シークレット
-
シークレットを使わない方法を検討する
危ない情報はシークレットでも使わない。
究極の対策。 -
構造化データを利用する際には、base64エンコードを行う
先ほどのURL参照。
https://zenn.dev/arkwknsk/articles/deaee3f0d7958b -
シークレットを出力しないようにする
echoやprintなどでシークレットを出力しないようにする。
ただし、GitHub Actions自体を改ざんされてしまうと、シークレットを出力されてしまう可能性があるため、ブランチ保護ルールの設定などが必要。 -
シークレットを登録するリポジトリを分離する
コードコミットを行うリポジトリとGitHub Actionsで利用するリポジトリを分離し、GitHub Actionsを実行するブランチにのみシークレットを登録することで安全性を高めることができる。
もちろん、GitHub Actionsで利用するリポジトリはプライベートリポジトリにしてアクセス制限をかける必要がある。
https://zenn.dev/kitoketa/articles/1a3ef4426dfe31
↑の記事を見れば大体できる
Discussion