はじめに
GitHub Actionsでは、リポジトリに登録された secrets
をログに出すとき自動的にマスキングしてくれますが、どうやらsecretsとの完全一致の場合のみそれが発動するっぽいのでその実験結果です。
事前準備(リポジトリにsecrets追加)
以下のようにリポジトリに secret
を登録します。
(リポジトリ > Settings
> Secrets and variables
> Actions
> New repository secret
)
事前準備(コード)
リポジトリの secrets
を利用するワークフローファイルを書いて動かします。
実験用.yml
name: jikken-workflow
on:
workflow_dispatch:
jobs:
check-secret:
runs-on: [self-hosted, linux, x64]
steps:
- name: マスキングされる
run: echo "SECRET >>> ${{ secrets.SECRET_CONTENT }}"
- name: 1文字目の後にスペースを挿入
run: echo "SECRET >> ${SECRET:0:1} ${SECRET:1}"
env:
SECRET: ${{ secrets.SECRET_CONTENT }}
- name: 最後の文字の前にスペースを挿入
run: echo "SECRET >> ${SECRET:0:len-1} ${SECRET:len-1}"
env:
SECRET: ${{ secrets.SECRET_CONTENT }}
- name: 全ての文字の間にスペースを挿入
run: echo "SECRET >> $(echo $SECRET | sed 's/./& /g' | sed 's/ $//')"
env:
SECRET: ${{ secrets.SECRET_CONTENT }}
ログ出力してみた結果
ログから機密情報が洩れております...。
おわりに
リポジトリの管理者権限がなくても、割と簡単にsecretsは確認できてしまうので、secrets
への登録はある程度リスクが伴うことを確認できました。
「マスキングされるし安全!」だなんて思わずに、登録しなくてよいものはしないようにするなど、適切に管理していきましょう。
参考