人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

AmazonS3のシークレットキー管理方法について悩んでいます。

いま、あるサーバ(EC2ではない)内で、S3のシークレットキーが複数の箇所に記述されてしまっています。

1. $HOME/.bash_profile (バッチ処理用)
2. $HOME/下のウェブアプリケーション
3. $HOME/.aws/sdk/config.inc.php
4. /etc/httpd/httpd.conf
5. $HOME/.s3cfg


このままだと シークレットキーを変更する際に5か所修正する必要があり、修正漏れのリスクがあります。
DRYにする方法はないでしょうか?
ベストプラクティスなどがあれば教えてください。

●質問者: DQNEO
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● oil999
●50ポイント ベストアンサー

環境変数に設定してはどうでしょう。

環境変数の設定

http://jo1upk.blogdns.net/linux/?Linux%2F%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E8%A8%AD%E5%AE%9A


DQNEOさんのコメント
それは私も考えました。 1?3のDRY化は環境変数でいけそうです。 たぶん4も。 5のs3cmdで環境変数を使う方法がわからないのです。

DQNEOさんのコメント
s3cmdの1.1.0beta2にしたら環境変数が使えました!

質問者から

■補足1 s3cmd(.s3cfg)

調べてみたら、バージョン1.1.0beta2から環境変数が使えるみたいです。

http://s3tools.org/s3cmd-110b2-released

Config settings from Environment

Many users are not comfortable with keeping their access and secret keys in the config file. Ori Bar provided a patch that allows any config value to be taken from the process environment. For example to obtain the access key from the environment put this in your ~/.s3cfg file:
access_key=$S3_ACCESS_KEY
The S3_ACCESS_KEY name is just an example – use anything you like, just prepend it with “$” sign. For instance
access_key=$ABRACADABRA
is just as valid as $S3_ACCESS_KEY

■補足2 ~/.aws/sdk/config.inc.php

この設定ファイル自体がPHP言語で記述されているので、どうとでもできそうです。(=環境変数を使える)

■補足3 /etc/httpd/httpd.conf

Per/CGI用のためにここで環境変数を定義していたのですが、
それをやめてPerlから.bash_profileを読み込む形にすれば解決しました。

■結論

というわけで残りは1と2をどうやってDRY化するかという問題になりました。
これは、上記と同様にPHPスクリプトから .bash_profileを読み込む形にすればいけそうです。

というわけで自己解決しそうです。

クラウド界隈で何かベストプラクティスがあるのかと思って問いかけをしたのですが、特になさそうですね・・。


2 ● 楽1978
●50ポイント

管理するというのはこういうことでしょうか?
不満であればポイント配分なしで結構です。

http://frym.jp/category.php?k=S3


DQNEOさんのコメント
すみません記事を見ましたが、意味がよくわかりませんでした・・・ s3cmd --configure だと、 $HOME/.s3cfg にシークレットキーがべた書きされてしまうので、 DRYにならなくて困る(質問の5のケース)、というのが当初の問題提起です。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ