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

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

ただいまの
回答率

90.61%

  • API

    1486questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • GitHub

    740questions

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

githubにプッシュするapiのkeyやpassなどについて

受付中

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 1,753

Mkato

score 82

githubを使ったapiなど重要なキーやパスワードの取り扱いについて教えて頂ければと思います。
※rails初心者(プログラミング初心者)ですので基本的な事が分かってないとお考え下さいませ。

---------------------------------------------
■状況
1.
railsの勉強としてローカルでアマゾンAPIを使い商品検索して表示させるアプリを作りました。

2.
githubに全てのファイルをpush。
その後本番環境(VPS)にてサイト公開しようかと考えておりました。

3.
amazonからメールで連絡があり、github(私のアカウント)にアクセスkeyが公開されているから削除して防止策を取ってね。と。
確かに確認するとまるまる公開されており、これはダメだと思い削除しました。

---------------------------------------------

↑この様な状況の場合、今後どの様にapiのkeyやそのた諸々のpassなどを管理していくと良いと考えられますでしょうか?

素人なりに思いつくのが
対応策
1.
githubのソースの公開されないアカウントを利用する。
=>有料になってしまうので少し抵抗が。。。

2.
key情報の書かれたファイルのみgithubにpushしないで,直接サーバにUPする。
=>key情報などのファイルは更新頻度も低いので直接UPしてもいいかなーと。
ただgithubを使っている以上git add --allなどとぼけて実行してしまう可能性もあるなーと。

3.
githubには全てをpushするけどkeyやpassは書かないで、その都度サーバ上で編集する。
=>手間がかかるしイケてないなーと。

4.
githubを使わずにVPSに直接upする。
=>最終的にはこれでもいいのですが、現在プログラミングの勉強中なのでgithubを使って管理したいなーと。
ファイルの更新を管理したい。。。



皆様はどの様にapiキーやその他重要なpassなどが書かれたファイルをgithubを使って管理していますでしょうか?

宜しくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

3はイケていないなんてとんでもない、3こそイケています。API Keyはプログラムから見れば利用者依存のデータであり、分離されているのが綺麗ですから。実サーバ上でファイルを編集するのでなく、環境変数に書き込んでおいてそれを読み取る方式ではいかがでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/30 13:30

    なるほどー環境変数に設定しておいてからの読み込みですね。
    確かにそれであればgithubを使っても問題ないですね。有難う御座います。
    pushするファイルの事しか考えておりませんでした。

    キャンセル

+1

たとえばPaaS であるheroku には、環境変数の値を設定するコマンドがあり、そこにプログラムで読み込む値を設定しておくことで、外部に公開できない情報も安全に扱えるようにする方法が用意されています

 heroku config:set GITHUB_USERNAME=joesmith
# export GITHUB_USERNAME=joesmith と同様

puts ENV['GITHUB_USERNAME'] # => joesmith

(環境が異なる場合...ローカル開発環境ではdotenv で同様に環境変数の値の管理をすることができます)

それと同様に、環境変数を設定し、プログラム側からその環境変数を読み込むという動作にすると良いかもしれません


# Links

bkeepers/dotenv - GitHub
Configuration and Config Vars | Heroku Dev Center
gitで管理しないファイルを無視させる .gitignore|misc|@OMAKASE

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    railsってどこをgit管理すればいいんでしょうか

    rails newで作られたディレクトリでよいのでしょうか。 このファイル群をそのままサーバにアップすれば動くのでしょうか。

  • 解決済

    サーバーサイドとフロントサイドの区別

    プログラミング初学者です。 railsのチュートリアルは終えてMVCの仕組みとかはわかりました。 ただrailsはサーバーサイドのプログラム言語だと思うのですが、 webサービス

  • 解決済

    GitHubの超初歩的な質問なのですが…

    以前自分で作ったリポジトリを複製して、名前を変更して新たに作業したいのですが、ググって調べてやった結果うまく複製が反映されませんでした。 問題点① 複製元と全く同じ名前のフォルダ

  • 解決済

    Githubチーム開発について

    前提・実現したいこと 現在、webアプリケーション開発を2名で行っています。githubを用いてコード共有を行いたいと考えていています。私がバック側を担当し、友人がフロントのデザ

  • 解決済

    rails 画像投稿フォームで画像プレビューを表示したい

    railsの画像投稿フォーム内で画像を挿入する時やバリデーション失敗時、edit時に画像プレビューを表示するのにオススメの方法はありますか?

  • 解決済

    LINEのMessageAPIでpushしたい

    前提・実現したいこと LINE MessageAPIに関して質問です。 ユーザーとBotがトーク中に任意のタイミングで特定のトークを送りたい。 発生している問題・エラーメ

  • 解決済

    JavaWebアプリケーションのgit管理

    はじめまして。 現在、JavaWebアプリケーションを開発しています。 今回、VPSを借り、作成したアプリケーションを公開したいと思い質問させていただきます。 今まではロー

  • 解決済

    Firebaseが指す認証サーバーとは?

    swift4 xcode9.1 iosアプリにgoogle認証を実装したいです。 数日調べても理解できなかったので質問します。 Firebase公式サイトに下記の内容があり

同じタグがついた質問を見る

  • API

    1486questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • GitHub

    740questions

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