DebTab

  • ホーム
  • DevTabとは
  • 記事一覧
    • きたえる
    • かえる
    • つくる
    • みちびく
    • たばねる
    • つたえる
かんたんログイン
Githubでログイン
Githubアカウントでかんたんにログインして、DevTabをもっと便利に使おう。

DebTab成長しつづけるデベロッパーのための情報タブロイド

DebTab

ログイン

検索 検索

AWSクレデンシャルの漏洩を未然に防ぐgit-secrets

写真越 智明

みちびく

2017.12.10

ポイントポイント

0

この記事は、ギルドワークス アドベントカレンダーの10日目の記事です。

業務でAWSを触ることもあり、AWSクレデンシャル情報に触れる機会も増えてきました。
AWSアクセスキーの漏洩の話を聞くこともときどきあり、漏洩を未然に防ぐために git-secrets というツールを設定したときのメモになります。

インストール

macOSでHomebrew環境の場合、下記を実行でインストールが完了します。

$ brew update
$ brew install git-secrets

設定

以下のコマンドを実行し、AWSアクセスキーの標準パターンをGitの設定ファイルに書き込みます。

git secrets --register-aws --global

下記の様に、~/.gitconfigに設定が追記されたら成功です。

[secrets]
  providers = git secrets --aws-provider
  patterns = [A-Z0-9]{20}
  patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(|key|Key)(\"|')?\s*(:|=>|=)\s*(\"|')?[A-Za-z0-9/\+=]{40}(\"|')?
  patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(id|Id)?(\"|')?\s*(:|=>|=)\s*(\"|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}(\"|')?
  allowed = AKIAIOSFODNN7EXAMPLE
  allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

allowedの行にあるのは、AWS自身が公式ドキュメントで使用している アクセスキーのサンプル みたいです。

実行してみる

1つ目のパターン

[A-Z0-9]{20}

README.mdに以下を記述し、git commitを実行すると警告が表示されます。

00000000000000000000
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX

以下のような警告が表示され、README.mdの1行目と2行目が原因でコミットができなくなります。

README.md:1:00000000000000000000
README.md:2:XXXXXXXXXXXXXXXXXXXX

[ERROR] Matched one or more prohibited patterns

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive

2つ目のパターン

(\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(|key|Key)(\"|')?\s*(:|=>|=)\s*(\"|')?[A-Za-z0-9/\+=]{40}(\"|')?

README.mdに以下を記述し、git commitを実行すると警告が表示されます。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
aws_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_key_id: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
aws_secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
secret_access_key_id: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

以下のような警告が表示され、README.mdの3行目、5行目、8行目、10行目が原因でコミットができなくなります。

README.md:3:access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
README.md:5:aws_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
README.md:8:secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
README.md:10:aws_secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

[ERROR] Matched one or more prohibited patterns

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive

3つ目のパターン

(\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(id|Id)?(\"|')?\s*(:|=>|=)\s*(\"|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}(\"|')?

README.mdに以下を記述し、git commitを実行すると警告が表示されます。

0000-0000-0000
aws_account: '0000-0000-0000'
aws_account: '0000-0000-000'
aws_account: '000000000000'
aws_account: '0000000000001'
aws_account_id: '0000-0000-0000'
AWS_ACCOUNT_ID: '0000-0000-0000'
aws_ACCOUNT_id: '0000-0000-0000'
aws_ACCOunt_id: '0000-0000-0000'

以下のような警告が表示され、README.mdの2行目、4行目、6行目、7行目、8行目が原因でコミットができなくなります。

README.md:2:aws_account: '0000-0000-0000'
README.md:4:aws_account: '000000000000'
README.md:6:aws_account_id: '0000-0000-0000'
README.md:7:AWS_ACCOUNT_ID: '0000-0000-0000'
README.md:8:aws_ACCOUNT_id: '0000-0000-0000'

[ERROR] Matched one or more prohibited patterns

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive

最後に

git-secretsの設定はリポジトリごとに.git/configファイルを編集することで、各リポジトリにallowedやpatternsを設定することができます。 ローカル環境全体でgit-secretsを有効にしつつ、細かい例外を各リポジトリごとに設定することで、柔軟に運用することができます。

最悪の事態を未然に防ぐためのツールとして、一度試してみてはいかがでしょうか。

共感した

ポイントポイント

0

取り消す

この記事に共感したら、何度でも押してこの記事のポイントをみんなでアップしよう。

自分の感想を残す

この感想は、サイトに公開されることはなく自分にしか見えません。自分の考えのログを残すために感じたことを登録し、のこしておきましょう。あとで振り返ったときに、あのとき自分はこう考えていたのかということを知ることにより、あなたの成長へとつながります。

Githubでログイン

Githubアカウントでかんたんにログインして、DevTabをもっと便利に使おう。

  • ひとつ前の記事

    価値探索とUXデザイン・その4:鳥の目・虫の目・魚の目

  • ひとつ後の記事

    3フェーズテストで自動テストコードを見やすくしよう

この記事もどうですか?

事業をふりかえって、行きたい方向へむきなおる

ミッション、ビジョンの点検から始める 先日、ギルドワークスの創業メンバーで集まって、この2年半分の …

みちびく

2016.08.30

ポイント
0

越境はいつだって1人から。でも、いつまでも1人ではない。

 2018年秋、TEDxKobe 2018で話をしました。 この会のテーマは「Burning to …

かえる

みちびく

たばねる

つたえる

2018.12.01

ポイント
8

越境と正しいものを正しくつくる、9つのお話。

この記事は、 ギルドワークス アドベントカレンダーの17日目の記事です。 手元のディレクトリの数によ…

かえる

みちびく

たばねる

2017.12.17

ポイント
0

シェア
  • Twitter
  • このエントリーをはてなブックマークに追加
  • Google Plus

ログインして
ブックマーク

  • Twitter
  • このエントリーをはてなブックマークに追加
  • Google Plus
  • ログイン
LINE@

新しい記事が出たときや、注目の記事などを
定期的にLINEでお知らせしていきます

LINEで登録

LINEイメージ

DevTab
成長しつづけるデベロッパーのための情報タブロイド

株式会社ギルドワークス
https://guildworks.jp
  • プライバシーポリシー
  • お問い合わせ

Copyright © GuildWorks Inc. All Rights Reserved.

ページのトップへ