質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

2回答

14035閲覧

git commitする時に、秘密にしなければならない情報があればどうしたらいいのでしょうか?

renren643

総合スコア279

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

1クリップ

投稿2017/10/23 04:43

gitでレポジトリを公開していると、git commitするたびに情報が更新されていくと思いますが、その中にシークレットキー情報とかアクセスキー情報とか入っているものがあれば、まずくないですか?
(amazon s3のaccess_key_idやsecret_access_keyなど)

そのファイルだけアップしないようにすることとかできるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

それはとてもまずいです。
アクセスキーを使って攻撃を受けるとAWSの費用がとんでもない金額になります。

そのファイルだけアップしないようにすることもできますが
そもそもそういったファイルはソース管理対象外にすべきかと思いますので
.gitignoreファイルを作って対象外のファイルを管理してはいかがでしょうか。

参考になりそうなページを貼っておきます。
https://qiita.com/inabe49/items/16ee3d9d1ce68daa9fff

投稿2017/10/23 04:59

編集2017/10/23 05:01
yuki-saito

総合スコア928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renren643

2017/10/23 06:14

回答ありがとうございます。参考にさせていただきながらやって見ます!
yuki-saito

2017/10/23 06:31

簡単な対応ですと、ルートディレクトリに.gitignoreファイルを作って その中に対象のファイル名を書けばOKです^^ 是非やってみてください。
renren643

2017/10/23 06:32

はい!ありがとうございます!
guest

0

その中にシークレットキー情報とかアクセスキー情報とか入っているものがあれば、まずくないですか?

おっしゃる通り、まずいです。

ただし、GitHubのパブリックリポジトリだとアウトでしょうけど、お金払ってプライベートリポジトリにしたり、
少人数ならBitBucketで無料でプライベートリポジトリを借りる、
ローカルでGitLab等のGitリポジトリサーバを構築する等すれば貴重なパスワード等の情報は流出しないので問題ありません。

そのファイルだけアップしないようにすることとかできるのでしょうか?

.gitignoreを使いましょう。
このファイルがプロジェクトルートに設置されていると、Gitはそのファイルを世代管理対象から外すようになります。
git statusコマンドでも出てきませんし、git add .等のコマンドでも自動的に追加されることがなくなります。

ただし、既にコミット済みのファイルを.gitignoreの対象として設定しても、
自動的に世代管理対象から外れるということはなく、公開され続けることに注意してだくさい。


他の方法としては、環境変数に突っ込むという手法もあります。

bash

1export FOO="BAR" 2export PORT="80" 3 4git clone https://github.com/foo/project /opt/project 5 6chmod +x /opt/project/bin/entrypoint.sh 7/opt/project/bin/entrypoint.sh

このような公開しない社内用スクリプトを作って、
サーバーを立ち上げたら実行するというフローを作るというやり方もあります。
お好みに合わせてどうぞ。

投稿2017/10/23 05:06

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renren643

2017/10/23 06:17

>ただし、既にコミット済みのファイルを.gitignoreの対象として設定しても、 自動的に世代管理対象から外れるということはなく、公開され続けることに注意してだくさい。 あまりgitの使い方がわかっていないのですが、とりあえず今public repositoriesがない状態だったらその心配はいらないということでしょうか?
miyabi-sun

2017/10/23 09:35

ん、GitとGitHubの区別がついてない感じですかね? Gitはファイルの世代管理ソフトであり、 GitHubはGitのプロジェクトをクラウド上で保存してくれるサービスを指します。 ただし、`git fetch`や`git clone`といったリモートと連携する為のコマンドが豊富に存在し、2つでセットみたいな側面があり、ごっちゃに考えてるユーザーは多いです。 .gitignoreを使った方法はパスワードの詰まったファイルを世代管理の対象から排除する機能。 プライベートリポジトリにするのは、パスワードの詰まったプロジェクトをGitHubにpushしても、パブリック設定とは違いプロジェクトメンバーとして設定した一部のユーザーしかアクセスできないのでパスワードが漏れないでしょ?という話です。 > public repositoriesがない状態だったらその心配はいらないということでしょうか? プライベートリポジトリで管理している場合、上記の理由で第三者にパスワードが漏れる事はないため、 パスワードの含まれたファイルも世代管理対象にして管理することが可能です。 GitHubに上げたものの、うっかり月額課金を停止してしまってパブリックリポジトリに変更されてしまうケースがあるので注意してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問