<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security on よ〜んの雑記</title><link>https://mu7889yoon.github.io/tags/security/</link><description>Recent content in Security on よ〜んの雑記</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Mon, 04 May 2026 20:13:38 +0900</lastBuildDate><atom:link href="https://mu7889yoon.github.io/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>git-secretsに触れて、シークレットの管理方法の再考をする</title><link>https://mu7889yoon.github.io/posts/impression-of-git-secret/</link><pubDate>Mon, 04 May 2026 20:13:38 +0900</pubDate><guid>https://mu7889yoon.github.io/posts/impression-of-git-secret/</guid><description>&lt;p&gt;よ〜んです&lt;/p&gt;
&lt;p&gt;GitHub のリポジトリに AWS アクセスキーや API キーなどのシークレットを誤ってコミットしてしまう可能性ってありますよね。もちろんビューで気づけるのが理想ですけど、大AI時代となった今、人の目だけに頼る運用には限界があります。&lt;/p&gt;
&lt;p&gt;コードレビュー以外の方法でシークレット混入を機械的に防げないかを調査して見ました。AWS Labs が公開している &lt;a href="https://github.com/awslabs/git-secrets"&gt;git-secrets&lt;/a&gt; というツールを見つけたので、本記事ではそれを実際に触ってみようと思います。&lt;/p&gt;
&lt;h2 id="git-secretsとは"&gt;git-secretsとは&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;git-secrets&lt;/code&gt; は、シークレットや認証情報が Git リポジトリにコミットされることを防ぐためのツールです。AWS の &lt;a href="https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/scan-git-repositories-for-sensitive-information-and-security-issues-by-using-git-secrets.html"&gt;Prescriptive Guidance&lt;/a&gt; でも、パスワードや AWS アクセスキーなどの機密情報を検出する用途で紹介されていたりします。&lt;/p&gt;
&lt;p&gt;特に AWS を扱う場合は、認証情報パターン(ルールセット)を一括登録するコマンドも用意されています&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git secrets --register-aws
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="インストール"&gt;インストール&lt;/h2&gt;
&lt;p&gt;macOS なら Homebrew でサクッとインストール可能です：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install git-secrets
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="リポジトリに設定する"&gt;リポジトリに設定する&lt;/h2&gt;
&lt;p&gt;ここが大事なんですけど、ツールをインストールしただけではまだ各リポジトリで動きません。&lt;/p&gt;
&lt;p&gt;対象のリポジトリで以下を実行します&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git secrets --install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git secrets --register-aws
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;git-secrets&lt;/code&gt; は Git hooks に依存しているので、ツールのインストール後に、リポジトリごとに hooks をセットアップする必要があります。&lt;/p&gt;
&lt;h2 id="実際に試してみる"&gt;実際に試してみる&lt;/h2&gt;
&lt;p&gt;検証用にシークレットらしき値を含むファイルを作ってみます（もちろんダミーですよ！！！）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39; &amp;gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;AWS_ACCESS_KEY_ID=HOGEIOSFODNN7EXAMPLE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;AWS_SECRET_ACCESS_KEY=fUgalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この状態でコミットしようとすると、&lt;code&gt;git-secrets&lt;/code&gt; が検知して止めてくれます：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add .env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;add env file&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;検知されると、対象ファイルの行番号や一致した内容が表示されて、コミントは失敗します。&lt;code&gt;Matched one or more prohibited patterns&lt;/code&gt; が出力されます。&lt;/p&gt;</description></item></channel></rss>